Store
O comando Store cria um arquivo QVD, Parquet, CSV ou TXT.
Sintaxe:
Store [ fieldlist from] table into filename [ format-spec ];
O comando criará um arquivo explicitamente nomeado QVD, Parquet ou um arquivo de texto.
O comando só pode exportar campos de uma tabela lógica. Se os campos de várias tabelas forem exportados, uma join explícita deve ser feita previamente no script para criar a tabela de dados que deve ser exportada.
Os valores de texto são exportados para o arquivo CSV no formato UTF-8. É possível especificar um separador. Para isso, consulte LOAD. O comando store para um arquivo CSV não suporta exportação de BIFF.
Argumentos:
Argumento | Descrição |
---|---|
fieldlist::= ( * | field) { , field } ) |
Uma lista dos campos a serem selecionados. O uso de * como lista de campos indica todos os campos. field::= fieldname [as aliasname ] fieldname é um texto idêntico a um nome de campo em table. (Observe que o nome do campo deverá estar entre aspas duplas ou colchetes se contiver espaços ou outros caracteres que não sejam padrão). aliasname é um nome alternativo do campo a ser usado no arquivo QVD ou CSV resultante. |
table | Um rótulo de script representando uma tabela já carregada, que será usada como fonte dos dados. |
filename |
O nome do arquivo de destino, incluindo um caminho válido para uma conexão de dados da pasta existente. Exemplo: 'lib://Table Files/target.qvd' No modo legado de uso de scripts, os seguintes formatos de caminho também são suportados:
|
format-spec ::=( ( txt | qvd | parquet), compactação é codec) |
Você pode definir a especificação do formato para qualquer um desses formatos de arquivo. Se a especificação do formato for omitida, qvd será assumido.
Se você usar parquet, também poderá definir qual codec de compactação usar com compactação é. Se você não especificar o codec de compactação com compactação é, snappy será usado. As seguintes configurações de compactação estão disponíveis:
Exemplo: Store mytable into [lib://DataFiles/myfile.parquet] (parquet, compression is lz4); |
Exemplos:
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';
Armazenamento em arquivos Parquet
O Parquet é um formato de arquivo fortemente tipado, em que cada campo contém um único tipo específico de dados (como in32, double, timestamp ou texto). O Qlik Sense armazena dados internos como duplos livremente tipados, em que dados de fontes diferentes podem ser misturados nos mesmos campos. Como somente uma parte do duplo pode ser armazenada em cada campo no Parquet, é importante saber o que cada campo contém. Por padrão, o Qlik Sense usa o tipo de campo para determinar como o campo deve ser armazenado. Ao armazenar dados em arquivos Parquet em um formato específico, você deve especificar que tipo de dados são seus campos ao carregá-los. Se você tentar armazenar dados em campos incompatíveis em um arquivo Parquet, como números em um campo de texto ou texto em um campo de carimbo de data/hora, receberá valores nulos.
Ao carregar dados que você pretende armazenar no Parquet, é possível alterar o comportamento padrão. Você pode formatá-los para alterar seu tipo de dados ou marcá-los para forçar tipos de colunas específicos no Parquet.
Formatação de dados para armazenamento no Parquet
É possível usar funções de formatação do Qlik Sense para classificar dados. Por exemplo, Text(), Num(), Interval() ou Timestamp() pode impor formatos de dados ao armazenar dados no Parquet. O Qlik Sense pode armazenar dados em quase 20 tipos de dados, dependendo dos atributos de campo e das tags de campo automáticas. Para obter mais informações, consulte Funções de interpretação
Exemplo: Formatação de dados com Num() e Text()
O exemplo a seguir demonstra a preparação de dados para armazenamento no Parquet. Num() é aplicada ao campo numérico. Text() é aplicado a texto e conteúdo misto. No caso de conteúdo misto, Text() impede que ele seja tratado como um campo numérico no Parquet e que os valores de texto sejam alterados para valores nulos.
NoConcatenate LOAD num, text, Text(mixed) as mixed RESIDENT Data; STORE Format INTO [lib://DataFiles/Tmp.parquet] (parquet);
Marcação de dados para armazenamento no Parquet
Você marca seus dados com tags $parquet para forçar tipos de coluna específicos ao armazenar dados no Parquet. Cada tipo de dados pode ser aplicado adicionando a tag de controle correspondente. Por exemplo, para armazenar um campo como INT32 no Parquet, marque-o com $parquet-int32 no script de carregamento. Dependendo do tipo de dados, a string ou a representação numérica dos dados duais serão armazenadas.
As seguintes tags de controle do Parquet podem ser usadas para marcar campos para armazenamento em arquivos do Parquet.
Tag de controle | Dual | Tipo físico | Tipo lógico | Tipo convertido |
---|---|---|---|---|
$parquet-boolean | Número | BOOLEAN | NONE | NONE |
$parquet-int32 | Número | INT32 | NONE | NONE |
$parquet-int64 | Número | INT64 | NONE | NONE |
$parquet-float | Número | FLOAT | NONE | NONE |
$parquet-double | Número | DOUBLE | NONE | NONE |
$parquet-bytearray | Cadeia | BYTE_ARRAY | NONE | UTF8 |
$parquet-bytearrayfix | Número | FIXED_LEN_BYTE_ARRAY | NONE | DECIMAL |
$parquet-decimal | Número | INT64 | DECIMAL | DECIMAL |
$parquet-date | Número | INT32 | DATE | DATE |
$parquet-time | Número | INT64 | TIME | TIME_MICROS |
$parquet-timestamp | Número | INT64 | TIMESTAMP | TIMESTAMP_MICROS |
$parquet-string | Cadeia | BYTE_ARRAY | STRING | UTF8 |
$parquet-enum | Cadeia | BYTE_ARRAY | ENUM | ENUM |
$parquet-interval | Número | FIXED_LEN_BYTE_ARRAY | INTERVAL | Intervalo |
$parquet-json | Cadeia | BYTE_ARRAY | JSON | JSON |
$parquet-bson | Cadeia | BYTE_ARRAY | BSON | BSON |
$parquet-uuid | Cadeia | FIXED_LEN_BYTE_ARRAY | UUID | NONE |
Exemplo: Marcação de dados para armazenamento no Parquet
Neste exemplo, duas tags são usadas para definir os dados para o Parquet. O campo num é marcado com $parquet-int32 para defini-lo como um campo numérico que será definido como INT32 no Parquet.