Compartir vía


Complemento infer_storage_schema

Este complemento deduce el esquema de datos externos y lo devuelve como cadena de esquema de CSL. La cadena se puede usar al crear tablas externas. El complemento se invoca con el evaluate operador .

Autenticación y autorización

En las propiedades de la solicitud, especifique los cadena de conexión de almacenamiento a los que acceder. Cada cadena de conexión de almacenamiento especifica el método de autorización que se va a usar para el acceso al almacenamiento. En función del método de autorización, es posible que sea necesario conceder permisos a la entidad de seguridad en el almacenamiento externo para realizar la inferencia de esquema.

En la tabla siguiente se enumeran los métodos de autenticación admitidos y los permisos necesarios por tipo de almacenamiento.

Método de autenticación Azure Blob Storage/Data Lake Storage Gen2 Data Lake Storage Gen1
Suplantación Lector de datos de blobs de almacenamiento Lector
Token de acceso compartido (SAS) Lista y lectura Este método de autenticación no se admite en Gen1.
Token de acceso de Microsoft Entra
Clave de acceso de la cuenta de almacenamiento Este método de autenticación no se admite en Gen1.

Sintaxis

evaluateinfer_storage_schema( Opciones )

Obtenga más información sobre las convenciones de sintaxis.

Parámetros

Nombre Type Obligatorio Descripción
Opciones dynamic ✔️ Contenedor de propiedades que especifica las propiedades de la solicitud.

Propiedades admitidas de la solicitud

Nombre Type Obligatorio Descripción
StorageContainers dynamic ✔️ Matriz de cadena de conexión de almacenamiento que representan el URI de prefijo para artefactos de datos almacenados.
DataFormat string ✔️ Uno de los formatos de datos admitidos.
FileExtension string Si se especifica, la función solo examina los archivos que terminan con esta extensión de archivo. Especificar la extensión puede acelerar el proceso o eliminar problemas de lectura de datos.
FileNamePrefix string Si se especifica, la función solo examina los archivos a partir de este prefijo. Especificar el prefijo puede acelerar el proceso.
Modo string Estrategia de inferencia de esquema. Valor de: any, last, all. La función deduce el esquema de datos del primer archivo encontrado, del último archivo escrito o de todos los archivos respectivamente. El valor predeterminado es last.
InferenceOptions dynamic Más opciones de inferencia. Opciones válidas: UseFirstRowAsHeader para formatos de archivo delimitados. Por ejemplo: 'InferenceOptions': {'UseFirstRowAsHeader': true}.

Devoluciones

El infer_storage_schema complemento devuelve una sola tabla de resultados que contiene una sola fila o columna que contiene la cadena de esquema CSL.

Nota:

  • Las claves secretas del URI del contenedor de almacenamiento deben tener los permisos para List además de Read.
  • La estrategia de inferencia de esquemas "all" es una operación muy "costosa", ya que implica la lectura de todos los artefactos encontrados y la combinación de su esquema.
  • Es posible que algunos tipos devueltos no sean los reales como resultado de una estimación de tipo incorrecta (o, como resultado del proceso de combinación de esquemas). Este es el motivo por el que debe revisar el resultado cuidadosamente antes de crear una tabla externa.

Ejemplo

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

Salida

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 el esquema devuelto en la definición de tabla 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'
)