Accéder au contenu principal Passer au contenu complémentaire

Utilisation de fichiers Apache Parquet

Apache Parquet est un format de stockage sous forme de colonnes, très efficace pour le stockage et le lancement de requêtes sur de grands jeux de données. Dans Qlik Sense, vous pouvez lire les données des fichiers Parquet et stocker des tables sous forme de fichiers Parquet.

Parquet permet de lancer efficacement des requêtes sur des colonnes spécifiques d'une table au lieu de lire la table toute entière. Ce format est ainsi facile à utiliser pour le traitement de données volumineuses. De plus, Parquet supporte la compression et le chiffrement efficaces des données. Cela permet de réduire davantage l'espace de stockage et d'améliorer les performances des requêtes.

Création de fichiers Parquet

Vous pouvez créer des fichiers Parquet via la commande Store dans le script. Il suffit de spécifier dans le script qu'une table déjà lue en totalité ou en partie doit être exportée vers un fichier nommé de manière explicite à l'emplacement de votre choix. Vous pouvez imbriquer les données que vous stockez dans des données dans des fichiers Parquet.

Pour plus d'informations, voir Store.

Lecture de données à partir de fichiers Parquet

Vous pouvez lire les données d'un fichier Parquet tout comme de n'importe quel autre fichier de données supporté par Qlik Sense. Cela inclut le Gestionnaire de données, l'éditeur de chargement de données ou l'ajout de données à une nouvelle application.

Pour plus d'informations, voir Chargement de données à partir de fichiers.

Vous pouvez également charger des données depuis un fichier Parquet dans le script de chargement de données via la commande LOAD. Par exemple :

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

Pour plus d'informations, voir Load.

Chargement de données à partir de fichiers Parquet imbriqués

Si un fichier Parquet contient des données imbriquées, il doit être chargé dans plusieurs instructions load, chacune spécifiant le sous-ensemble à charger dans chaque table. Le spécificateur Table is sert à garantir un chemin d'accès au nœud de groupe du schéma à charger.

Vous pouvez utiliser le spécificateur Delimiter is pour spécifier la manière dont les nœuds doivent être combinés. Une instruction LOAD qui charge un fichier avec des données imbriquées sans inclure Delimiter is utilise cette valeur spécifiée par la variable de script FieldNameDelimiter. Si aucun délimiteur n'est fourni et si FieldNameDelimiter n'est pas défini, le délimiteur par défaut sera '.'.

Seuls les nœuds correspondant au chemin d'accès Table is sont chargés.

Les nœuds de données sont chargés dans un fichier sans imbrication.

Les nœuds de groupe regroupent les champs dans le groupe en ajoutant leur nom au nom de champ. Par exemple, les groupes avec field1 et field2 sont chargés sous forme de group.field1 et de group.field2.

Les nœuds de liste génèrent des champs clés utilisés pour lier les tables. Par exemple, %Key_group.list. Tout nœud de données ou de groupe de la liste doit être chargé dans une instruction load distincte. Un champ clé vers la liste parente est également ajouté.

Les exemples suivants montrent le même fichier Parquet imbriqué, créé dans l'exemple à la section Stockage de données imbriquées dans des fichiers Parquet, chargé dans une application, via Gestionnaire de données et Éditeur de chargement de données (avec le script par défaut de Sélectionner des données et un script personnalisé).

Gestionnaire de données

Si vous chargez customer.parquet dans Gestionnaire de données et si vous appliquez l'ensemble des associations recommandées, vous obtenez le modèle de données suivant :

Modèle de données pour charger company.parquet avec Gestionnaire de données

Modèle de données affichant les tables company:salesrep.salesrep, company, company:headquarter.headquarter et company:headquarter.headquarter.city:region.region

Éditeur de chargement de données (Sélectionner des données)

Si vous chargez les données via Sélectionner des données dans Éditeur de chargement de données, vous obtenez le script suivant :

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]);

Le modèle de données ressemble à ceci dans Visionneur de modèle de données.

Modèle de données pour charger company.parquet avec Sélectionner des données dans Éditeur de chargement de données

Modèle de données affichant les tables salesrep, company, headquarter et region.

Éditeur de chargement de données (script de chargement personnalisé)

Si vous utilisez un script de chargement personnalisé, vous avez davantage de contrôle sur la manière dont les champs et les tables sont chargés depuis customer.parquet. Le script de chargement suivant charge les tables et les champs 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];

Vous obtenez le modèle de données suivant, identique au modèle de données initial avant le stockage des données dans le fichier Parquet.

Modèle de données pour charger company.parquet avec un script personnalisé dans Éditeur de chargement de données

Modèle de données avec les tables headquarter, region, salesrep et company, en miroir du modèle de données exact de l'application source.

Limitations

Les fichiers Parquet présentent les limitations suivantes :

  • Il se peut que les fichiers Parquet contenant un champ d'horodatage int96 ne soient pas chargés correctement.

    Int96 est un type de données obsolète qui contient un horodatage sans information de fuseau horaire. Il sera effectué une tentative de lecture du champ au format UTC, mais, comme il existe différentes mises en œuvre de fournisseurs, il n'existe aucune garantie que cela fonctionne.

    Vérifiez les données chargées et réglez-les sur le fuseau horaire correct avec un décalage, si nécessaire.

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – dites-nous comment nous améliorer !