Перейти к основному содержимому Перейти к дополнительному содержимому

Store

Оператор Store создает файл QVD, Parquet, CSV или TXT.

Синтаксис:  

Store [ fieldlist from] table into filename [ format-spec ];

Оператор создаст файл с заданным именем QVD, Parquet или текстовый файл.

Оператор может экспортировать поля только из одной таблицы данных. Если требуется экспортировать поля из нескольких таблиц, необходимо заранее сформировать явное объединение join в скрипте для создания таблицы данных, которую следует экспортировать.

Текстовые значения экспортируются в файл CSV в формате UTF-8. Можно указать разделитель. См. LOAD. Оператор store для файла CSV не поддерживает экспорт BIFF.

Примечание к информацииВ некоторых случаях, когда данные имеют неправильный формат, поля заключаются в двойные кавычки, чтобы обеспечить правильную интерпретацию данных. Это может происходить, например, когда поле содержит символы, такие как кавычки, запятые, пробелы или разрывы строки.

Аргументы:  

Сохранить аргументы команды
Аргумент Описание
fieldlist::= ( * | field) { , field } )

Список полей, которые необходимо выбрать. Символ «*» в качестве списка полей обозначает все поля. 

field::= fieldname [as aliasname ]

fieldname — это текст, идентичный имени поля в элементе table. (Обратите внимание, что для указания имени поля необходимо заключить его в прямые двойные кавычки или квадратные скобки, если имя содержит пробелы или другие нестандартные символы.)

aliasname — альтернативное имя поля, которое предназначено для использования в результирующем файле QVD или CSV.

table Метка скрипта, представляющая уже загруженную таблицу, которую планируется использовать в качестве источника данных.
filename

Имя целевого файла, включая действительный путь к существующему подключению к данным папки.

Пример: 'lib://Table Files/target.qvd'

В прежней версии режима написания скриптов следующие форматы пути тоже поддерживаются:

  • абсолютный

    Пример: c:\data\sales.qvd

  • относительно рабочего каталога приложения Qlik Sense.

    Пример: data\sales.qvd

    Если путь отсутствует, программа Qlik Sense сохраняет файл в каталоге, указанном оператором Directory. Если оператора Directory нет, программа Qlik Sense сохраняет файл в рабочем каталоге C:\Users\{user}\Documents\Qlik\Sense\Apps.

format-spec ::=( ( txt | qvd | parquet), compression is codec)

Можно установить спецификацию формата на любой из этих форматов файлов. Если формат не указан, то используется qvd.

  • txt для файлов CSV и TXT.

  • qvd для файлов QVD.

  • parquet для файлов Parquet.

Если используется parquet, также можно задать, какой кодек сжатия будет использоваться вместе с параметром compression is. Если не указать кодек сжатия для параметра compression is, используется snappy. Доступны следующие настройки сжатия:

  • uncompressed

  • snappy

  • gzip

  • lz4

  • brotli

  • zstd

  • lz4_hadoop

Пример:

