Freigeben über


Externaldaten-Operator

Gilt für: ✅Microsoft Fabric

Der externaldata Operator gibt eine Tabelle zurück, deren Schema in der Abfrage selbst definiert ist und deren Daten aus einem externen Speicherartefakt gelesen werden, z. B. ein Blob in Azure Blob Storage oder eine Datei in Azure Data Lake Storage.

Note

Der externaldata-Operator unterstützt Folgendes:

Note

Der externaldata-Operator unterstützt Folgendes:

Note

Verwenden Sie den externaldata Operator, um kleine Referenztabellen von bis zu 100 MB aus einem externen Speicherartefakt abzurufen. Der Operator ist nicht für große Datenvolumes ausgelegt. Um große Mengen externer Daten abzurufen, empfehlen wir das Aufnehmen der externen Daten in Log Analytics als benutzerdefinierte Protokolle. Dieser Operator wird nicht unterstützt, wenn sich der öffentliche Endpunkt des Speicherartefaktes hinter einer Firewall befindet.

Syntax

externaldatacolumnName( [ ...] : [,)[ [ ...],]

Erfahren Sie mehr über Syntaxkonventionen.

Parameters

Name Type Required Description
columnName, columnType string ✔️ Eine Liste der Spaltennamen und deren Typen. Diese Liste definiert das Schema der Tabelle.
storageConnectionString string ✔️ Eine Speicher-Verbindungszeichenfolge des zu abfragenden Speicherartefaktes.
propertyName, propertyValue string Eine Liste optionaler unterstützter Eigenschaften , die bestimmt, wie die aus dem Speicher abgerufenen Daten interpretiert werden.

[! WARN] Stellen Sie aus Sicherheitsgründen sicher, dass keine Anmeldeinformationen durch die storageConnectionString-Eigenschaft angegeben werden. Wenn die Abfrage Anmeldeinformationen angeben muss, verwenden Sie Abfrageparameter , um die gesamte Verbindungszeichenfolge anzugeben.

Angenommen, die Abfrage enthält einen Abfrageparameter, der aufgerufen URI wird, dessen Wertpunkte bei Blob Storage sind, würde die Abfrage wie folgt aussehen:

declare query_parameters(URI:string);
externaldata(x:string)[URI]

Wenn dies nicht möglich ist (z. B. verwenden Sie einen Client, der das Festlegen von Abfrageparametern nicht unterstützt), achten Sie darauf, verschleierte Zeichenfolgenliterale zu verwenden.

Unterstützte Eigenschaften

Property Type Description
format string Das Datenformat. Wenn nicht angegeben, wird versucht, das Datenformat aus der Dateierweiterung zu erkennen. Der Standardwert ist CSV. Alle Aufnahmedatenformate werden unterstützt.
ignoreFirstRecord bool Bei Festlegung auf true, wird der erste Datensatz in jeder Datei ignoriert. Diese Eigenschaft ist hilfreich beim Abfragen von CSV-Dateien mit Headern.
ingestionMapping string Gibt an, wie Daten aus der Quelldatei den tatsächlichen Spalten im Operatorergebnissatz zugeordnet werden. Weitere Informationen finden Sie unter Data mappings (Datenzuordnungen).

Note

Dieser Operator akzeptiert keine Pipelineeingabe.

Standardabfragegrenzwerte gelten auch für externe Datenabfragen.

Returns

Der externaldata Operator gibt eine Datentabelle des angegebenen Schemas zurück, deren Daten aus dem angegebenen Speicherartefakt analysiert wurden, angegeben durch den Speicher Verbindungszeichenfolge.

Examples

Das folgende Beispiel zeigt, wie Sie alle Datensätze in einer Tabelle finden, deren UserID Spalte in einen bekannten Satz von IDs fällt( eine pro Zeile) in einer externen Speicherdatei, die in Azure Blob Storage gespeichert ist. Da das Datenformat nicht angegeben ist, ist TXTdas erkannte Datenformat .

Users
| where UserID in ((externaldata (UserID:string) [
    @"https://storageaccount.blob.core.windows.net/storagecontainer/users.txt;managed_identity=..."
    ]))
| ...

Im folgenden Beispiel werden mehrere Im externen Speicher gespeicherte Datendateien abfragen.

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

Das obige Beispiel kann als schnelle Möglichkeit zum Abfragen mehrerer Datendateien betrachtet werden, ohne eine externe Tabelle zu definieren.

Note

Die Datenpartitionierung wird vom externaldata Operator nicht erkannt.

Um das hierarchische Datenformat abzufragen, z JSON. B. , Parquet, Avro, oder ORCmuss ingestionMapping in den Operatoreigenschaften angegeben werden. In diesem Beispiel wird eine JSON-Datei in Azure Blob Storage mit den folgenden Inhalten gespeichert:

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

Um diese Datei mithilfe des externaldata Operators abzufragen, muss eine Datenzuordnung angegeben werden. Die Zuordnung bestimmt, wie JSON-Felder den Resultsetspalten des Operators zugeordnet werden:

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

Das MultiJSON Format wird hier verwendet, da einzelne JSON-Datensätze in mehrere Zeilen überspannt sind.

Weitere Informationen zur Zuordnungssyntax finden Sie unter Datenzuordnungen.