Compartilhar via


Plug-in infer_storage_schema

Esse plug-in infere o esquema de dados externos e os retorna como cadeia de caracteres de esquema CSL. A cadeia de caracteres pode ser usada ao criar tabelas externas. O plug-in é invocado com o evaluate operador .

Autenticação e autorização

Nas propriedades da solicitação, especifique as cadeias de conexão de armazenamento a serem acessadas. Cada cadeia de conexão de armazenamento especifica o método de autorização a ser usado para acesso ao armazenamento. Dependendo do método de autorização, a entidade de segurança pode precisar receber permissões no armazenamento externo para executar a inferência de esquema.

A tabela a seguir lista os métodos de autenticação com suporte e as permissões necessárias por tipo de armazenamento.

Método de autenticação Armazenamento de Blobs do Azure/Data Lake Storage Gen2 Data Lake Storage Gen1
Representação Leitor de Dados do Blob de Armazenamento Leitor
Token DE ACESSO Compartilhado (SAS) Lista + Leitura Não há suporte para esse método de autenticação no Gen1.
Microsoft Entra token de acesso
Chave de acesso da conta de armazenamento Não há suporte para esse método de autenticação no Gen1.

Syntax

evaluateinfer_storage_schema(Opções)

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Tipo Obrigatório Descrição
Opções dynamic ✔️ Um recipiente de propriedades que especifica as propriedades da solicitação.

Propriedades com suporte da solicitação

Nome Tipo Obrigatório Descrição
StorageContainers dynamic ✔️ Uma matriz de cadeias de conexão de armazenamento que representam o URI de prefixo para artefatos de dados armazenados.
DataFormat string ✔️ Um dos formatos de dados com suporte.
FileExtension string Se especificada, a função verificará apenas os arquivos que terminam com essa extensão de arquivo. Especificar a extensão pode acelerar o processo ou eliminar problemas de leitura de dados.
FileNamePrefix string Se especificada, a função verificará apenas os arquivos que começam com esse prefixo. Especificar o prefixo pode acelerar o processo.
Modo string A estratégia de inferência de esquema. Um valor de: any, last, all. A função infere o esquema de dados do primeiro arquivo encontrado, do último arquivo gravado ou de todos os arquivos, respectivamente. O valor padrão é last.

Retornos

O infer_storage_schema plug-in retorna uma única tabela de resultados que contém uma única linha/coluna que contém a cadeia de caracteres de esquema CSL.

Observação

  • As chaves secretas do URI do contêiner de armazenamento devem ter as permissões para Lista , além de Leitura.
  • A estratégia de inferência de esquema 'all' é uma operação muito "cara", pois implica a leitura de todos os artefatos encontrados e a mesclagem de seu esquema.
  • Alguns tipos retornados podem não ser os reais como resultado de adivinhação de tipo incorreta (ou, como resultado do processo de mesclagem de esquema). É por isso que você deve examinar o resultado cuidadosamente antes de criar uma tabela externa.

Exemplo

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

Saída

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

Use o esquema retornado na definição de tabela externa:

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