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

Store

L'instruction Store crée un fichier QVD, Parquet, CSV ou TXT.

 

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

L'instruction crée un fichier texte, QVD ou Parquet nommé de manière explicite.

L'instruction permet uniquement d'exporter des champs provenant d'une table de données. Si vous devez exporter des champs issus de plusieurs tables, définissez au préalable une jointure (join) explicite dans le script afin de créer la table de données à exporter.

Les valeurs de texte sont exportées vers le fichier CSV au format UTF-8. Vous pouvez spécifier un délimiteur (voir LOAD). L'instruction store envoyée à un fichier CSV ne prend pas en charge l'export BIFF.

Note InformationsDans certains cas avec des données mal formées, les champs seront encadrés de guillemets doubles pour garantir l'interprétation correcte des données. Cela peut se produire, par exemple, lorsque le champ contient des caractères tels que des guillemets, une virgule, un espace ou des retours à la ligne.

 

Arguments de la commande Store
Argument Description
fieldlist::= ( * | field) { , field } )

Liste des champs à sélectionner. L'utilisation du symbole * comme liste de champs signifie inclure tous les champs. 

field::= fieldname [as aliasname ]

fieldname est un texte identique à un nom de champ dans la table. (Notez que le nom du champ doit être mis entre guillemets doubles droits ou entre crochets s'il contient des espaces ou d'autres caractères non standard.)

aliasname est un nom alternatif à utiliser pour le champ dans le fichier QVD ou CSV résultant.

table Étiquette de script représentant une table déjà chargée, à utiliser comme source pour les données.
filename

Nom du fichier cible incluant un chemin d'accès valide à une connexion de données de type dossier existante.

'lib://Table Files/target.qvd'

En langage de script, les formats de chemin d'accès suivants sont également pris en charge en mode hérité :

  • absolu

    c:\data\sales.qvd

  • chemin d'accès relatif au répertoire de travail de l'application Qlik Sense

    data\sales.qvd

    Si le chemin d'accès est omis, Qlik Sense stocke le fichier dans le répertoire que lui indique l'instruction Directory. En l'absence d'instruction Directory, Qlik Sense conserve le fichier dans le répertoire de travail, C:\Users\{user}\Documents\Qlik\Sense\Apps.

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

Vous pouvez définir la spécification de format sur l'un de ces formats de fichier. Si le format n'est pas spécifié, qvd est utilisé.

  • txt pour les fichiers CSV et TXT.

  • qvd pour les fichiers QVD.

  • parquet pour les fichiers Parquet.

Si vous utilisez parquet, vous pouvez également définir le codec de compression à utiliser avec compression is. Si vous ne spécifiez pas le codec de compression à utiliser avec compression is, snappy est utilisé. Les paramètres de compression suivants sont disponibles :

  • uncompressed

  • snappy

  • gzip

  • lz4

  • brotli

  • zstd

  • lz4_hadoop

Exemple :

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';

Note InformationsL'extension de fichier des connexions DataFiles respecte la casse. Par exemple : .qvd.

Stockage dans des fichiers Parquet

Parquet est un format de fichier de type très particulier dans lequel chaque champ contient un seul type de données spécifique (tel que in32, double, horodatage ou texte). Qlik Sense stocke les données internes sous forme de type double lâche, dans lequel les données provenant de différentes sources peuvent être combinées dans les mêmes champs. Étant donné qu'une seule partie des données de type double peut être stockée dans chaque champ dans Parquet, il est important de connaître le contenu de chaque champ. Par défaut, Qlik Sense utilise le type de champ pour déterminer le mode de stockage du champ. Lors du stockage de données dans des fichiers Parquet dans un format spécifique, vous devez spécifier le type de données de vos champs lors de leur chargement. Si vous tentez de stocker des données dans des champs incompatibles dans un fichier Parquet, comme des nombres dans un champ de texte ou du texte dans un champ d'horodatage, vous aboutirez à des valeurs nulles.

Lors du chargement de données à stocker dans Parquet, il est possible de modifier le comportement par défaut. Vous pouvez le formater de sorte à modifier votre type de données ou le baliser de sorte à appliquer de force des types de colonne spécifiques dans Parquet.

Formatage de données à des fins de stockage dans Parquet

Vous pouvez utiliser les fonctions de formatage Qlik Sense pour classifier vos données. Par exemple, la fonction Text(), Num(), Interval() ou Timestamp() peut appliquer des formats de données lors du stockage de données dans Parquet. Qlik Sense peut stocker des données dans presque 20 types de données différents, suivant les attributs de champ et les balises de champ automatiques. Pour plus d'informations, voir Fonctions d'interprétation.

Formatage de données avec Num() et Text()

L'exemple suivant montre comment préparer des données pour leur stockage dans Parquet. La fonction Num() est appliquée au champ numérique. La fonction Text() est appliquée aux champs de texte et mixtes. Dans le cas de champs mixtes, la fonction Text() empêche le traitement du champ comme un champ numérique dans Parquet et le remplacement des valeurs textuelles par des valeurs nulles.

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

Balisage de données à des fins de stockage dans Parquet

Balisez les données à l'aide de balises $parquet pour appliquer de force des types de colonne spécifiques lors du stockage de données dans Parquet. Chaque type de données peut être appliquée de force via l'ajout de la balise de contrôle correspondante. Par exemple, pour stocker un champ au format INT32 dans Parquet, appliquez-lui la balise $parquet-int32 dans le script de chargement. Suivant le type de données, la représentation numérique ou sous forme de chaîne des données doubles sera stockée.

Vous pouvez utiliser les balises de contrôle Parquet suivantes pour baliser des champs afin de les stocker dans des fichiers Parquet.

Balises de contrôle Parquet
Balise de contrôleDoubleType physiqueType logiqueType converti
$parquet-booleanNombreBOOLEANNONENONE
$parquet-int32NombreINT32NONENONE
$parquet-int64NombreINT64NONENONE
$parquet-floatNombreFLOATNONENONE
$parquet-doubleNombreDOUBLENONENONE
$parquet-bytearrayChaîneBYTE_ARRAYNONEUTF8
$parquet-bytearrayfixNombreFIXED_LEN_BYTE_ARRAYNONEDECIMAL
$parquet-decimalNombreINT64DECIMALDECIMAL
$parquet-dateNombreINT32DATEDATE
$parquet-timeNombreINT64TIMETIME_MICROS
$parquet-timestampNombreINT64TIMESTAMPTIMESTAMP_MICROS
$parquet-stringChaîneBYTE_ARRAYSTRINGUTF8
$parquet-enumChaîneBYTE_ARRAYENUMENUM
$parquet-intervalNombreFIXED_LEN_BYTE_ARRAYINTERVALINTERVAL
$parquet-jsonChaîneBYTE_ARRAYJSONJSON
$parquet-bsonChaîneBYTE_ARRAYBSONBSON
$parquet-uuidChaîneFIXED_LEN_BYTE_ARRAYUUIDNONE

Balisage de données à des fins de stockage dans Parquet

Dans cet exemple, deux balises sont utilisées pour définir les données pour Parquet. Le champ num reçoit la balise $parquet-int32 pour être défini comme un champ numérique au format INT32 dans Parquet.

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

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 !