operator externaldata
Van toepassing op: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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:
- een specifieke set opslagservices, zoals vermeld onder Storage-verbindingsreeksen.
- Sas-sleutel (Shared Access Signature), toegangssleutel en verificatiemethoden voor Microsoft Entra-token. Zie Storage-verificatiemethodenvoor meer informatie.
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
, Avro
of 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.
Verwante inhoud
Zie gegevenstoewijzingenvoor meer informatie over de syntaxis van toewijzingen.