externaldata-operator
Gäller för: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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:
- en specifik uppsättning lagringstjänster enligt listan under Storage-anslutningssträngar.
- sas-nyckel (signatur för delad åtkomst), åtkomstnyckel och autentiseringsmetoder för Microsoft Entra-token. Mer information finns i Storage-autentiseringsmetoder.
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å true 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. |
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
, Avro
eller 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.
Relaterat innehåll
Mer information om mappningssyntax finns i datamappningar.