Compartilhar via


Plug-in infer_storage_schema

Este plugin infere o esquema de dados externos e o retorna como cadeia de caracteres de esquema CSL. A cadeia de caracteres pode ser usada ao criar tabelas externas. O plugin é 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 acesso ao armazenamento. Dependendo do método de autorização, talvez seja necessário conceder permissões à entidade de segurança no armazenamento externo para executar a inferência do esquema.

A tabela a seguir lista os métodos de autenticação com suporte e quaisquer 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 Esse método de autenticação não é suportado no Gen1.
Token de acesso do Microsoft Entra
Chave de acesso da conta de armazenamento Esse método de autenticação não é suportado 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 conjunto de propriedades especificando as propriedades da solicitação.

Propriedades suportadas da solicitação

Nome Digitar Obrigatória 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 suportados.
FileExtension string Se especificado, 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 especificado, a função verificará apenas os arquivos que começarem 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.

Devoluções

O infer_storage_schema plug-in retorna uma única tabela de resultados contendo uma única linha/coluna contendo a cadeia de caracteres do esquema CSL.

Observação

  • As chaves secretas de 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 'todos' é uma operação muito "cara", pois implica a leitura de todos os artefatos encontrados e a fusão de seu esquema.
  • Alguns tipos retornados podem não ser os reais como resultado de uma suposição de tipo errada (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 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'
)