Plug-In „infer_storage_schema“

Dieses Plug-In leitet das Schema externer Daten ab und gibt es als CSL-Schemazeichenfolge zurück. Die Zeichenfolge kann beim Erstellen externer Tabellen verwendet werden. Das Plug-In wird mit dem evaluate Operator aufgerufen.

Authentifizierung und Autorisierung

In den Eigenschaften der Anforderung geben Sie Speicherverbindungszeichenfolgen für den Zugriff an. Jeder Speicher Verbindungszeichenfolge gibt die Autorisierungsmethode an, die für den Zugriff auf den Speicher verwendet werden soll. Abhängig von der Autorisierungsmethode müssen dem Prinzipal möglicherweise Berechtigungen für den externen Speicher erteilt werden, um den Schemarückschluss durchzuführen.

In der folgenden Tabelle sind die unterstützten Authentifizierungsmethoden und alle erforderlichen Berechtigungen nach Speichertyp aufgeführt.

Authentifizierungsmethode Azure Blob Storage/Data Lake Storage Gen2 Data Lake Storage Gen1
Identitätswechsel Leser von Speicherblobdaten Leser
SAS-Token (Shared Access) Liste + Lesen Diese Authentifizierungsmethode wird in Gen1 nicht unterstützt.
Microsoft Entra Zugriffstoken
Speicherkonto-Zugriffsschlüssel Diese Authentifizierungsmethode wird in Gen1 nicht unterstützt.

Syntax

evaluateinfer_storage_schema(Optionen)

Erfahren Sie mehr über Syntaxkonventionen.

Parameter

Name Typ Erforderlich BESCHREIBUNG
Optionen dynamic ✔️ Ein Eigenschaftenbehälter, der die Eigenschaften der Anforderung angibt.

Unterstützte Eigenschaften der Anforderung

Name Typ Erforderlich BESCHREIBUNG
StorageContainers dynamic ✔️ Ein Array von Speicherverbindungszeichenfolgen , die den Präfix-URI für gespeicherte Datenartefakte darstellen.
DataFormat string ✔️ Eines der unterstützten Datenformate.
FileExtension string Wenn angegeben, überprüft die Funktion nur Dateien, die mit dieser Dateierweiterung enden. Die Angabe der Erweiterung kann den Prozess beschleunigen oder Probleme beim Lesen von Daten beseitigen.
FileNamePrefix string Wenn angegeben, überprüft die Funktion nur Dateien, die mit diesem Präfix beginnen. Die Angabe des Präfixes kann den Prozess beschleunigen.
Mode string Die Schemarückschlussstrategie. Ein Wert von: any, last, all. Die Funktion leitet das Datenschema aus der ersten gefundenen Datei, aus der letzten geschriebenen Datei oder aus allen Dateien ab. Standardwert: last.

Gibt zurück

Das infer_storage_schema Plug-In gibt eine einzelne Ergebnistabelle zurück, die eine einzelne Zeile/Spalte mit einer CSL-Schemazeichenfolge enthält.

Hinweis

  • Speichercontainer-URI-Schlüssel müssen zusätzlich zu Lesen über die Berechtigungen für List verfügen.
  • Die Schemarückschlussstrategie "all" ist ein sehr "teurer" Vorgang, da sie das Lesen aller gefundenen Artefakte und das Zusammenführen ihres Schemas impliziert.
  • Einige zurückgegebene Typen sind möglicherweise nicht die tatsächlichen Typen aufgrund falscher Typschätzung (oder als Ergebnis des Schemazusammenführungsprozesses). Aus diesem Grund sollten Sie das Ergebnis sorgfältig überprüfen, bevor Sie eine externe Tabelle erstellen.

Beispiel

let options = dynamic({
  'StorageContainers': [
    h@'https://storageaccount.blob.core.windows.net/MobileEvents;secretKey'
  ],
  'FileExtension': '.parquet',
  'FileNamePrefix': 'part-',
  'DataFormat': 'parquet'
});
evaluate infer_storage_schema(options)

Ausgabe

CslSchema
app_id:string, user_id:long, event_time:datetime, country:string, city:string, device_type:string, device_vendor:string, ad_network:string, campaign:string, site_id:string, event_type:string, event_name:string, organic:string, days_from_install:int, revenue:real

Verwenden Sie das zurückgegebene Schema in der Definition einer externen Tabelle:

.create external table MobileEvents(
    app_id:string, user_id:long, event_time:datetime, country:string, city:string, device_type:string, device_vendor:string, ad_network:string, campaign:string, site_id:string, event_type:string, event_name:string, organic:string, days_from_install:int, revenue:real
)
kind=blob
partition by (dt:datetime = bin(event_time, 1d), app:string = app_id)
pathformat = ('app=' app '/dt=' datetime_pattern('yyyyMMdd', dt))
dataformat = parquet
(
    h@'https://storageaccount.blob.core.windows.net/MovileEvents;secretKey'
)