Dela via


infer_storage_schema-plugin-program

Det här plugin-programmet härleder schemat för externa data och returnerar dem som CSL-schemasträng. Strängen kan användas när du skapar externa tabeller. Plugin-programmet anropas med operatorn evaluate .

Autentisering och auktorisering

I egenskaperna för begäran anger du lagringsanslutningssträngar för åtkomst. Varje lagring anslutningssträng anger vilken auktoriseringsmetod som ska användas för åtkomst till lagringen. Beroende på auktoriseringsmetoden kan huvudkontot behöva beviljas behörigheter för den externa lagringen för att utföra schemainferensen.

I följande tabell visas de autentiseringsmetoder som stöds och eventuella behörigheter som krävs efter lagringstyp.

Autentiseringsmetod Azure Blob Storage/Data Lake Storage Gen2 Data Lake Storage Gen1
Personifiering Storage Blob Data-läsare Läsare
SAS-token (Shared Access) Lista + läs Den här autentiseringsmetoden stöds inte i Gen1.
Microsoft Entra åtkomsttoken
Åtkomstnyckel för lagringskonto Den här autentiseringsmetoden stöds inte i Gen1.

Syntax

evaluateinfer_storage_schema(Alternativ)

Läs mer om syntaxkonventioner.

Parametrar

Namn Typ Obligatorisk Beskrivning
Alternativ dynamic ✔️ En egenskapsuppsättning som anger egenskaperna för begäran.

Egenskaper som stöds för begäran

Namn Typ Obligatorisk Beskrivning
StorageContainers dynamic ✔️ En matris med anslutningssträngar för lagring som representerar prefix-URI för lagrade dataartefakter.
DataFormat string ✔️ Ett av de dataformat som stöds.
FileExtension string Om det anges genomsöker funktionen endast filer som slutar med det här filtillägget. Att ange tillägget kan påskynda processen eller eliminera dataläsningsproblem.
FileNamePrefix string Om detta anges genomsöker funktionen endast filer som börjar med det här prefixet. Om du anger prefixet kan processen påskyndas.
Läge string Strategin för schemainferens. Ett värde på: any, last, all. Funktionen härleder dataschemat från den första hittade filen, från den senast skrivna filen eller från alla filer. Standardvärdet är last.

Returer

Plugin-programmet infer_storage_schema returnerar en enda resultattabell som innehåller en enda rad/kolumn med CSL-schemasträng.

Anteckning

  • Lagringscontainerns URI-hemliga nycklar måste ha behörighet för Lista utöver Läs.
  • Schemainferensstrategin "all" är en mycket "dyr" åtgärd, eftersom det innebär att läsa från alla artefakter som hittats och slå samman deras schema.
  • Vissa returnerade typer kanske inte är de faktiska som ett resultat av fel typ gissning (eller som ett resultat av schemasammanslagningsprocessen). Därför bör du granska resultatet noggrant innan du skapar en extern tabell.

Exempel

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

Resultat

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

Använd det returnerade schemat i den externa tabelldefinitionen:

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