Operátor externaldata

Operátor externaldata vrátí tabulku, jejíž schéma je definováno v samotném dotazu a jejíž data se načítají z artefaktu externího úložiště, jako je například objekt blob v Azure Blob Storage nebo soubor v Azure Data Lake Storage.

Poznámka

Operátor externaldata podporuje konkrétní sadu služeb úložiště, jak je uvedeno v části Připojovací řetězce úložiště.

Poznámka

Operátor externaldata podporuje metody ověřování pomocí klíče sdíleného přístupového podpisu (SAS), přístupového klíče a tokenu Microsoft Entra. Další informace najdete v tématu Metody ověřování úložiště.

Poznámka

Pomocí operátoru externaldata načtěte malé referenční tabulky o kapacitě do 100 MB z artefaktu externího úložiště. Operátor není určen pro velké objemy dat. Pokud chcete načíst velké objemy externích dat, doporučujeme ingestovat externí data do Log Analytics jako vlastní protokoly. Tento operátor se nepodporuje, pokud se veřejný koncový bod artefaktu úložiště nachází za bránou firewall.

Syntax

externaldata(Columnname:columnType [, ...] )[storageConnectionString [, ...] ] [with(propertyName=propertyValue [, ...])]

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

Parametry

Název Typ Vyžadováno Popis
columnName, columnType string ✔️ Seznam názvů sloupců a jejich typů Tento seznam definuje schéma tabulky.
storageConnectionString string ✔️ Úložiště připojovací řetězec artefaktu úložiště, který se má dotazovat.
propertyName, propertyValue string Seznam volitelných podporovaných vlastností , které určují, jak interpretovat data načtená z úložiště.

Podporované vlastnosti

Vlastnost Typ Description
formát string Formát dat. Pokud není zadán, je proveden pokus o zjištění formátu dat z přípony souboru. Výchozí formát je CSV. Podporují se všechny formáty dat příjmu dat .
ignoreFirstRecord bool Pokud je nastavená hodnota true, první záznam v každém souboru se ignoruje. Tato vlastnost je užitečná při dotazování souborů CSV pomocí hlaviček.
ingestionMapping string Určuje, jak mapovat data ze zdrojového souboru na skutečné sloupce v sadě výsledků operátoru. Viz mapování dat.

Poznámka

Tento operátor nepřijímá žádný vstup kanálu.

Standardní omezení dotazů platí také pro dotazy na externí data.

Návraty

Operátor externaldata vrátí tabulku dat daného schématu, jejíž data byla analyzována ze zadaného artefaktu úložiště označeného připojovací řetězec úložiště.

Příklady

Načtení seznamu ID uživatelů uložených v Azure Blob Storage

Následující příklad ukazuje, jak najít všechny záznamy v tabulce, jejíž UserID sloupec spadá do známé sady ID uložených (jeden na řádek) v externím úložném souboru. Vzhledem k tomu, že formát dat není zadaný, je TXTzjištěný formát dat .

Users
| where UserID in ((externaldata (UserID:string) [
    @"https://storageaccount.blob.core.windows.net/storagecontainer/users.txt" 
      h@"?...SAS..." // Secret token needed to access the blob
    ]))
| ...

Dotazování více datových souborů

Následující příklad dotazuje více datových souborů uložených v externím úložišti.

externaldata(Timestamp:datetime, ProductId:string, ProductDescription:string)
[
  h@"https://mycompanystorage.blob.core.windows.net/archivedproducts/2019/01/01/part-00000-7e967c99-cf2b-4dbb-8c53-ce388389470d.csv.gz?...SAS...",
  h@"https://mycompanystorage.blob.core.windows.net/archivedproducts/2019/01/02/part-00000-ba356fa4-f85f-430a-8b5a-afd64f128ca4.csv.gz?...SAS...",
  h@"https://mycompanystorage.blob.core.windows.net/archivedproducts/2019/01/03/part-00000-acb644dc-2fc6-467c-ab80-d1590b23fc31.csv.gz?...SAS..."
]
with(format="csv")
| summarize count() by ProductId

Výše uvedený příklad si můžete představit jako rychlý způsob, jak se dotazovat na více datových souborů bez definování externí tabulky.

Poznámka

Operátor nerozpoznal externaldata dělení dat.

Dotazování hierarchických datových formátů

Pokud chcete dotazovat hierarchický formát dat, například JSON, Parquet, Avronebo ORC, ingestionMapping musí být zadán ve vlastnostech operátoru. V tomto příkladu je soubor JSON uložený v Azure Blob Storage s následujícím obsahem:

{
  "timestamp": "2019-01-01 10:00:00.238521",   
  "data": {    
    "tenant": "e1ef54a6-c6f2-4389-836e-d289b37bcfe0",   
    "method": "RefreshTableMetadata"   
  }   
}   
{
  "timestamp": "2019-01-01 10:00:01.845423",   
  "data": {   
    "tenant": "9b49d0d7-b3e6-4467-bb35-fa420a25d324",   
    "method": "GetFileList"   
  }   
}
...

Chcete-li dotazovat tento soubor pomocí operátoru externaldata , musí být zadáno mapování dat. Mapování určuje, jak namapovat pole JSON na sloupce sady výsledků operátoru:

externaldata(Timestamp: datetime, TenantId: guid, MethodName: string)
[ 
   h@'https://mycompanystorage.blob.core.windows.net/events/2020/09/01/part-0000046c049c1-86e2-4e74-8583-506bda10cca8.json?...SAS...'
]
with(format='multijson', ingestionMapping='[{"Column":"Timestamp","Properties":{"Path":"$.timestamp"}},{"Column":"TenantId","Properties":{"Path":"$.data.tenant"}},{"Column":"MethodName","Properties":{"Path":"$.data.method"}}]')

Tady se MultiJSON používá formát, protože jeden záznam JSON je rozložený do více řádků.

Další informace o syntaxi mapování najdete v tématu Mapování dat.