Exportieren von Daten in eine externe Tabelle
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer
Sie können Daten exportieren, indem Sie eine externe Tabelle definieren und Daten in diese exportieren. Die Tabelleneigenschaften werden beim Erstellen der externen Tabelle angegeben. Der Exportbefehl verweist auf die externe Tabelle anhand des Namens.
Berechtigungen
Sie müssen mindestens über Die Berechtigungen des Tabellenadministrators verfügen, um diesen Befehl auszuführen.
Syntax
.export
[async
] to
table
externalTableName
[ propertyName =
propertyValue [,
(
with
...]] <|
)
Frage
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
Name | Type | Erforderlich | Beschreibung |
---|---|---|---|
externalTableName | string |
✔️ | Der Name der externen Tabelle, in die exportiert werden soll. |
propertyName, propertyValue | string |
Eine durch Trennzeichen getrennte Liste optionaler Eigenschaften. | |
query | string |
✔️ | Die Exportabfrage. |
Unterstützte Eigenschaften
Die folgenden Eigenschaften werden als Teil des Befehls "In externe Tabelle exportieren" unterstützt.
Eigenschaft | Typ | Beschreibung | Standard |
---|---|---|---|
sizeLimit |
long |
Die Größenbeschränkung in Bytes eines einzelnen Speicherartefaktes, das geschrieben wird (vor der Komprimierung). Eine vollständige Zeilengruppe parquetRowGroupSize wird geschrieben, bevor überprüft wird, ob diese Zeilengruppe den Größengrenzwert erreicht hat und ein neues Artefakt beginnen soll. Gültiger Bereich: 100 MB (Standard) auf 1 GB. |
|
distributed |
bool |
Deaktivieren/Aktivieren des verteilten Exports. Die Einstellung auf "false" entspricht dem single Verteilungshinweis. |
Der Standardwert ist true . |
distribution |
string |
Verteilungshinweis (single , per_node , per_shard ). Weitere Details in den Verteilungseinstellungen anzeigen |
Der Standardwert ist per_node . |
distributionKind |
string |
Wechselt optional zu einer gleichmäßigen Verteilung, wenn die externe Tabelle durch Zeichenfolgenpartition partitioniert wird. Gültige Werte sind uniform und default . Weitere Details in den Verteilungseinstellungen anzeigen |
|
concurrency |
Anzahl | Gibt an, wie viele Partitionen parallel ausgeführt werden sollen. Weitere Details in den Verteilungseinstellungen anzeigen | Der Standardwert ist 16. |
spread |
Anzahl | Gibt an, wie die Partitionen auf Knoten verteilt werden. Weitere Details in den Verteilungseinstellungen anzeigen | Der Standardwert ist Min(64, number-of-nodes) . |
parquetRowGroupSize |
int |
Nur relevant, wenn das Datenformat "Parkett" ist. Steuert die Zeilengruppengröße in den exportierten Dateien. Dieser Wert hat Vorrang sizeLimit vor , was bedeutet, dass eine vollständige Zeilengruppe exportiert wird, bevor überprüft wird, ob diese Zeilengruppe die Größenbeschränkung erreicht hat und ein neues Artefakt beginnen soll. |
Die Standardgröße der Zeilengruppe beträgt 100.000 Datensätze. |
Verteilungseinstellungen
Die Verteilung eines Exportvorgangs in externe Tabellen gibt die Anzahl der Knoten und Threads an, die gleichzeitig in den Speicher geschrieben werden. Die Standardverteilung hängt von der Partitionierung der externen Tabelle ab:
Partitionierung externer Tabellen | Standardverteilung |
---|---|
Externe Tabelle ist nicht partitioniert oder nur nach datetime Spalte partitioniert. |
Der Export wird verteilt per_node – alle Knoten werden gleichzeitig exportiert. Jeder Knoten schreibt die daten, die diesem Knoten zugewiesen sind. Die Anzahl der von einem Knoten exportierten Dateien ist größer als eins, nur wenn die Größe der Daten aus diesem Knoten überschritten wird sizeLimit . |
Die externe Tabelle wird durch eine Zeichenfolgenspalte partitioniert. | Die zu exportierenden Daten werden zwischen den Knoten verschoben, sodass jeder Knoten eine Teilmenge der Partitionswerte schreibt. Eine einzelne Partition wird immer von einem einzelnen Knoten geschrieben. Die Anzahl der pro Partition geschriebenen Dateien sollte nur größer sein, wenn die Daten überschritten werden sizeLimit . Wenn die externe Tabelle mehrere Zeichenfolgenpartitionen enthält, werden Die Daten basierend auf der ersten Partition zwischen dem Knoten partitioniert. Daher empfiehlt es sich, die Partition mit der einheitlichen Verteilung als erste zu definieren. |
Ändern der Standardverteilungseinstellungen
Das Ändern der Standardverteilungseinstellungen kann in den folgenden Fällen hilfreich sein:
Anwendungsfall | Beschreibung | Empfehlung |
---|---|---|
Verringern der Anzahl exportierter Dateien | Der Export erstellt zu viele kleine Dateien, und Sie möchten eine kleinere Anzahl größerer Dateien erstellen. | Set distribution =single or distributed =false (both are equivalent) in the command properties. Nur ein einzelner Thread führt den Export aus. Der Nachteil ist, dass der Exportvorgang langsamer sein kann, da die Parallelität viel reduziert wird. |
Verringern der Exportdauer | Erhöhen der Parallelität des Exportvorgangs, um die Dauer zu verringern. | Legen Sie distribution =per_shard die Befehlseigenschaften fest. Dies bedeutet, dass die Parallelität der Schreibvorgänge pro Datenshard und nicht pro Knoten erfolgt. Dies ist nur relevant, wenn sie in eine externe Tabelle exportiert wird, die nicht durch Zeichenfolgenpartition partitioniert ist. Dies kann zu viel Last auf den Speicher führen, was möglicherweise zu Drosselung führt. Siehe Speicherfehler. |
Verringern der Exportdauer für externe Tabellen, die durch eine Zeichenfolgenpartition partitioniert werden | Wenn die Partitionen nicht einheitlich zwischen den Knoten verteilt werden, kann die Ausführung des Exports länger dauern. Wenn beispielsweise eine einzelne Partition vorhanden ist, die viel größer als andere ist, erfolgt der Großteil der Exportarbeit durch den einzelnen Knoten, der dieser Partition zugewiesen ist, während andere Knoten meist im Leerlauf sind. Siehe Verteilungseinstellungen. | Es gibt mehrere Einstellungen, die Sie ändern können: * Wenn mehrere Zeichenfolgenpartitionen vorhanden sind, definieren Sie zuerst die Partition mit der besten Verteilung. * Legen Sie distributionKind =uniform die Befehlseigenschaften fest. Diese Einstellung deaktiviert die Standardverteilungseinstellungen für Zeichenfolgenpartitionierte externe Tabellen. Der Export wird mit per-node Verteilung ausgeführt, und jeder Knoten exportiert die dem Knoten zugewiesenen Daten. Eine einzelne Partition kann von mehreren Knoten geschrieben werden, und die Anzahl der Dateien steigt entsprechend. Um die Parallelität noch weiter zu erhöhen, legen Sie distributionKind =uniform sie zusammen mit der distribution =per_shard höchsten Parallelität (zu Den Kosten potenziell vieler weiterer geschriebener Dateien) fest.* Wenn die Ursache für den langsamen Export in den Daten nicht ausreißt, verringern Sie die Dauer, indem Sie die Parallelität erhöhen, ohne Partitionierungseinstellungen zu ändern. Verwenden Sie die hint.spread Eigenschaften, hint.concurrency die die Parallelität der Partitionierung bestimmen. Siehe Partitionsoperator. Standardmäßig ist die Anzahl der Knoten, die gleichzeitig exportiert werden (die spread ) der Mindestwert zwischen 64 und der Anzahl der Knoten. Die Einstellung spread auf eine höhere Zahl als die Anzahl von Knoten erhöht die Parallelität auf jedem Knoten (max. Wert für spread 64). |
Authentifizierung und Autorisierung
Um in eine externe Tabelle zu exportieren, müssen Sie Schreibberechtigungen einrichten. Weitere Informationen finden Sie in den Schreibberechtigungen für die externe Azure Storage-Tabelle oder die externe SQL Server-Tabelle.
Output
Ausgabeparameter | Typ | Beschreibung |
---|---|---|
ExternalTableName | string |
Der Name der externen Tabelle. |
Pfad | string |
Option „Output path“. |
NumRecords | string |
Die Anzahl der in den Pfad exportierten Datensätze. |
Hinweise
Das Ausgabeschema der Exportabfrage muss mit dem Schema der externen Tabelle übereinstimmen, einschließlich aller Spalten, die von den Partitionen definiert sind. Wenn die Tabelle beispielsweise von DateTime partitioniert wird, muss das Abfrageausgabeschema eine Timestamp-Spalte aufweisen, die dem TimestampColumnName entspricht. Dieser Spaltenname wird in der Definition der externen Tabellenpartitionierung definiert.
Es ist nicht möglich, die eigenschaften der externen Tabelle mithilfe des Exportbefehls außer Kraft zu setzen. Sie können z. B. keine Daten im Parkettformat in eine externe Tabelle exportieren, deren Datenformat CSV ist.
Wenn die externe Tabelle partitioniert ist, werden exportierte Artefakte gemäß den Partitionsdefinitionen gemäß dem Beispiel für die partitionierte externe Tabelle in ihre jeweiligen Verzeichnisse geschrieben.
- Wenn ein Partitionswert null/leer ist oder ein ungültiger Verzeichniswert gemäß den Definitionen des Zielspeichers ist, wird der Partitionswert durch einen Standardwert
__DEFAULT_PARTITION__
ersetzt.
- Wenn ein Partitionswert null/leer ist oder ein ungültiger Verzeichniswert gemäß den Definitionen des Zielspeichers ist, wird der Partitionswert durch einen Standardwert
Vorschläge zum Beheben von Speicherfehlern während exportbefehlen finden Sie unter Fehlern bei Exportbefehlen.
Externe Tabellenspalten sind geeigneten Datentypen im Zielformat entsprechend den Zuordnungsregeln für Datentypen zugeordnet.
Der native Parkettexport ist ein leistungsfähigerer, Ressourcenlichtexportmechanismus. Eine exportierte 'datetime'-Spalte wird derzeit von Synapse SQL 'COPY' nicht unterstützt.
Anzahl von Dateien
Die Anzahl der pro Partition geschriebenen Dateien hängt von den Verteilungseinstellungen des Exportvorgangs ab:
Wenn die externe Tabelle nur Datetime-Partitionen oder gar keine Partitionen enthält, sollte die Anzahl der geschriebenen Dateien (falls vorhanden) mit der Anzahl der Knoten (oder mehr, falls
sizeLimit
erreicht) vergleichbar sein. Wenn der Exportvorgang verteilt wird, werden alle Knoten gleichzeitig exportiert. Um die Verteilung zu deaktivieren, sodass nur ein einzelner Knoten die Schreibvorgänge ausführt, auf "false" festgelegtdistributed
ist. Dieser Vorgang erstellt weniger Dateien, verringert jedoch die Exportleistung.Wenn die externe Tabelle eine Partition durch eine Zeichenfolgenspalte enthält, sollte die Anzahl der exportierten Dateien eine einzelne Datei pro Partition (oder mehr, falls
sizeLimit
erreicht) sein. Alle Knoten nehmen weiterhin am Export teil (Vorgang wird verteilt), aber jeder Partition wird einem bestimmten Knoten zugewiesen. Die Einstellungdistributed
auf "false" bewirkt, dass nur ein einzelner Knoten den Export ausführen kann, aber das Verhalten bleibt gleich (eine einzelne Datei, die pro Partition geschrieben wurde).
Beispiele
Beispiel für eine nicht partitionierte externe Tabelle
ExternalBlob ist eine nicht partitionierte externe Tabelle.
.export to table ExternalBlob <| T
ExternalTableName | Pfad | NumRecords |
---|---|---|
ExternalBlob | http://storage1.blob.core.windows.net/externaltable1cont1/1_58017c550b384c0db0fea61a8661333e.csv | 10 |
Beispiel für partitionierte externe Tabelle
PartitionedExternalBlob ist eine externe Tabelle, die wie folgt definiert ist:
.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'
)
.export to table PartitionedExternalBlob <| T
ExternalTableName | Pfad | 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 |
Wenn der Befehl asynchron ausgeführt wird (mithilfe des async
Schlüsselworts), ist die Ausgabe mit dem Befehl "Vorgangsdetails anzeigen" verfügbar.