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:
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:
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:
O modelo de dados fica assim no Visualizador do modelo de dados.
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:
Isso resulta no modelo de dados a seguir, que é idêntico ao modelo de dados original antes dos dados serem armazenados no arquivo Parquet.
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.