Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer
Führt eine Abfrage aus und schreibt das erste Resultset in einen externen Cloudspeicher, der durch einen Speicher Verbindungszeichenfolge angegeben wird.
Berechtigungen
Zum Ausführen dieses Befehls benötigen Sie mindestens Die Berechtigungen für den Datenbank-Viewer .
Syntax
.export
[] [async
compressed
] to
OutputDataFormat(
StorageConnectionString [,
...] )
[ PropertyNamewith
(
[=
,
...] ] )
<|
Frage
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
Name | Type | Erforderlich | Beschreibung |
---|---|---|---|
asynchrone | string |
Wenn angegeben, wird der Befehl im asynchronen Modus ausgeführt. Siehe asynchronen Modus. | |
komprimierte | bool |
Wenn angegeben, werden die Ausgabespeicherartefakte in dem format komprimiert, das durch die compressionType unterstützte Eigenschaftangegeben wird. |
|
OutputDataFormat | string |
✔️ | Das Datenformat der Vom Befehl geschriebenen Speicherartefakte. Unterstützte Werte: csv , tsv , json und parquet . |
StorageConnectionString | string |
Mindestens eine Speicherverbindungszeichenfolgen, die angeben, in welchen Speicher die Daten geschrieben werden sollen. Für skalierbare Schreibvorgänge können mehrere Speicherverbindungszeichenfolgen angegeben werden. Jede solche Verbindungszeichenfolge muss die Anmeldeinformationen angeben, die beim Schreiben in den Speicher verwendet werden sollen. Wenn Sie beispielsweise in Azure Blob Storage schreiben, können die Anmeldeinformationen der Speicherkontoschlüssel oder ein freigegebener Zugriffsschlüssel (SAS) mit den Berechtigungen zum Lesen, Schreiben und Listen-BLOB sein. Wenn Sie Daten mithilfe eines DFS-Endpunkts in CSV-Dateien exportieren, durchlaufen die Daten einen vom DFS verwalteten privaten Endpunkt. Wenn Sie Daten in Parkettdateien exportieren, durchlaufen die Daten einen blobverwalteten privaten Endpunkt. |
|
PropertyName, PropertyValue | string |
Eine durch Trennzeichen getrennte Liste von Schlüsselwert-Eigenschaftspaaren. Siehe unterstützte Eigenschaften. |
Hinweis
Es wird dringend empfohlen, Daten in den Speicher zu exportieren, der in derselben Region wie die Datenbank selbst zugeordnet ist. Dazu gehören Daten, die exportiert werden, damit sie in andere Regionen in einen anderen Clouddienst übertragen werden können. Schreibvorgänge sollten lokal erfolgen, während Lesevorgänge remote erfolgen können.
Unterstützte Eigenschaften
Eigenschaft | Type | Beschreibung |
---|---|---|
includeHeaders |
string |
Steuert csv /tsv für die Ausgabe die Generierung von Spaltenüberschriften. Dies kann eine von none (Standard; keine ausgegebenen Kopfzeilen all ), (geben Sie eine Kopfzeile in jedes Speicherartefakt aus), oder firstFile (geben Sie eine Kopfzeile nur in das erste Speicherartefakt aus). |
fileExtension |
string |
Der Teil der Erweiterung des Speicherartefaktes (z. B. .csv oder .tsv ). Wenn komprimierung verwendet wird, .gz wird ebenfalls angefügt. |
namePrefix |
string |
Das Präfix, das jedem generierten Speicherartefaktenamen hinzugefügt werden soll. Ein zufälliges Präfix wird verwendet, wenn links nicht angegeben. |
encoding |
string |
Die Codierung für Text. Mögliche Werte sind: UTF8NoBOM (Standard) oder UTF8BOM . |
compressionType |
string |
Der zu verwendende Komprimierungstyp. Bei Nicht-Parkett-Dateien ist nur gzip zulässig. Für Parkettdateien sind mögliche Werte gzip , snappy , lz4_raw , brotli und zstd . Der Standardwert ist gzip . |
distribution |
string |
Verteilungshinweis (single , per_node , per_shard ). Wenn der Wert gleich ist single , schreibt ein einzelner Thread in den Speicher. Exportieren Sie andernfalls Schreibvorgänge von allen Knoten, die die Abfrage parallel ausführen. Siehe Auswerten des Plug-In-Operators. Wird standardmäßig auf per_shard festgelegt. |
persistDetails |
bool |
Wenn true , behält der Befehl seine Ergebnisse bei (siehe async Flag). Standardwerte für true asynchrone Ausführung, können aber deaktiviert werden, wenn der Aufrufer die Ergebnisse nicht erfordert.
false Standardmäßig werden synchrone Ausführungen ausgeführt, können aber aktiviert werden. |
sizeLimit |
long |
Die Größenbeschränkung in Bytes eines einzelnen Speicherartefaktes, das vor der Komprimierung geschrieben wurde. Gültiger Bereich: 100 MB (Standard) bis 4 GB. |
parquetRowGroupSize |
int |
Nur relevant, wenn das Datenformat "Parkett" ist. Steuert die Zeilengruppengröße in den exportierten Dateien. Die Standardgröße der Zeilengruppe beträgt 100.000 Datensätze. |
distributed |
bool |
Deaktivieren oder aktivieren Sie den verteilten Export. Die Einstellung auf "false" entspricht dem single Verteilungshinweis. Der Standardwert ist korrekt. |
parquetDatetimePrecision |
string |
Die Genauigkeit, die beim Exportieren von datetime Werten nach Parkett verwendet werden soll. Mögliche Werte sind Millisekunden und Mikrosekunden. Der Standardwert ist Millisekunden. |
Authentifizierung und Autorisierung
Die Authentifizierungsmethode basiert auf den bereitgestellten Verbindungszeichenfolge und die erforderlichen Berechtigungen variieren je nach Authentifizierungsmethode.
In der folgenden Tabelle sind die unterstützten Authentifizierungsmethoden und die Zum Exportieren von Daten in externen Speicher nach Speichertyp erforderlichen Berechtigungen aufgeführt.
Authentifizierungsmethode | Azure Blob Storage / Data Lake Storage Gen2 | Data Lake Storage Gen1 |
---|---|---|
Identitätswechsel | Mitwirkender an Storage-Blobdaten | Mitwirkender |
Token für gemeinsamen Zugriff (SAS) | Schreiben | Schreiben |
Microsoft Entra-Zugriffstoken | Keine zusätzlichen Berechtigungen erforderlich | Keine zusätzlichen Berechtigungen erforderlich |
Zugriffsschlüssel für das Speicherkonto | Keine zusätzlichen Berechtigungen erforderlich | Keine zusätzlichen Berechtigungen erforderlich |
Gibt zurück
Die Befehle geben eine Tabelle zurück, die die generierten Speicherartefakte beschreibt. Jeder Datensatz beschreibt ein einzelnes Artefakt und enthält den Speicherpfad zum Artefakt und wie viele Datensätze es enthält.
Pfad | NumRecords |
---|---|
http://storage1.blob.core.windows.net/containerName/export_1_d08afcae2f044c1092b279412dcb571b.csv | 10 |
http://storage1.blob.core.windows.net/containerName/export_2_454c0f1359e24795b6529da8a0101330.csv | 15 |
Asynchroner Modus
Wenn das async
Flag angegeben ist, wird der Befehl im asynchronen Modus ausgeführt.
In diesem Modus gibt der Befehl sofort mit einer Vorgangs-ID zurück, und der Datenexport wird bis zum Abschluss im Hintergrund fortgesetzt. Die vom Befehl zurückgegebene Vorgangs-ID kann verwendet werden, um den Fortschritt und letztendlich die Ergebnisse über die folgenden Befehle nachzuverfolgen:
-
.show operations
: Nachverfolgen des Fortschritts. -
.show operation details
: Abrufen von Abschlussergebnissen.
Beispielsweise können Sie nach einem erfolgreichen Abschluss die Ergebnisse mithilfe von:
.show operation f008dc1e-2710-47d8-8d34-0d562f5f8615 details
Beispiele
In diesem Beispiel führt Kusto die Abfrage aus und exportiert dann das erste Recordset, das von der Abfrage erstellt wird, in einen oder mehrere komprimierte CSV-Blobs, bis zu 1 GB vor der Komprimierung. Spaltennamenbeschriftungen werden als erste Zeile für jedes Blob hinzugefügt.
.export
async compressed
to csv (
h@"https://storage1.blob.core.windows.net/containerName;secretKey",
h@"https://storage1.blob.core.windows.net/containerName2;secretKey"
) with (
sizeLimit=1000000000,
namePrefix="export",
includeHeaders="all",
encoding="UTF8NoBOM"
)
<|
Logs | where id == "1234"
Fehler bei Exportbefehlen
Exportbefehle können während der Ausführung vorübergehend fehlschlagen. fortlaufenden Export den Befehl automatisch erneut ausführen. Reguläre Exportbefehle (Export in Speicher, Export in externe Tabelle) führen keine Wiederholungen durch.
- Wenn der Exportbefehl fehlschlägt, werden bereits in den Speicher geschriebene Artefakte nicht gelöscht. Diese Artefakte verbleiben im Speicher. Wenn der Befehl fehlschlägt, gehen Sie davon aus, dass der Export unvollständig ist, auch wenn einige Artefakte geschrieben wurden.
- Die beste Möglichkeit zum Nachverfolgen des Abschlusses des Befehls und der Artefakte, die nach erfolgreichem Abschluss exportiert wurden, ist die Verwendung der
.show operations
Befehle und.show operation details
Befehle.
Speicherfehler
Standardmäßig werden Exportbefehle so verteilt, dass es möglicherweise viele gleichzeitige Schreibvorgänge in den Speicher gibt. Die Verteilungsebene hängt vom Typ des Exportbefehls ab:
Die Standardverteilung für reguläre
.export
Befehle lautetper_shard
, d. h. alle Soweit , die Daten enthalten, die Schreibvorgänge gleichzeitig in den Speicher exportieren.Die Standardverteilung für den Export in externe Tabellenbefehle ist
per_node
, was bedeutet, dass die Parallelität die Anzahl der Knoten ist.
Wenn die Anzahl der Erweiterungen/Knoten groß ist, kann dies zu einer hohen Auslastung des Speichers führen, die zu Speichereinschränkungen oder vorübergehenden Speicherfehlern führt. Die folgenden Vorschläge können diese Fehler (nach Prioritätsreihenfolge) überwinden:
Erhöhen Sie die Anzahl der Speicherkonten, die dem Exportbefehl oder der definition der externen Tabellebereitgestellt werden. Die Last wird gleichmäßig zwischen den Konten verteilt.
Verringern Sie die Parallelität, indem Sie den Verteilungshinweis auf
per_node
(siehe Befehlseigenschaften) festlegen.Verringern Sie die Parallelität der Anzahl der exportierten Knoten, indem Sie die Clientanforderungseigenschaft
query_fanout_nodes_percent
auf die gewünschte Parallelität (Prozent der Knoten) festlegen. Die Eigenschaft kann als Teil der Exportabfrage festgelegt werden. Mit dem folgenden Befehl wird beispielsweise die Anzahl der Knoten beschränkt, die gleichzeitig auf 50 % der Knoten geschrieben werden:.export async to csv ( h@"https://storage1.blob.core.windows.net/containerName;secretKey" ) with ( distribution="per_node" ) <| set query_fanout_nodes_percent = 50; ExportQuery
Verringern Sie die Parallelität der Anzahl der Threads, die in jedem Knoten exportiert werden, wenn sie pro Shardexport verwendet werden, indem Sie die Clientanforderungseigenschaft
query_fanout_threads_percent
auf die gewünschte Parallelität (Prozent der Threads) festlegen. Die Eigenschaft kann als Teil der Exportabfrage festgelegt werden. Der folgende Befehl begrenzt beispielsweise die Anzahl der Threads, die gleichzeitig auf 50 % auf jeden der Knoten geschrieben werden:.export async to csv ( h@"https://storage1.blob.core.windows.net/containerName;secretKey" ) with ( distribution="per_shard" ) <| set query_fanout_threads_percent = 50; ExportQuery
Wenn Sie in eine partitionierte externe Tabelle exportieren, können die Eigenschaften die
spread
/concurrency
Parallelität reduzieren (siehe Details in den Befehlseigenschaften).Wenn keines der vorherigen Empfehlungen funktioniert, können Sie die Verteilung vollständig deaktivieren, indem Sie die eigenschaft
distributed
auf "false" festlegen. Es wird jedoch nicht empfohlen, dies zu tun, da sie sich erheblich auf die Befehlsleistung auswirken kann.
Autorisierungsfehler
Authentifizierungs- oder Autorisierungsfehler bei Exportbefehlen können auftreten, wenn die im Speicher bereitgestellten Anmeldeinformationen nicht in den Speicher schreiben dürfen Verbindungszeichenfolge. Wenn Sie ein benutzerdelegiertes SAS-Token für den Exportbefehl verwenden impersonate
, muss die Rolle "Mitwirkender von Speicher-BLOB-Daten" in das Speicherkonto geschrieben werden. Weitere Informationen finden Sie unter Verbindungszeichenfolgen für den Speicher.
Zuordnung von Datentypen
Zuordnung von Parkettdatentypen
Beim Export werden Kusto-Datentypen unter Verwendung der folgenden Regeln den Datentypen "Parkett" zugeordnet:
Kusto-Datentyp | Parquet-Datentyp | Parkettanmerkung | Kommentare |
---|---|---|---|
bool |
BOOLEAN |
||
datetime |
INT64 |
TIMESTAMP_MICROS | |
dynamic |
BYTE_ARRAY |
UTF-8 | Serialisiert als JSON-Zeichenfolge |
guid |
BYTE_ARRAY |
UTF-8 | |
int |
INT32 |
||
long |
INT64 |
||
real |
DOUBLE |
||
string |
BYTE_ARRAY |
UTF-8 | |
timespan |
INT64 |
Als Teilstriche (100-Nanosekundeneinheiten) gespeichert | |
decimal |
FIXED_LENGTH_BYTE_ARRAY |
DECIMAL |