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 TXT
det 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
, Avro
eller 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.
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för