Partilhar via


plugin infer_storage_schema

Aplica-se a: ✅Microsoft FabricAzure Data Explorer

Este plug-in infere o esquema de dados externos e o retorna como string de esquema CSL. A string 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, você especifica 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 acessar o 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 todas 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) Listar + Ler Não há suporte para esse método de autenticação no Gen1.
Token de acesso do Microsoft Entra
Chave de acesso da conta de armazenamento Não há suporte para esse método de autenticação no Gen1.

Sintaxe

evaluateinfer_storage_schema( Opções )

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Digitar Obrigatória Descrição
Opções dynamic ✔️ Um recipiente de propriedades especificando as propriedades da solicitação.

Propriedades com suporte da solicitação

Nome Digitar Obrigatória Descrição
Contêineres de armazenamento 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 suportados.
FileExtension string Se especificado, a função verifica 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.
Prefixo do nome do arquivo string Se especificado, a função verifica apenas 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.
Opções de inferência dynamic Mais opções de inferência. Opções válidas: UseFirstRowAsHeader para formatos de arquivo delimitados. Por exemplo, 'InferenceOptions': {'UseFirstRowAsHeader': true}.

Devoluções

O infer_storage_schema plug-in retorna uma única tabela de resultados contendo uma única linha/coluna contendo a string do 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 ler todos os artefatos encontrados e mesclar seu esquema.
  • Alguns tipos retornados podem não ser os reais como resultado de uma suposição de tipo incorreta (ou, como resultado do processo de mesclagem de esquema). É por isso que você deve revisar 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 da 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'
)