Freigeben über


.export to table

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] totableexternalTableName
[ propertyNamewith( [=, ...]] )<|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 Type Beschreibung Standard
sizeLimit long Die Größenbeschränkung in Bytes eines einzelnen Speicherartefaktes, das vor der Komprimierung geschrieben wurde. Eine vollständige Zeilengruppe parquetRowGroupSize geschrieben wird, bevor überprüft wird, ob diese Zeilengruppe den Größengrenzwert erreicht und ein neues Artefakt beginnen soll. Gültiger Bereich: 100 MB (Standard) auf 1 GB.
distributed bool Deaktivieren oder aktivieren Sie den verteilten Export. 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 vor sizeLimit, was bedeutet, dass eine vollständige Zeilengruppe exportiert wird, bevor überprüft wird, ob diese Zeilengruppe die Größenbeschränkung erreicht 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 sizeLimitüberschreitet.
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 erstes 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 Datensharddaten 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 eine Partition viel größer als die anderen ist, erledigt der dieser Partition zugewiesene Knoten den größten Teil des Exportvorgangs, während die anderen Knoten meist im Leerlauf bleiben. Weitere Informationen finden Sie unter 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 Type 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 in ihre jeweiligen Verzeichnisse geschrieben. Ein Beispiel finden Sie unter partitionierten externen Tabelle.

    • 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.
  • 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 COPYnicht 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 dateien, die für jede vorhandene Partition geschrieben wurden, der Anzahl der Knoten ähneln (oder mehr, wenn sizeLimit erreicht ist). 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" festgelegt distributed ist. Dieser Vorgang erstellt weniger Dateien, reduziert 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. Das Festlegen distributed 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

Im folgenden Beispiel werden Daten aus der Tabelle T in die ExternalBlob Tabelle exportiert. ExternalBlob ist eine nicht partitionierte externe Tabelle.

.export to table ExternalBlob <| T

Ausgabe-

ExternalTableName Pfad NumRecords
ExternalBlob http://storage1.blob.core.windows.net/externaltable1cont1/1_58017c550b384c0db0fea61a8661333e.csv 10

Beispiel für partitionierte externe Tabelle

Im folgenden Beispiel wird zuerst eine partitionierte externe Tabelle erstellt, PartitionedExternalBlob mit einem angegebenen Blobspeicherort. Die Daten werden im CSV-Format mit einem Pfadformat gespeichert, das die Daten nach Kundenname und Datum organisiert.

.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'
)

Anschließend werden Daten aus der Tabelle T in die PartitionedExternalBlob externe Tabelle exportiert.

.export to table PartitionedExternalBlob <| T

Ausgabe-

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 mithilfe des schlüsselworts async ausgeführt wird, steht die Ausgabe mithilfe der Anzeigen von Vorgangsdetails Befehl zur Verfügung.