Asignación de JSON
Se aplica a: ✅Microsoft Fabric✅Azure Data Explorer
Use la asignación de JSON para asignar datos entrantes a columnas dentro de tablas cuando el archivo de origen de ingesta esté en formato JSON.
Cada elemento de la lista de asignación define la asignación de una columna específica. Estos elementos se construyen a partir de tres propiedades: column
, datatype
y properties
. Obtenga más información en la introducción a las asignaciones de datos.
Cada elemento de asignación JSON debe contener cualquiera de las siguientes propiedades opcionales:
Propiedad | Tipo | Descripción |
---|---|---|
Path | string |
Si el valor comienza con $ se interpreta como la ruta de acceso JSON al campo del documento JSON que se convertirá en el contenido de la columna de la tabla. La ruta de acceso JSON que indica que todo el documento es $ . Si el valor no comienza con $ se interpreta como un valor constante. Las rutas JSON con caracteres especiales deben incluir caracteres de escape, como ["Nombre de propiedad"]. Para más información, consulte la sintaxis JSONPath. |
ConstValue | string |
Valor constante que se va a usar para una columna en lugar de algún valor dentro del archivo JSON. |
Transformación | string |
Transformación que se debe aplicar en el contenido con transformaciones de asignación. |
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 no existe una columna a la que se hace referencia en la asignación 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.
Ejemplos
[
{"Column": "event_timestamp", "Properties": {"Path": "$.Timestamp"}},
{"Column": "event_name", "Properties": {"Path": "$.Event.Name"}},
{"Column": "event_type", "Properties": {"Path": "$.Event.Type"}},
{"Column": "source_uri", "Properties": {"Transform": "SourceLocation"}},
{"Column": "source_line", "Properties": {"Transform": "SourceLineNumber"}},
{"Column": "event_time", "Properties": {"Path": "$.Timestamp", "Transform": "DateTimeFromUnixMilliseconds"}},
{"Column": "ingestion_time", "Properties": {"ConstValue": "2021-01-01T10:32:00"}},
{"Column": "full_record", "Properties": {"Path": "$"}}
]
La asignación anterior se serializa como una cadena JSON cuando se proporciona como parte del .ingest
comando de administración.
.ingest into Table123 (@"source1", @"source2")
with
(
format = "json",
ingestionMapping =
```
[
{"Column": "column_a", "Properties": {"Path": "$.Obj.Property"}},
{"Column": "column_b", "Properties": {"Path": "$.Property"}},
{"Column": "custom_column", "Properties": {"Path": "$.[\'Property name with space\']"}}
]
```
)
Asignación creada previamente
Cuando la asignación se crea previamente, haga referencia a la asignación por nombre en el .ingest
comando de administración.
.ingest into Table123 (@"source1", @"source2")
with
(
format="json",
ingestionMappingReference = "Mapping_Name"
)
Asignación de identidades
Use la asignación JSON durante la ingesta sin definir un esquema de asignación (consulte asignación de identidades).
.ingest into Table123 (@"source1", @"source2")
with
(
format="json"
)
Copia de la asignación de JSON
Puede copiar la asignación JSON de una tabla existente y crear una nueva tabla con la misma asignación mediante el siguiente proceso:
Ejecute el siguiente comando en la tabla cuya asignación desea copiar:
.show table TABLENAME ingestion json mappings | extend formatted_mapping = strcat("'",replace_string(Mapping, "'", "\\'"),"'") | project formatted_mapping
Use la salida del comando anterior para crear una nueva tabla con la misma asignación:
.create table TABLENAME ingestion json mapping "TABLENAME_Mapping" RESULT_OF_ABOVE_CMD