Dela via


externaldata-operator

Gäller för: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

Operatorn externaldata returnerar en tabell vars schema definieras 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.

Not

Operatorn externaldata stöder:

Not

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. För att hämta stora mängder externa data rekommenderar vi mata 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 Krävs Beskrivning
columnName, columnType string ✔️ En lista över kolumnnamn och deras typer. Den här listan definierar schemat för tabellen.
storageConnectionString string ✔️ En lagringsanslutningssträng av lagringsartefakten som ska frågas.
propertyName, propertyValue string En lista över valfria egenskaper som stöds som avgör hur du tolkar data som hämtats från lagringen.

Egenskaper som stöds

Egenskap Typ Beskrivning
format string Dataformatet. Om det är ospecificerat 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 är inställt på trueignoreras 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.

Not

Den här operatorn accepterar inga pipelineindata.

Standard frågegränser gälla även för externa datafrågor.

Returnerar

Operatorn externaldata returnerar en datatabell för det angivna schemat vars data parsades från den angivna lagringsartefakten, vilket anges av lagringsanslutningssträngen.

Exempel

Exemplen frågar efter data i en extern lagringsfil.

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 UserID kolumn hamnar i en känd uppsättning ID:er som lagras (en per rad) i en extern lagringsfil. Eftersom dataformatet inte har angetts är det identifierade dataformatet TXT.

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 efterfrågas 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.

Not

Datapartitionering identifieras inte av externaldata-operatorn.

Fråga hierarkiska dataformat

Om du vill fråga efter hierarkiskt dataformat, till exempel JSON, Parquet, Avroeller ORC, måste ingestionMapping anges i operatoregenskaperna. I det här exemplet finns det en JSON-fil som lagras 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"}}]')

Det MultiJSON formatet används här eftersom enstaka JSON-poster sträcker sig över flera rader.

Mer information om mappningssyntax finns i datamappningar.