Asignaciones de ingesta

Las asignaciones de ingesta se usan durante la ingesta para asignar datos entrantes a columnas dentro de tablas.

Data Explorer admite diferentes tipos de asignaciones, tanto orientadas a filas (CSV, JSON, AVRO y W3CLOGFILE) como orientadas a columnas (Parquet y ORC).

Las asignaciones de ingesta se pueden crear previamente y se puede hacer referencia desde el comando ingest mediante ingestionMappingReference parámetros. Aunque, la ingesta es posible sin especificar una asignación. Para más información, consulte Asignación de identidades.

Cada elemento de la lista de asignación se construye a partir de tres campos:

Propiedad Obligatorio Descripción
Columna ✔️ Nombre de columna de destino en la tabla.
Datatype Tipo de datos con el que se va a crear la columna asignada si aún no existe en la tabla.
Propiedades Contenedor de propiedades que contiene propiedades específicas para cada asignación, tal como se describe en cada página de tipo de asignación específica.

Importante

Para la ingesta en cola:

  • Si la tabla a la que se hace referencia en la asignación no existe en la base de datos, se crea automáticamente, dado que se especifican tipos de datos válidos para todas las columnas.
  • Si una columna a la que se hace referencia en la asignación no existe en la tabla, se agrega automáticamente a la tabla como la última columna en la primera vez que se ingieren datos para esa columna, dado que se especifica un tipo de datos válido para la columna. Para agregar nuevas columnas a una asignación, use el comando .alter ingestion mapping.
  • Los datos se procesan por lotes mediante propiedades de ingesta. Las propiedades de asignación de ingesta más distintas usadas, como los distintos valores de ConstValue, más fragmentados se convierten en la ingesta, lo que puede provocar una degradación del rendimiento.

Tipos de asignación admitidos

En la tabla siguiente se definen los tipos de asignación que se usarán al ingerir o consultar datos externos de un formato específico.

Formato de datos Tipo de asignación
CSV Asignación de CSV
TSV Asignación de CSV
TSVe Asignación de CSV
PSV Asignación de CSV
SCSV Asignación de CSV
SOHsv Asignación de CSV
TXT Asignación de CSV
RAW Asignación de CSV
JSON Asignación de JSON
AVRO Asignación de AVRO
APACHEAVRO Asignación de AVRO
Parquet Asignación de Parquet
ORC Asignación orc
W3CLOGFILE Asignación de W3CLOGFILE

Asignación de identidades

La ingesta es posible sin especificar ingestionMapping ni ingestionMappingReference propiedades. Los datos se asignarán mediante una asignación de datos de identidad derivada del esquema de la tabla. El esquema de tabla seguirá siendo el mismo. format se debe especificar la propiedad . Consulte los formatos de ingesta.

Tipo de formato Formato Lógica de asignación
Formatos de datos tabulares con un orden definido de columnas, como formatos separados por delimitadores o de una sola línea. CSV, TSV, TSVe, PSV, SCSV, Txt, SOHsv, Raw Todas las columnas de tabla se asignan en su orden respectivo a las columnas de datos en orden en que aparecen en el origen de datos. El tipo de datos de columna se toma del esquema de tabla.
Da formato a columnas o registros con nombre con campos con nombre. JSON, Parquet, Avro, ApacheAvro, Orc, W3CLOGFILE Todas las columnas de tabla se asignan a columnas de datos o campos de registro con el mismo nombre (distingue mayúsculas de minúsculas). El tipo de datos de columna se toma del esquema de tabla.

Advertencia

Cualquier discrepancia entre el esquema de la tabla y la estructura de los datos, como los tipos de datos de columna o campo, los nombres de columna o campo o su número pueden dar lugar a datos vacíos o incorrectos ingeridos.

Asignación de transformaciones

Algunas de las asignaciones de formato de datos (Parquet, JSON y AVRO) admiten transformaciones sencillas y útiles en tiempo de ingesta. Cuando el escenario requiere un procesamiento más complejo en el momento de la ingesta, use la directiva de actualización, que permite definir el procesamiento ligero mediante la expresión KQL.

