.export do úložiště

Přepněte služby pomocí rozevíracího seznamu Verze . Přečtěte si další informace o navigaci.
Platí pro: ✅ Microsoft Fabric ✅ Azure Data Explorer

Spustí dotaz a zapíše první sadu výsledků do externího cloudového úložiště určeného připojovací řetězec úložiště.

Oprávnění

Ke spuštění tohoto příkazu musíte mít alespoň oprávnění prohlížeče databáze.

Syntaxe

.export[asynccompressed] [] toOutputDataFormat( StorageConnectionString [, ...] ) [with(PropertyName=PropertyValue [, ...] ] )<|Dotaz

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Typ Požadováno Popis
asynchronní string Pokud je zadaný, příkaz se spustí v asynchronním režimu. Viz asynchronní režim.
komprimované bool Pokud je zadáno, výstupní artefakty úložiště jsou komprimovány ve formátu určeném compressionTypepodporovanou vlastností.
OutputDataFormat string ✔️ Formát dat artefaktů úložiště zapsaných příkazem. Podporované hodnoty jsou: csv, tsv, jsona parquet.
StorageConnectionString string Nejméně jeden připojovací řetězce úložiště, které určují, do kterého úložiště se mají data zapisovat. Pro škálovatelné zápisy může být zadán více než jeden připojovací řetězec úložiště. Každý takový připojovací řetězec musí zadat přihlašovací údaje, které se mají použít při zápisu do úložiště. Například při zápisu do služby Azure Blob Storage můžou být přihlašovací údaje klíčem účtu úložiště nebo sdíleným přístupovým klíčem (SAS) s oprávněními ke čtení, zápisu a výpisu objektů blob.
Když exportujete data do souborů CSV pomocí koncového bodu DFS, data procházejí privátním koncovým bodem spravovaného dfs.
Když exportujete data do souborů parquet, data procházejí privátním koncovým bodem spravovaným objektem blob.
PropertyName, PropertyValue string Čárkami oddělený seznam párů vlastností klíč-hodnota. Viz podporované vlastnosti.

Poznámka:

Důrazně doporučujeme exportovat data do úložiště, které je společně přiděleno ve stejné oblasti jako samotná databáze. To zahrnuje data, která se exportují, aby je bylo možné přenést do jiné cloudové služby v jiných oblastech. Zápisy by se měly provádět místně, zatímco čtení může probíhat vzdáleně.

Podporované vlastnosti

Vlastnost Typ Popis
includeHeaders string Pro csv/tsv výstup určuje generování záhlaví sloupců. Může to být jedna z none hodnot (výchozí, nevygenerují se žádné řádky záhlaví), all (vygenerují řádek záhlaví do každého artefaktu úložiště) nebo firstFile (vygeneruje řádek záhlaví pouze do prvního artefaktu úložiště).
fileExtension string Část "rozšíření" artefaktu úložiště (například .csv nebo .tsv). Pokud se použije komprese, .gz připojí se také.
namePrefix string Předpona, která se má přidat ke každému vygenerovanému názvu artefaktu úložiště. Pokud není zadána levostranná předpona, použije se náhodná předpona.
encoding string Kódování textu. Mezi možné hodnoty patří: UTF8NoBOM (výchozí) nebo UTF8BOM.
compressionType string Typ komprese, která se má použít. Pro jiné soubory než Parquet je povolena pouze gzip. U souborů Parquet mohou být hodnoty gzip, snappy, lz4_raw, brotlia zstd. Výchozí hodnota je gzip.
distribution string Distribuční tip (single, per_node, per_shard). Pokud se hodnota rovná single, jedno vlákno zapíše do úložiště. Jinak exportuje zápisy ze všech uzlů, které spouští dotaz paralelně. Viz operátor vyhodnocovat modul plug-in. Výchozí hodnota per_shardje .
persistDetails bool Pokud true, příkaz zachová výsledky (viz příznak async). Výchozí nastavení true je v asynchronních spuštěních, ale je možné ho vypnout, pokud volající nevyžaduje výsledky. Výchozí hodnota false je v synchronních spuštěních, ale je možné ji zapnout.
sizeLimit long Omezení velikosti v bajtech jednoho artefaktu úložiště zapsaného před kompresí. Platný rozsah: 100 MB (výchozí) až 4 GB.
parquetRowGroupSize int Relevantní pouze v případech, kdy je formát dat Parquet. Určuje velikost skupiny řádků v exportovaných souborech. Výchozí velikost skupiny řádků je 100 000 záznamů.
distributed bool Zakažte nebo povolte distribuovaný export. Nastavení na hodnotu false je ekvivalentem nápovědy k single distribuci. Výchozí hodnota je true.
parquetDatetimePrecision string Přesnost, která se má použít při exportu hodnot datetime do Parquet. Možné hodnoty jsou milisekundy a mikrosekundy. Výchozí hodnota je milisekund.

