Megosztás a következőn keresztül:


externaldata operátor

A következőkre vonatkozik: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

A externaldata operátor egy táblát ad vissza, amelynek sémája magában a lekérdezésben van definiálva, és amelynek adatait egy külső tárolási összetevőből olvassa be, például az Azure Blob Storage-ban lévő blobból vagy egy Azure Data Lake Storage-fájlból.

Jegyzet

A externaldata operátor a következőket támogatja:

Jegyzet

A externaldata operátorral akár 100 MB méretű kis referenciatáblákat is lekérhet egy külső tárolóösszetevőből. Az operátort nem nagy adatkötetekhez tervezték. Nagy mennyiségű külső adat lekéréséhez javasoljuk, a külső adatokat egyéni naplókénta Log Analyticsbe tölteni. Ez az operátor nem támogatott, ha a tárolási összetevő nyilvános végpontja tűzfal mögött található.

Szintaxis

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

További információ szintaxiskonvenciákról.

Paraméterek

Név Típus Szükséges Leírás
columnName, columnType string ✔️ Az oszlopnevek és azok típusainak listája. Ez a lista a tábla sémáját határozza meg.
storageConnectionString string ✔️ A lekérdezendő tárolóösszetevő tárolókapcsolati sztringje.
propertyName, propertyValue string Az opcionális támogatott tulajdonságok listája, amelyek meghatározzák a tárolóból lekért adatok értelmezését.

Támogatott tulajdonságok

Ingatlan Típus Leírás
formátum string Az adatformátum. Ha nincs meghatározva, megkísérli észlelni az adatformátumot a fájlkiterjesztésből. Az alapértelmezett érték a CSV. A betöltési adatformátumok támogatottak.
ignoreFirstRecord bool Ha trueértékre van állítva, a rendszer minden fájl első rekordját figyelmen kívül hagyja. Ez a tulajdonság akkor hasznos, ha CSV-fájlokat kérdez le fejlécekkel.
ingestionMapping string Azt jelzi, hogyan képezheti le az adatokat a forrásfájlból az operátor eredményhalmazának tényleges oszlopaihoz. Lásd: adatleképezések.

Jegyzet

Ez az operátor nem fogad el folyamatbemenetet.

A standard lekérdezési korlátok külső adat lekérdezésekre is vonatkoznak.

Visszatér

A externaldata operátor egy adattáblát ad vissza az adott sémából, amelynek adatait a megadott tárolási összetevőből elemezte a tárkapcsolati sztring.

Példák

A példák egy külső tárfájlban lévő adatokat kérdeznek le.

Az Azure Blob Storage-ban tárolt felhasználói azonosítók listájának lekérése

Az alábbi példa bemutatja, hogyan keresheti meg az összes olyan rekordot egy táblában, amelynek UserID oszlopa egy ismert azonosítókészletbe tartozik, amely egy külső tárolófájlban található (soronként egy). Mivel az adatformátum nincs megadva, az észlelt adatformátum 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
    ]))
| ...

Több adatfájl lekérdezése

Az alábbi példa több külső tárolóban tárolt adatfájlt is lekérdez.

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

A fenti példa egy gyors módszer több adatfájl lekérdezésére külső tábladefiniálása nélkül.

Jegyzet

Az externaldata operátor nem ismeri fel az adatparticionálást.

Hierarchikus adatformátumok lekérdezése

A hierarchikus adatformátum (például JSON, Parquet, Avrovagy ORC) lekérdezéséhez ingestionMapping kell megadni az operátor tulajdonságai között. Ebben a példában egy JSON-fájl van tárolva az Azure Blob Storage-ban a következő tartalommal:

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

A fájl externaldata operátorral való lekérdezéséhez adatleképezést kell megadni. A leképezés meghatározza, hogyan képezhet le JSON-mezőket az operátor eredményhalmazának oszlopaihoz:

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

A MultiJSON formátum azért használatos itt, mert az egyes JSON-rekordok több sorba vannak osztva.

További információ a leképezési szintaxisról: adatleképezések.