Sdílet prostřednictvím


Operátor externaldata

Platí pro: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

Operátor externaldata vrátí tabulku, jejíž schéma je definováno v samotném dotazu a jehož data se čtou z artefaktu externího úložiště, například objekt blob ve službě Azure Blob Storage nebo soubor ve službě 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ězec úložiště.

Poznámka:

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

Poznámka:

Pomocí operátoru externaldata můžete z artefaktu externího úložiště načíst malé referenční tabulky o velikosti až 100 MB. 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 je veřejný koncový bod artefaktu úložiště za bránou firewall.

Syntaxe

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

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

Parametry

Název Type Pož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ě k dotazování.
propertyName, propertyValue string Seznam volitelných podporovaných vlastností , které určují, jak interpretovat data načtená z úložiště.

Podporované vlastnosti

Vlastnost Type Popis
format string Formát dat. Pokud není zadaný, provede se pokus o zjištění datového formátu z přípony souboru. Výchozí hodnota 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.
příjem dat – mapování 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.

Omezení standardních dotazů platí i 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 ve službě Azure Blob Storage

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

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í na 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 dotazování na více datových souborů bez definování externí tabulky.

Poznámka:

Operátor nerozpozná externaldata dělení dat.

Dotazování na hierarchické formáty dat

Chcete-li dotazovat hierarchický datový formát, 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ý ve službě 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 mapovat 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"}}]')

Tento MultiJSON formát se používá, protože jednotlivé záznamy JSON jsou rozložené na několik řádků.

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