Exporter des données dans une table externe
S’applique à : ✅Microsoft Fabric✅Azure Data Explorer
Vous pouvez exporter des données en définissant une table externe et en les exportant. Les propriétés de la table sont spécifiées lors de la création de la table externe. La commande d’exportation fait référence à la table externe par nom.
autorisations
Vous devez disposer au moins des autorisations d’administrateur de table pour exécuter cette commande.
Syntaxe
.export
[async
] to
table
externalTableName
[with
(
propertyName=
propertyValue [,
...]] )
<|
requête
En savoir plus sur les conventions de syntaxe.
Paramètres
Propriétés prises en charge
Les propriétés suivantes sont prises en charge dans le cadre de la commande d’exportation vers une table externe.
Propriété | Type | Description | Default |
---|---|---|---|
sizeLimit |
long |
Limite de taille en octets d’un seul artefact de stockage écrit avant la compression. Un groupe de lignes complet de taille parquetRowGroupSize est écrit avant de vérifier si ce groupe de lignes atteint la limite de taille et doit démarrer un nouvel artefact. Plage valide : 100 Mo (par défaut) à 1 Go. |
|
distributed |
bool |
Désactivez ou activez l’exportation distribuée. La valeur false équivaut à l’indicateur de single distribution. |
La valeur par défaut est true . |
distribution |
string |
Indicateur de distribution (single , per_node , per_shard ). Pour plus d’informations, voir les paramètres de distribution |
La valeur par défaut est per_node . |
distributionKind |
string |
Vous pouvez éventuellement basculer vers une distribution uniforme lorsque la table externe est partitionnée par partition de chaîne. Les valeurs valides sont uniform ou default . Pour plus d’informations, voir les paramètres de distribution |
|
concurrency |
Nombre | Indique au système le nombre de partitions à exécuter en parallèle. Pour plus d’informations, voir les paramètres de distribution | La valeur par défaut est 16. |
spread |
Nombre | Indique au système comment distribuer les partitions entre les nœuds. Pour plus d’informations, voir les paramètres de distribution | La valeur par défaut est Min(64, number-of-nodes) . |
parquetRowGroupSize |
int |
Pertinent uniquement lorsque le format de données est Parquet. Contrôle la taille du groupe de lignes dans les fichiers exportés. Cette valeur est prioritaire sur sizeLimit , ce qui signifie qu’un groupe de lignes complet est exporté avant de vérifier si ce groupe de lignes atteint la limite de taille et doit démarrer un nouvel artefact. |
La taille du groupe de lignes par défaut est de 100 000 enregistrements. |
Paramètres de distribution
La distribution d’une exportation vers une opération de table externe indique le nombre de nœuds et de threads qui écrivent dans le stockage simultanément. La distribution par défaut dépend du partitionnement de table externe :
Partitionnement de tables externes | Distribution par défaut |
---|---|
La table externe n’est pas partitionnée ou partitionnée par datetime colonne uniquement |
L’exportation est distribuée per_node : tous les nœuds sont exportés simultanément. Chaque nœud écrit les données affectées à ce nœud. Le nombre de fichiers exportés par un nœud est supérieur à un, uniquement si la taille des données de ce nœud dépasse sizeLimit . |
Une table externe est partitionnée par une colonne de chaîne | Les données à exporter sont déplacées entre les nœuds, de sorte que chaque nœud écrit un sous-ensemble des valeurs de partition. Une partition unique est toujours écrite par un seul nœud. Le nombre de fichiers écrits sizeLimit par partition doit être supérieur à un seul si les données dépassent . Si la table externe comprend plusieurs partitions de chaîne, les données sont partitionnés entre le nœud en fonction de la première partition. Par conséquent, la recommandation consiste à définir la partition avec la distribution la plus uniforme comme la première. |
Modifier les paramètres de distribution par défaut
La modification des paramètres de distribution par défaut peut être utile dans les cas suivants :
Cas d’usage | Description | Recommandation |
---|---|---|
Réduire le nombre de fichiers exportés | L’exportation crée trop de petits fichiers et vous souhaitez qu’il crée un plus petit nombre de fichiers plus volumineux. | Définissez distribution =single ou distributed =false (les deux sont équivalents) dans les propriétés de commande. Un seul thread effectue l’exportation. L’inconvénient est que l’opération d’exportation peut être plus lente, car la concurrence est beaucoup réduite. |
Réduire la durée d’exportation | Augmentation de la concurrence de l’opération d’exportation, afin de réduire sa durée. | Définir distribution =per_shard dans les propriétés de commande. Cela signifie que l’accès concurrentiel des opérations d’écriture est par partition de données, au lieu d’un nœud. Cela s’applique uniquement lors de l’exportation vers une table externe qui n’est pas partitionnée par partition de chaîne. Cela peut créer trop de charge sur le stockage, ce qui peut entraîner une limitation. Consultez les échecs de stockage. |
Réduire la durée d’exportation des tables externes partitionnés par une partition de chaîne | Si les partitions ne sont pas réparties uniformément entre les nœuds, l’exportation peut prendre plus de temps. Si une partition est beaucoup plus grande que les autres, le nœud affecté à cette partition effectue la plupart du travail d’exportation, tandis que les autres nœuds restent principalement inactifs. Pour plus d’informations, consultez paramètres de distribution. | Vous pouvez modifier plusieurs paramètres : * S’il existe plusieurs partitions de chaîne, définissez-en une avec la meilleure distribution. * Définir distributionKind =uniform dans les propriétés de commande. Ce paramètre désactive les paramètres de distribution par défaut pour les tables externes partitionnée par chaîne. L’exportation s’exécute avec per-node distribution et chaque nœud exporte les données affectées au nœud. Une partition unique peut être écrite par plusieurs nœuds et le nombre de fichiers augmente en conséquence. Pour augmenter encore davantage la concurrence, définissez distributionKind =uniform avec distribution =per_shard la concurrence la plus élevée (au coût d’un nombre potentiellement plus élevé de fichiers écrits)* Si la cause de l’exportation lente n’est pas hors norme dans les données, réduisez la durée en augmentant la concurrence, sans modifier les paramètres de partitionnement. Utilisez les propriétés et hint.spread les hint.concurrency propriétés, qui déterminent l’accès concurrentiel du partitionnement. Voir l’opérateur de partition. Par défaut, le nombre de nœuds exportés simultanément (le spread ) est la valeur minimale comprise entre 64 et le nombre de nœuds. La définition spread d’un nombre supérieur au nombre de nœuds augmente la concurrence sur chaque nœud (la valeur maximale est spread de 64). |
Authentification et autorisation
Pour exporter vers une table externe, vous devez configurer des autorisations d’écriture. Pour plus d’informations, consultez les autorisations d’écriture pour Stockage Azure table externe ou une table externe SQL Server.
Sortie
Paramètre de sortie | Type | Description |
---|---|---|
ExternalTableName | string |
Nom de la table externe. |
Chemin d’accès | string |
Chemin d’accès de sortie. |
NumRecords | string |
Nombre d’enregistrements exportés vers le chemin d’accès. |
Notes
Le schéma de sortie de requête d’exportation doit correspondre au schéma de la table externe, y compris toutes les colonnes définies par les partitions. Par exemple, si la table est partitionnée par DateTime, le schéma de sortie de requête doit avoir une colonne Timestamp correspondant à TimestampColumnName. Ce nom de colonne est défini dans la définition de partitionnement de table externe.
Il n’est pas possible de remplacer les propriétés de table externe à l’aide de la commande d’exportation. Par exemple, vous ne pouvez pas exporter de données au format Parquet vers une table externe dont le format de données est CSV.
Si la table externe est partitionnée, les artefacts exportés sont écrits dans leurs répertoires respectifs en fonction des définitions de partition. Pour obtenir un exemple, consultez exemple de table externe partitionnée.
- Si une valeur de partition est null/vide ou est une valeur de répertoire non valide, conformément aux définitions du stockage cible, la valeur de partition est remplacée par une valeur par défaut de
__DEFAULT_PARTITION__
.
- Si une valeur de partition est null/vide ou est une valeur de répertoire non valide, conformément aux définitions du stockage cible, la valeur de partition est remplacée par une valeur par défaut de
Pour obtenir des suggestions pour surmonter les erreurs de stockage pendant les commandes d’exportation, consultez les échecs lors des commandes d’exportation.
Les colonnes de table externe sont mappées aux types de données de format cible appropriés, en fonction des règles de mappage des types de données.
L’exportation native Parquet est un mécanisme d’exportation de lumière de ressource plus performant. Une colonne de
datetime
exportée n’est actuellement pas prise en charge par Synapse SQLCOPY
.
Nombre de fichiers
Le nombre de fichiers écrits par partition dépend des paramètres de distribution de l’opération d’exportation :
Si la table externe inclut
datetime
partitions uniquement, ou pas de partitions du tout, le nombre de fichiers écrits pour chaque partition qui existe doit être similaire au nombre de nœuds (ou plus, sisizeLimit
est atteint). Lorsque l’opération d’exportation est distribuée, tous les nœuds s’exportent simultanément. Pour désactiver la distribution, de sorte qu’un seul nœud effectue les écritures, défini surdistributed
false. Ce processus crée moins de fichiers, mais réduit les performances d’exportation.Si la table externe inclut une partition par une colonne de chaîne, le nombre de fichiers exportés doit être un seul fichier par partition (ou plus, s’il
sizeLimit
est atteint). Tous les nœuds participent toujours à l’exportation (l’opération est distribuée), mais chaque partition est affectée à un nœud spécifique. La définition dedistributed
sur false entraîne l’exportation d’un seul nœud, mais le comportement reste le même (un seul fichier écrit par partition).
Exemples
Exemple de table externe non partitionnée
L’exemple suivant exporte des données de la table T
vers la table ExternalBlob
.
ExternalBlob
est une table externe non partitionnée.
.export to table ExternalBlob <| T
de sortie
ExternalTableName | Chemin d’accès | NumRecords |
---|---|---|
ExternalBlob | http://storage1.blob.core.windows.net/externaltable1cont1/1_58017c550b384c0db0fea61a8661333e.csv | 10 |
Exemple de table externe partitionnée
L’exemple suivant crée d’abord une table externe partitionnée, PartitionedExternalBlob
avec un emplacement de stockage d’objets blob spécifié. Les données sont stockées au format CSV avec un format de chemin d’accès qui organise les données par nom et date du client.
.create external table PartitionedExternalBlob (Timestamp:datetime, CustomerName:string)
kind=blob
partition by (CustomerName:string=CustomerName, Date:datetime=startofday(Timestamp))
pathformat = ("CustomerName=" CustomerName "/" datetime_pattern("yyyy/MM/dd", Date))
dataformat=csv
(
h@'http://storageaccount.blob.core.windows.net/container1;secretKey'
)
Il exporte ensuite les données de la table T
vers la table externe PartitionedExternalBlob
.
.export to table PartitionedExternalBlob <| T
de sortie
ExternalTableName | Chemin d’accès | NumRecords |
---|---|---|
ExternalBlob | http://storageaccount.blob.core.windows.net/container1/CustomerName=customer1/2019/01/01/fa36f35c-c064-414d-b8e2-e75cf157ec35_1_58017c550b384c0db0fea61a8661333e.csv | 10 |
ExternalBlob | http://storageaccount.blob.core.windows.net/container1/CustomerName=customer2/2019/01/01/fa36f35c-c064-414d-b8e2-e75cf157ec35_2_b785beec2c004d93b7cd531208424dc9.csv | 10 |
Si la commande est exécutée de manière asynchrone à l’aide du mot clé async
, la sortie est disponible à l’aide du afficher les détails de l’opération commande.
Contenu connexe
- d’exportation continue de données
- Vue d’ensemble des commandes Gestion
- tables externes
- Exporter des données vers SQL
- Exporter des données vers des de stockage cloud