Ir para conteúdo principal Pular para conteúdo complementar

Trabalhando com arquivos Apache Parquet

Apache Parquet é um formato de armazenamento em colunas, altamente eficiente para armazenar e consultar conjuntos de dados grandes. No Qlik Sense, você pode ler dados de arquivos Parquet e armazenar tabelas como arquivos Parquet.

O Parquet permite a consulta eficiente de colunas específicas em uma tabela em vez de ler a tabela inteira. Isso o torna adequado para uso com processamento de big data. Além disso, o Parquet oferece suporte para compactação eficiente e codificação de dados. Isso pode reduzir ainda mais o espaço de armazenamento e melhorar o desempenho da consulta.

Criando arquivos Parquet

Você pode criar arquivos Parquet usando o comando Store no script. Indique no script que uma tabela lida anteriormente ou parte dela deve ser exportada para um arquivo nomeado de forma explícita em um local de sua escolha. Você pode aninhar os dados armazenados em dados em arquivos Parquet.

Para obter mais informações, consulte Store.

Lendo os dados de arquivos Parquet

Você pode ler dados de um arquivo Parquet como qualquer outro arquivo de dados aceito pelo Qlik Sense. Isso inclui o Gerenciador de dados, o Editor de carregamento de dados ou quando você adiciona dados a um novo aplicativo.

Para obter mais informações, consulte Carregando dados de arquivos.

Você também pode carregar dados de um arquivo Parquet no script de carregamento de dados com o comando LOAD. Por exemplo:

LOAD * from [lib://DataFiles/xyz.parquet] (parquet);

Para obter mais informações, consulte Load.

Carregando dados de arquivos Parquet aninhados

Se um arquivo Parquet contiver dados aninhados, ele precisará ser carregado em várias instruções de LOAD, cada uma especificando qual subconjunto deve ser carregado em cada tabela. O especificador Table is é usado para provar um caminho para o nó do grupo no esquema a ser carregado.

Você pode usar o especificador Delimiter is para especificar como os nós devem ser combinados. Uma instrução LOAD que carrega um arquivo com dados aninhados que não inclui delimitador usa esse valor especificado pela variável de script FieldNameDelimiter. Se nenhum delimitador for fornecido e FieldNameDelimiter não estiver definido, o delimitador padrão será '.'.

Somente os nós que correspondem ao caminho Table is são carregados.

Os nós de dados são carregados em um arquivo sem aninhamento.

Os nós do grupo agruparão os campos do grupo adicionando seus nomes ao nome do campo. Por exemplo, um grupo com field1 e field2 é carregado como group.field1 e group.field2.

Os nós de lista gerarão campos-chave que serão usados para vincular as tabelas. Por exemplo, %Key_group.list. Qualquer grupo ou nó de dados dentro da lista precisa ser carregado em uma instrução de LOAD separada. Um campo chave à lista pai também será adicionado.

Os exemplos a seguir mostram o mesmo arquivo Parquet aninhado, criado no exemplo em Armazenando dados aninhados em arquivos Parquet, carregado em um aplicativo, usando o Gerenciador de dados e o Editor da carga de dados (com o script padrão de Selecionar dados e script personalizado).

Exemplo: Gerenciador de dados

Se você carregar customer.parquet no Gerenciador de dados e aplicar todas as associações recomendadas, terá o seguinte modelo de dados:

Modelo de dados para carregar company.parquet com Gerenciador de dados

Modelo de dados mostrando as tabelas company:salesrep.salesrep, company, company:headquarter.headquarter e company:headquarter.headquarter.city:region.region

Exemplo: Editor da carga de dados (Selecionar dados)

Se você carregar os dados usando Selecionar dados no Editor da carga de dados, você terá o seguinte script:

LOAD company, contact, "%Key_company:headquarter", "%Key_company:salesrep" FROM [lib://DataFiles/company.parquet] (parquet); LOAD country, city, "%Key_city:region", "%Key_company:headquarter" FROM [lib://DataFiles/company.parquet] (parquet, table is [company:headquarter.headquarter]); LOAD region, "%Key_city:region" FROM [lib://DataFiles/company.parquet] (parquet, table is [company:headquarter.headquarter.city:region.region]); LOAD salesrep, "%Key_company:salesrep" FROM [lib://DataFiles/company.parquet] (parquet, table is [company:salesrep.salesrep]);

O modelo de dados fica assim no Visualizador do modelo de dados.

Modelo de dados para carregar company.parquet com Selecionar dados no Editor da carga de dados

Modelo de dados mostrando as tabelas representante comercial, empresa, sede e região.

Exemplo: Editor da carga de dados (Script de carregamento personalizado)

Se você usar um script de carregamento personalizado, terá mais controle sobre como os campos e tabelas são carregados em customer.parquet. O script de carregamento a seguir carrega as tabelas e campos de company.parquet:

LOAD * FROM [lib://DataFiles/company.parquet] (parquet); LOAD *, Lookup('company', '%Key_company:salesrepo', [%Key_company:salesrep], 'company') as company; LOAD * FROM [lib://DataFiles/company.parquet] (parquet, table is [company:salesrep.salesrep]); DROP FIELD [%Key_company:salesrep]; LOAD *, Lookup('company', '%Key_company:headquarter', [%Key_company:headquarter], 'company') as company; LOAD * FROM [lib://DataFiles/company.parquet] (parquet, table is [company:headquarter.headquarter]); DROP FIELD [%Key_company:headquarter]; LOAD *, Lookup('city', '%Key_city:region', [%Key_city:region], 'headquarter') as city; LOAD * FROM [lib://DataFiles/company.parquet] (parquet, table is [company:headquarter.headquarter.city:region.region]); DROP FIELD [%Key_city:region];

Isso resulta no modelo de dados a seguir, que é idêntico ao modelo de dados original antes dos dados serem armazenados no arquivo Parquet.

Modelo de dados para carregar company.parquet com um script personalizado no Editor da carga de dados

Modelo de dados com as tabelas sede, região, representante de vendas e empresa, espelhando o modelo de dados exato do aplicativo de origem.

Limitações

Os arquivos Parquet têm as seguintes limitações:

  • Arquivos Parquet que contêm um campo de carimbo de data/hora int96 podem não ser carregados corretamente.

    Int96 é um tipo de dados obsoleto que contém um carimbo de data/hora sem informações de fuso horário. Será feita uma tentativa de ler o campo como UTC, mas, como existem diferentes implementações de fornecedores, não há garantia de sucesso.

    Verifique os dados carregados e ajuste-os para o fuso horário correto com um deslocamento, se necessário.

Esta página ajudou?

Se você encontrar algum problema com esta página ou seu conteúdo - um erro de digitação, uma etapa ausente ou um erro técnico - informe-nos como podemos melhorar!