Udostępnij za pośrednictwem


infer_storage_schema, wtyczka

Ta wtyczka wywnioskuje schemat danych zewnętrznych i zwraca go jako ciąg schematu CSL. Ciąg może być używany podczas tworzenia tabel zewnętrznych. Wtyczka jest wywoływana z operatorem evaluate .

Uwierzytelnianie i autoryzacja

We właściwościach żądania należy określić parametry połączenia magazynu, aby uzyskać dostęp. Każdy parametry połączenia magazynu określa metodę autoryzacji, która ma być używana do uzyskiwania dostępu do magazynu. W zależności od metody autoryzacji podmiot zabezpieczeń może wymagać udzielenia uprawnień do magazynu zewnętrznego w celu wykonania wnioskowania schematu.

W poniższej tabeli wymieniono obsługiwane metody uwierzytelniania i wszelkie wymagane uprawnienia według typu magazynu.

Metoda uwierzytelniania Azure Blob Storage / Data Lake Storage Gen2 Data Lake Storage Gen1
Personifikacja Czytelnik danych obiektu BLOB usługi Storage Czytelnik
Token dostępu współdzielonego (SAS) Lista i odczyt Ta metoda uwierzytelniania nie jest obsługiwana w usłudze Gen1.
Token dostępu firmy Microsoft Entra
Klucz dostępu do konta magazynu Ta metoda uwierzytelniania nie jest obsługiwana w usłudze Gen1.

Składnia

evaluateinfer_storage_schema( Opcje )

Dowiedz się więcej na temat konwencji składni.

Parametry

Nazwisko Type Wymagania opis
Opcje dynamic ✔️ Torba właściwości określająca właściwości żądania.

Obsługiwane właściwości żądania

Nazwisko Type Wymagania opis
StorageContainers dynamic ✔️ Tablica parametry połączenia magazynu reprezentująca identyfikator URI prefiksu dla przechowywanych artefaktów danych.
DataFormat string ✔️ Jeden z obsługiwanych formatów danych.
Rozszerzenie pliku string Jeśli zostanie określony, funkcja skanuje tylko pliki kończące się tym rozszerzeniem pliku. Określenie rozszerzenia może przyspieszyć proces lub wyeliminować problemy z odczytywaniem danych.
FileNamePrefix string Jeśli zostanie określony, funkcja skanuje tylko pliki rozpoczynające się od tego prefiksu. Określenie prefiksu może przyspieszyć proces.
Tryb string Strategia wnioskowania schematu. Wartość: any, last, all. Funkcja wywnioskuje schemat danych z pierwszego znalezionego pliku, z ostatniego zapisanego pliku lub ze wszystkich plików odpowiednio. Domyślna wartość to last.
WnioskowanieOpcje dynamic Więcej opcji wnioskowania. Prawidłowe opcje: UseFirstRowAsHeader dla rozdzielonych formatów plików. Przykład: 'InferenceOptions': {'UseFirstRowAsHeader': true}.

Zwraca

Wtyczka infer_storage_schema zwraca pojedynczą tabelę wyników zawierającą pojedynczy wiersz/kolumnę zawierającą ciąg schematu CSL.

Uwaga

  • Klucze tajne identyfikatora URI kontenera magazynu muszą mieć uprawnienia dla listy oprócz opcji Odczyt.
  • Strategia wnioskowania schematu "wszystko" jest bardzo "kosztowną" operacją, ponieważ oznacza odczytywanie ze wszystkich znalezionych artefaktów i scalanie ich schematu.
  • Niektóre zwracane typy mogą nie być rzeczywiste w wyniku błędnego zgadywania typu (lub w wyniku procesu scalania schematu). Dlatego należy dokładnie przejrzeć wynik przed utworzeniem tabeli zewnętrznej.

Przykład

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

Wyjście

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

Użyj zwróconego schematu w definicji tabeli zewnętrznej:

.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'
)