Delen via


operator externaldata

Van toepassing op: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel-

De operator externaldata retourneert een tabel waarvan het schema is gedefinieerd in de query zelf en waarvan de gegevens worden gelezen uit een extern opslagartefact, zoals een blob in Azure Blob Storage of een bestand in Azure Data Lake Storage.

Notitie

De operator externaldata ondersteunt:

Notitie

Gebruik de operator externaldata om kleine referentietabellen van maximaal 100 MB op te halen uit een extern opslagartefact. De operator is niet ontworpen voor grote gegevensvolumes. Als u grote hoeveelheden externe gegevens wilt ophalen, wordt u aangeraden de externe gegevens op te nemen in Log Analytics als aangepaste logboeken. Deze operator wordt niet ondersteund wanneer het openbare eindpunt van het opslagartefact zich achter een firewall bevindt.

Syntaxis

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

Meer informatie over syntaxisconventies.

Parameters

Naam Type Vereist Beschrijving
columnName, columnType string ✔️ Een lijst met kolomnamen en de bijbehorende typen. In deze lijst wordt het schema van de tabel gedefinieerd.
storageConnectionString- string ✔️ Een -opslagverbindingsreeks van het opslagartefact om een query uit te voeren.
propertyName, propertyValue string Een lijst met optionele ondersteunde eigenschappen die bepaalt hoe de gegevens worden geïnterpreteerd die zijn opgehaald uit de opslag.

Ondersteunde eigenschappen

Eigenschap Type Beschrijving
formatteren string De gegevensindeling. Als dit niet is opgegeven, wordt geprobeerd de gegevensindeling te detecteren vanuit de bestandsextensie. De standaardwaarde is CSV. Alle gegevensindelingen voor gegevensopname worden ondersteund.
ignoreFirstRecord bool Als dit is ingesteld op true, wordt de eerste record in elk bestand genegeerd. Deze eigenschap is handig bij het opvragen van CSV-bestanden met headers.
opnamemapping string Hiermee wordt aangegeven hoe u gegevens uit het bronbestand toewijst aan de werkelijke kolommen in de resultatenset van de operator. Zie gegevenstoewijzingen.

Notitie

Deze operator accepteert geen pijplijninvoer.

Standard querylimieten ook van toepassing op externe gegevensquery's.

Retourneert

De externaldata-operator retourneert een gegevenstabel van het opgegeven schema waarvan de gegevens zijn geparseerd uit het opgegeven opslagartefact, aangegeven door de opslagverbindingsreeks.

Voorbeelden

In de voorbeelden worden gegevens in een extern opslagbestand opgeslagen.

Een lijst met gebruikers-id's ophalen die zijn opgeslagen in Azure Blob Storage

In het volgende voorbeeld ziet u hoe u alle records in een tabel kunt vinden waarvan de UserID kolom in een bekende set id's valt( één per regel) in een extern opslagbestand. Omdat de gegevensindeling niet is opgegeven, wordt de gedetecteerde gegevensindeling 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
    ]))
| ...

Query's uitvoeren op meerdere gegevensbestanden

In het volgende voorbeeld worden meerdere gegevensbestanden opgevraagd die zijn opgeslagen in externe opslag.

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

In het bovenstaande voorbeeld kunt u snel query's uitvoeren op meerdere gegevensbestanden zonder een externe tabelte definiëren.

Notitie

Gegevenspartitionering wordt niet herkend door de operator externaldata.

Query's uitvoeren op hiërarchische gegevensindelingen

Als u een query wilt uitvoeren op de hiërarchische gegevensindeling, zoals JSON, Parquet, Avroof ORC, moet ingestionMapping worden opgegeven in de operatoreigenschappen. In dit voorbeeld is er een JSON-bestand opgeslagen in Azure Blob Storage met de volgende inhoud:

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

Als u een query wilt uitvoeren op dit bestand met behulp van de operator externaldata, moet er een gegevenstoewijzing worden opgegeven. De toewijzing bepaalt hoe JSON-velden worden toegewezen aan de kolommen van de operatorresultatenset:

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

De MultiJSON-indeling wordt hier gebruikt omdat enkele JSON-records in meerdere regels zijn opgenomen.

Zie gegevenstoewijzingenvoor meer informatie over de syntaxis van toewijzingen.