externaldata-operatorn

Operatorn externaldata returnerar en tabell vars schema har definierats i själva frågan och vars data läss från en extern lagringsartefakt, till exempel en blob i Azure Blob Storage eller en fil i Azure Data Lake Storage.

Anteckning

Operatören externaldata stöder en specifik uppsättning lagringstjänster enligt listan under Anslutningssträngar för lagring.

Anteckning

Operatören externaldata stöder SAS-nyckel (signatur för delad åtkomst), åtkomstnyckel och Microsoft Entra tokenautentiseringsmetoder. Mer information finns i Lagringsautentiseringsmetoder.

Anteckning

Använd operatorn externaldata för att hämta små referenstabeller på upp till 100 MB från en extern lagringsartefakt. Operatorn är inte utformad för stora datavolymer. Om du vill hämta stora mängder externa data rekommenderar vi att du matar in externa data i Log Analytics som anpassade loggar. Den här operatorn stöds inte när den offentliga slutpunkten för lagringsartefakten finns bakom en brandvägg.

Syntax

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

Läs mer om syntaxkonventioner.

Parametrar

Namn Typ Obligatorisk Beskrivning
columnName, columnType string ✔️ En lista över kolumnnamn och deras typer. Den här listan definierar schemat för tabellen.
storageConnectionString string ✔️ En lagrings-anslutningssträng av lagringsartefakten som ska frågas.
propertyName, propertyValue string En lista över valfria egenskaper som stöds och som bestämmer hur data som hämtas från lagringen ska tolkas.

Egenskaper som stöds

Egenskap Typ Description
format string Dataformatet. Om det inte anges görs ett försök att identifiera dataformatet från filnamnstillägget. Standardvärdet är CSV. Alla dataformat för inmatning stöds.
ignoreFirstRecord bool Om värdet trueär ignoreras den första posten i varje fil. Den här egenskapen är användbar när du kör frågor mot CSV-filer med rubriker.
ingestionMapping string Anger hur du mappar data från källfilen till de faktiska kolumnerna i operatorresultatuppsättningen. Se datamappningar.

Anteckning

Den här operatorn accepterar inte några pipelineindata.

Standardfrågegränser gäller även för externa datafrågor.

Returer

Operatorn externaldata returnerar en datatabell med det angivna schemat vars data parsades från den angivna lagringsartefakten, vilket anges av anslutningssträng.

Exempel

Hämta en lista över användar-ID:t som lagras i Azure Blob Storage

I följande exempel visas hur du hittar alla poster i en tabell vars kolumn hamnar i en känd uppsättning ID:er som lagras (en per rad) i en extern lagringsfil UserID . Eftersom dataformatet inte har angetts är TXTdet identifierade dataformatet .

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

Köra frågor mot flera datafiler

I följande exempel körs frågor mot flera datafiler som lagras i extern lagring.

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

Exemplet ovan kan ses som ett snabbt sätt att köra frågor mot flera datafiler utan att definiera en extern tabell.

Anteckning

Datapartitionering känns inte igen av operatorn externaldata .

Fråga hierarkiska dataformat

Om du vill fråga hierarkiskt dataformat, till exempel JSON, Parquet, Avroeller ORC, ingestionMapping måste anges i operatoregenskaperna. I det här exemplet lagras en JSON-fil i Azure Blob Storage med följande innehåll:

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

Om du vill köra frågor mot den här filen med operatorn externaldata måste du ange en datamappning. Mappningen avgör hur JSON-fält ska mappas till operatorns resultatuppsättningskolumner:

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"}}]')

Formatet MultiJSON används här eftersom enskilda JSON-poster sträcker sig över flera rader.

Mer information om mappningssyntax finns i datamappningar.