Asignación de Parquet
Use la asignación de Parquet para asignar datos entrantes a columnas dentro de tablas cuando el archivo de origen de ingesta esté en formato Parquet.
Cada elemento de la lista de asignaciones 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 de Parquet debe contener cualquiera de las siguientes propiedades opcionales:
Propiedad | Tipo | Descripción |
---|---|---|
Campo | string |
Nombre del campo en el registro Parquet. |
Ruta de acceso | string |
Si el valor comienza por $ se interpreta como la ruta de acceso al campo del documento Parquet que se convertirá en el contenido de la columna de la tabla. La ruta de acceso que indica que todo el registro Parquet es $ . Si el valor no comienza con $ se interpreta como un valor constante. Las rutas de acceso que incluyen caracteres especiales deben 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 Parquet. |
Transformación | string |
Transformación que se debe aplicar en el contenido con transformaciones de asignación. |
Nota
El campo y la ruta de acceso son mutuamente excluyentes.
Las siguientes alternativas son equivalentes:
[
{"Column": "event_name", "Properties": {"Path": "$.EventName"}}
]
[
{"Column": "event_name", "Properties": {"Field": "EventName"}}
]
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.
Conversiones de tipo Parquet
Se proporciona compatibilidad completa para convertir tipos de datos al ingerir o consultar datos de un origen parquet.
En la tabla siguiente se proporciona una asignación de tipos de campo Parquet y los tipos de columna de tabla a los que se pueden convertir. En la primera columna se muestra el tipo Parquet y los demás muestran los tipos de columna de tabla a los que se pueden convertir.
Nota
Para los tipos DECIMAL de Parquest, el tipo físico se especifica entre paréntesis, como se indica a continuación:
- I32: INT32 (entero de 32 bits)
- I64: INT64 (entero de 64 bits)
- FLBA: matriz de bytes de longitud fija
- BA: Matriz de bytes
Tipo de Parquet | bool | int | long | real | Decimal | datetime | timespan | string | guid | dinámico |
---|---|---|---|---|---|---|---|---|---|---|
INT8 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
INT16 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
INT32 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
INT64 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT8 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT16 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT32 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT64 | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
FLOAT32 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
FLOAT64 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
BOOLEAN | ✔️ | ❌ | ❌ | ❌ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
DECIMAL (I32) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
DECIMAL (I64) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
DECIMAL (FLBA) | ❌ | ❌ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
DECIMAL (BA) | ✔️ | ❌ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
timestamp | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ | ❌ | ❌ |
DATE | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ | ❌ | ❌ |
STRING | ❌ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
UUID | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ✔️ | ❌ |
JSON | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
LISTA | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ |
MAP | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ |
STRUCT | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ |
Ejemplos
[
{"Column": "event_timestamp", "Properties": {"Path": "$.Timestamp"}},
{"Column": "event_name", "Properties": {"Path": "$.Event.Name"}},
{"Column": "event_type", "Properties": {"Path": "$.Event.Type"}},
{"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 = "parquet",
ingestionMapping =
```
[
{"Column": "column_a", "Properties": {"Path": "$.Field1.Subfield"}},
{"Column": "column_b", "Properties": {"Path": "$.[\'Field name with space\']"}},
]
```
)
Asignación creada previamente
Cuando se cree previamente la asignación, haga referencia a la asignación por nombre en el .ingest
comando de administración.
.ingest into Table123 (@"source1", @"source2")
with
(
format="parquet",
ingestionMappingReference = "Mapping_Name"
)
Asignación de identidades
Use la asignación de Parquet durante la ingesta sin definir un esquema de asignación (consulte asignación de identidades).
.ingest into Table123 (@"source1", @"source2")
with
(
format="parquet"
)
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de