Store mytable into [lib://DataFiles/myfile.parquet] (parquet, compression is lz4);

Примеры:

Store mytable into xyz.qvd (qvd);

Store * from mytable into 'lib://FolderConnection/myfile.qvd';

Store Name, RegNo from mytable into xyz.qvd;

Store Name as a, RegNo as b from mytable into 'lib://FolderConnection/myfile.qvd';

Store mytable into myfile.txt (txt);

Store mytable into myfile.parquet (parquet);

Store * from mytable into 'lib://FolderConnection/myfile.qvd';

Примечание к информацииПри вводе расширения файла подключений DataFiles учитывается регистр. Например: .qvd.

Хранение в файлах Parquet

Parquet — это строго типизированный формат файлов, в котором каждое поле содержит один определенный тип данных (например, in32, double, timestamp или text). Qlik Sense хранит внутренние данные в виде свободно типизированной дуальной системы, где данные из разных источников могут смешиваться в одних и тех же полях. Поскольку в каждом поле Parquet может храниться только одна часть дуальной системы, важно знать, что содержит каждое поле. По умолчанию Qlik Sense использует тип поля для определения способа его хранения. При хранении данных в файлах Parquet в определенном формате при их загрузке необходимо указать, к какому типу данных относятся ваши поля. Если попытаться сохранить данные в несовместимых полях файла Parquet, например, числа в текстовом поле или текст в поле временной метки, то в итоге будут получены нулевые значения.

При загрузке данных, которые предполагается хранить в Parquet, можно изменить поведение по умолчанию. Можно либо отформатировать их для изменения типа данных, либо пометить его для принудительного использования определенных типов столбцов в Parquet.

Форматирование данных для хранения в Parquet

Для классификации данных можно использовать функции форматирования Qlik Sense. Например, Text(), Num(), Interval() или Timestamp() могут обеспечивать соблюдение форматов данных при их хранении в Parquet. Qlik Sense может хранить данные почти в 20 типах данных в зависимости от атрибутов поля и автоматических тегов поля. Для получения дополнительной информации см. раздел Функции интерпретации.

Пример: Форматирование данных с помощью Num() и Text()

Следующий пример демонстрирует подготовку данных для хранения в Parquet. Num() применяется к числовому полю. Text() применяется к полю как текстового, так и смешанного типа. В случае смешанного поля Text() предотвращает его обработку в Parquet как числового поля и замену текстовых значений на нулевые.

Data: LOAD * INLINE [ num, text, mixed 123.321, abc, 123 456.654, def, xyz 789.987, ghi, 321 ]; Format:
NoConcatenate LOAD num, text, Text(mixed) as mixed RESIDENT Data; STORE Format INTO [lib://DataFiles/Tmp.parquet] (parquet);

Пометка данных тегами для хранения в Parquet

Для принудительного использования определенных типов столбцов при хранении данных в Parquet применяются теги $parquet. Каждый тип данных может быть принудительно установлен путем добавления соответствующего управляющего тега. Например, чтобы сохранить поле как INT32 в Parquet, пометьте его тегом $parquet-int32 в скрипте загрузки. В зависимости от типа данных будет храниться либо строковое, либо числовое представление двойных данных.

Следующие управляющие теги Parqeut могут использоваться для пометки полей для хранения в файлах Parquet.

Управляющие теги Parquet
Управляющий тегДвойное значениеФизический типЛогический типПреобразованный тип
$parquet-booleanЧислоBOOLEANNONENONE
$parquet-int32ЧислоINT32NONENONE
$parquet-int64ЧислоINT64NONENONE
$parquet-floatЧислоFLOAT;NONENONE
$parquet-doubleЧислоDOUBLENONENONE
$parquet-bytearrayСтрокаBYTE_ARRAYNONEUTF8
$parquet-bytearrayfixЧислоFIXED_LEN_BYTE_ARRAYNONEDECIMAL
$parquet-decimalЧислоINT64DECIMALDECIMAL
$parquet-dateЧислоINT32DATEDATE
$parquet-timeЧислоINT64TIMETIME_MICROS
$parquet-timestampЧислоINT64TIMESTAMPTIMESTAMP_MICROS
$parquet-stringСтрокаBYTE_ARRAYSTRINGUTF8
$parquet-enumСтрокаBYTE_ARRAYENUMENUM
$parquet-intervalЧислоFIXED_LEN_BYTE_ARRAYINTERVALINTERVAL
$parquet-jsonСтрокаBYTE_ARRAYJSONJSON
$parquet-bsonСтрокаBYTE_ARRAYBSONBSON
$parquet-uuidСтрокаFIXED_LEN_BYTE_ARRAYUUIDNONE

Пример: Пометка данных тегами для хранения в Parquet

В этом примере для определения данных для Parquet используются два тега. Поле num помечается тегом $parquet-int32, определяющим его как числовое поле, которое в Parquet будет установлено как INT32.

Data: LOAD * INLINE [ num, text, 123.321, abc 456.654, def 789.987, ghi ]; TAG num WITH '$parquet-int32'; STORE Data INTO [lib://DataFiles/Tmp.parquet] (parquet);

Помогла ли вам эта страница?

Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!