plugin infer_storage_schema
Aplica-se a: ✅Microsoft Fabric✅Azure 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
evaluate
infer_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'
)