Ověřování a autorizace

Metoda ověřování je založená na zadaném připojovací řetězec a požadovaná oprávnění se liší v závislosti na metodě ověřování.

Následující tabulka uvádí podporované metody ověřování a oprávnění potřebná k exportu dat do externího úložiště podle typu úložiště.

Metoda ověřování Azure Blob Storage / Data Lake Storage Gen2 Data Lake Storage Gen1
Zosobnění Přispěvatel dat objektů blob úložiště Přispěvatel
Token sdíleného přístupu (SAS) Write Write
Přístupový token Microsoft Entra Nevyžaduje se žádná další oprávnění. Nevyžaduje se žádná další oprávnění.
Přístupový klíč účtu úložiště Nevyžaduje se žádná další oprávnění. Nevyžaduje se žádná další oprávnění.
Metoda ověřování Azure Blob Storage / Data Lake Storage Gen2 Data Lake Storage Gen1
Zosobnění Přispěvatel dat objektů blob úložiště Přispěvatel
Spravovaná identita Přispěvatel dat objektů blob úložiště Přispěvatel
Token sdíleného přístupu (SAS) Write Write
Přístupový token Microsoft Entra Nevyžaduje se žádná další oprávnění. Nevyžaduje se žádná další oprávnění.
Přístupový klíč účtu úložiště Nevyžaduje se žádná další oprávnění. Nevyžaduje se žádná další oprávnění.

Návraty

Příkazy vrátí tabulku, která popisuje vygenerované artefakty úložiště. Každý záznam popisuje jeden artefakt a zahrnuje cestu k úložišti k artefaktu a počet záznamů, které obsahuje.

Cesta 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

Asynchronní režim

async Pokud je příznak zadán, příkaz se spustí v asynchronním režimu. V tomto režimu příkaz okamžitě vrátí ID operace a export dat pokračuje na pozadí až do dokončení. ID operace vrácené příkazem lze použít ke sledování jeho průběhu a nakonec k jeho výsledkům pomocí následujících příkazů:

Po úspěšném dokončení můžete například načíst výsledky pomocí:

.show operation f008dc1e-2710-47d8-8d34-0d562f5f8615 details

Příklady

V tomto příkladu Kusto spustí dotaz a pak exportuje první sadu záznamů vytvořenou dotazem do jednoho nebo více komprimovaných objektů blob CSV až do 1 GB před kompresí. Popisky názvů sloupců se přidají jako první řádek každého objektu blob.

.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" 

Selhání při exportu příkazů

Příkazy exportu můžou během provádění přechodně selhat. průběžného exportu příkaz automaticky opakuje. Běžné příkazy exportu (export do úložiště, export do externí tabulky) neprovádějí žádné opakování.

  • Když se příkaz pro export nezdaří, artefakty, které už jsou zapsané do úložiště, se neodstraní. Tyto artefakty zůstanou v úložišti. Pokud příkaz selže, předpokládejme, že export není úplný, i když byly zapsány některé artefakty.
  • Nejlepší způsob, jak sledovat dokončení příkazu i artefakty exportované po úspěšném dokončení, je použití .show operations příkazů a .show operation details příkazů.