Transformación dependiente de la ruta de acceso Descripción Condiciones
PropertyBagArrayToDictionary Transforma la matriz JSON de propiedades, como {events:[{"n1":"v1"},{"n2":"v2"}]}, para el diccionario y la serializa en un documento JSON válido, como {"n1":"v1","n2":"v2"}. Disponible para JSONlos tipos de asignación , ParquetAVRO y ORC .
SourceLocation Nombre del artefacto de almacenamiento que proporcionó los datos, cadena de tipo (por ejemplo, el campo "BaseUri" del blob). Disponible para CSVlos tipos de asignación , JSONParquet, AVRO, y ORCW3CLOGFILE .
SourceLineNumber Desplazamiento con respecto a ese artefacto de almacenamiento, escriba long (a partir de "1" e incrementándose por registro nuevo). Disponible en: JSON, Parquet, AVROORC y W3CLOGFILE tipos de asignación.
DateTimeFromUnixSeconds Convierte el número que representa la hora unix (segundos desde 1970-01-01) a la cadena datetime UTC. Disponible para JSONlos tipos de asignación , ParquetAVRO y ORC .
DateTimeFromUnixMilliseconds Convierte el número que representa la hora unix (milisegundos desde 1970-01-01) a la cadena datetime UTC. Disponible para JSONlos tipos de asignación , ParquetAVRO y ORC .
DateTimeFromUnixMicroseconds Convierte el número que representa la hora unix (microsegundos desde 1970-01-01) a la cadena datetime UTC. Disponible para JSONlos tipos de asignación , ParquetAVRO y ORC .
DateTimeFromUnixNanoseconds Convierte el número que representa la hora unix (nanosegundos desde 1970-01-01) a la cadena datetime UTC. Disponible para JSONlos tipos de asignación , ParquetAVRO y ORC .
DropMappedFields Asigna un objeto del documento JSON a una columna y quita los campos anidados a los que ya hacen referencia otras asignaciones de columnas. Disponible para JSONlos tipos de asignación , ParquetAVRO y ORC .
BytesAsBase64 Trata los datos como matriz de bytes y los convierte en una cadena codificada en base64. Disponible para el AVRO tipo de asignación. Para ApacheAvro el formato, el tipo de esquema del campo de datos asignado debe ser bytes o fixed tipo Avro. Para Avro el formato, el campo debe ser una matriz que contenga valores de bytes del intervalo [0-255]. null se ingiere si los datos no representan una matriz de bytes válida.

Ejemplos de transformación de asignación

DropMappedFields Transformación:

Dado el siguiente contenido JSON:

{
    "Time": "2012-01-15T10:45",
    "Props": {
        "EventName": "CustomEvent",
        "Revenue": 0.456
    }
}

La siguiente asignación de datos asigna todo el Props objeto a una columna Props dinámica mientras se excluyen las columnas ya asignadas (Props.EventName ya está asignada a la columna EventName, por lo que se excluye).

[
    { "Column": "Time", "Properties": { "Path": "$.Time" } },
    { "Column": "EventName", "Properties": { "Path": "$.Props.EventName" } },
    { "Column": "Props", "Properties": { "Path": "$.Props", "Transform":"DropMappedFields" } },
]

Los datos ingeridos tienen el siguiente aspecto:

Time EventName Propiedades
2012-01-15T10:45 CustomEvent {"Revenue": 0.456}

BytesAsBase64 Transformación

Dado el siguiente contenido del archivo AVRO:

{
    "Time": "2012-01-15T10:45",
    "Props": {
        "id": [227,131,34,92,28,91,65,72,134,138,9,133,51,45,104,52]
    }
}

La siguiente asignación de datos asigna la columna id dos veces, con y sin la transformación .

[
    { "Column": "Id", "Properties": { "Path": "$.props.id" } },
    { "Column": "Base64EncodedId", "Properties": { "Path": "$.props.id", "Transform":"BytesAsBase64" } },
]

Los datos ingeridos tienen el siguiente aspecto:

Identificador Base64EncodedId
[227,131,34,92,28,91,65,72,134,138,9,133,51,45,104,52] 44MiXBxbQUiGigmFMy1oNA==