Selhání úložiště

Ve výchozím nastavení jsou příkazy exportu distribuovány tak, aby do úložiště mohlo existovat mnoho souběžných zápisů. Úroveň distribuce závisí na typu příkazu exportu:

  • Výchozí rozdělení pro běžný .export příkaz je per_shard, což znamená, že všechny rozsahy , které obsahují data pro souběžný export zápisu do úložiště.

  • Výchozí rozdělení pro export do příkazů externí tabulky je per_node, což znamená, že souběžnost je počet uzlů.

Pokud je počet rozsahů a uzlů velký, může to vést k vysokému zatížení úložiště, které vede k omezování úložiště nebo přechodným chybám úložiště. Tyto chyby můžou překonat následující návrhy (podle pořadí priorit):

  • Zvyšte počet účtů úložiště zadaných pro příkaz pro export nebo do definice externí tabulky. Zatížení se rovnoměrně distribuuje mezi účty.

  • Snižte souběžnost nastavením nápovědy k per_node distribuci (viz vlastnosti příkazu).

  • Snižte souběžnost počtu uzlů exportovaných nastavením vlastnostiquery_fanout_nodes_percent požadavku klienta na požadovanou souběžnost (procento uzlů). Vlastnost lze nastavit jako součást exportovacího dotazu. Následující příkaz například omezuje počet uzlů, které se zapisují do úložiště souběžně, na 50 % uzlů:

    .export async  to csv
        ( h@"https://storage1.blob.core.windows.net/containerName;secretKey" ) 
        with
        (
            distribution="per_node"
        ) 
        <| 
        set query_fanout_nodes_percent = 50;
        ExportQuery
    
  • Snižte souběžnost počtu vláken exportovaných v každém uzlu při použití jednotlivých exportů horizontálních oddílů nastavením vlastnostiquery_fanout_threads_percent požadavku klienta na požadovanou souběžnost (procento vláken). Vlastnost lze nastavit jako součást exportovacího dotazu. Následující příkaz například omezuje počet vláken zapisovaných do úložiště souběžně na 50 % na každém uzlu:

    .export async  to csv
        ( h@"https://storage1.blob.core.windows.net/containerName;secretKey" ) 
        with
        (
            distribution="per_shard"
        ) 
        <| 
        set query_fanout_threads_percent = 50;
        ExportQuery
    
  • Pokud exportujete do dělené externí tabulky, nastavení spread/concurrency vlastností může snížit souběžnost (viz podrobnosti ve vlastnostech příkazu.

  • Pokud žádná z předchozích doporučení nefunguje, můžete distribuci úplně zakázat nastavením vlastnosti distributed na false. Nedoporučujeme to ale, protože to může výrazně ovlivnit výkon příkazu.

Selhání autorizace

K selhání ověřování nebo autorizace během příkazů exportu může dojít v případě, že přihlašovací údaje zadané v úložišti připojovací řetězec nejsou povolené pro zápis do úložiště. Pokud pro příkaz exportu používáte impersonate token SAS delegovaný uživatelem, je k zápisu do účtu úložiště potřeba role Přispěvatel dat objektů blob služby Storage. Další informace najdete v tématu Připojovací řetězec úložiště.

Mapování datových typů

Mapování datových typů Parquet

Při exportu se datové typy Kusto mapují na datové typy Parquet pomocí následujících pravidel:

Datový typ Kusto Datový typ Parquet Anotace Parquet Komentáře
bool BOOLEAN
datetime INT64 TIMESTAMP_MICROS
dynamic BYTE_ARRAY UTF-8 Serializováno jako řetězec JSON
guid BYTE_ARRAY UTF-8
int INT32
long INT64
real DOUBLE
string BYTE_ARRAY UTF-8
timespan INT64 Uložený jako ticks (počet 100 nanosekundových jednotek)
decimal FIXED_LENGTH_BYTE_ARRAY DESETINNÝ