Definición
La etapa $emit especifica una conexión en el Registro de Conexiones a la que emitir mensajes. Se admiten los siguientes tipos de conexión:
Apache Kafka broker
MongoDB colección de series de tiempo
AWS Kinesis flujo de datos
AWS S3 cubeta
Almacenamiento de blobs de Azure
Ubicación
$emit debe ser la última etapa de cualquier pipeline en la que aparezca. Solo se puede utilizar una etapa $emit por pipeline.
Sintaxis
Apache Kafka Broker
Para guardar datos procesados en un broker de Apache Kafka, utiliza la etapa de pipeline $emit con el siguiente formulario prototipo:
{ "$emit": { "connectionName": "<registered-connection>", "topic": "<target-topic>" | <expression>, "schemaRegistry": { "connectionName": "<schema-registry-name>", "valueSchema": { type: "<schema-type>", schema: <schema-name>, options: { subjectNameStrategy: "<topic-name-strategy>", autoRegisterSchemas: true } } }, "config": { "acks": <number-of-acknowledgements>, "compression_type": "<compression-type>", "dateFormat": "default" | "ISO8601", "headers": "<expression>", "key": "<key-string>" | { key-document }, "keyFormat": "<serialization-type>", "outputFormat": "basicJson" | "canonicalJson" | "relaxedJson", "tombstoneWhen": <expression> } } }
La etapa $emit procesa un documento con los siguientes campos:
Campo | Tipo | Necesidad | Descripción | |||||
|---|---|---|---|---|---|---|---|---|
| string | Requerido | Nombre, tal como aparece en el Registro de Conexiones, de la conexión desde la cual se ingieren datos. | |||||
| string o expresión | Requerido | Nombre del tema de Apache Kafka al que emitir los mensajes. | |||||
| Documento | Opcional | Documento que permite el uso de un Registro de Esquemas para apoyar la escritura en un formato serializado Avro fuente. Para habilitar esta funcionalidad, debe crear una conexión con el Registro de esquemas. | |||||
| string | Condicional | Nombre de la conexión del Registro de esquemas que se utilizará para la deserialización de Avro. | |||||
| documento | expresión | Condicional | Documento que define las propiedades de su esquema de serialización, o una expresión que se evalúe como tal. | |||||
| string | Condicional | El tipo de serialización para el que se utilizará el registro de esquema. Atlas Stream Processing actualmente admite la serialización | |||||
| Documento | Condicional | Documento que define tu Declaración de Esquema. | |||||
| Documento | Opcional | Documento que define los parámetros de configuración opcionales para la conexión de tu registro de esquema. | |||||
| booleano | Opcional | Alternar para determinar si se deben registrar automáticamente los esquemas al procesar documentos con esquemas no reconocidos. Si se establece en falso, los documentos con esquemas no reconocidos son enviados a la fila de letra muerta. Se establece por defecto en | |||||
| string | Condicional | Método para determinar el nombre del sujeto de los esquemas registrados automáticamente. Debe ser uno de los siguientes:
Por defecto es | |||||
| Documento | Opcional | Documento que contiene campos que sobrescriben diversos valores por defecto. | |||||
| Int | Opcional | Número de reconocimientos requeridos del clúster Apache Kafka para una operación El valor por defecto es
| |||||
| string | Opcional | Tipo de compresión para todos los datos generados por el productor. La configuración por defecto es ninguna (es decir, sin compresión). Los valores válidos son:
La compresión se utiliza para lotes completos de datos, por lo que la eficacia del agrupamiento impacta en la relación de compresión; más agrupamiento resulta en una mejor compresión. | |||||
| string | Opcional | Formato de fecha para el valor de fecha. Los valores válidos son:
Por ejemplo: Considera la siguiente entrada. Si Si | |||||
| expresión | Opcional | Encabezados para añadir al mensaje de salida. La expresión debe evaluarse ya sea a un objeto o un arreglo. Si la expresión se evalúa como un objeto, Atlas Stream Processing construye un encabezado a partir de cada par clave-valor de ese objeto, donde la clave es el nombre del encabezado y el valor es el valor del encabezado. Si la expresión se evalúa como un arreglo, debe tener la forma de un arreglo de objetos de pares clave-valor. Por ejemplo: Atlas Stream Processing construye un encabezado a partir de cada objeto del arreglo, donde la clave es el nombre del encabezado y el valor es el valor del encabezado. Atlas Stream Processing admite los valores de encabezado de los siguientes tipos:
| |||||
| objeto | string | expresión | Opcional | Expresión que evalúa a una Apache Kafka clave de mensaje. Si especificas | |||||
| string | Condicional | Tipo de datos utilizado para serializar datos clave de Apache Kafka. Debe ser uno de los siguientes valores:
Por defecto será | |||||
| string | Opcional | Formato JSON a usar al emitir mensajes a Apache Kafka. Debe ser uno de los siguientes valores:
Se establece por defecto en Para obtener más información, consulta JSON básico. | |||||
| expresión | Opcional | Expresión que determina cuándo emitir Si la expresión no puede evaluarse como un valor booleano, o no puede evaluarse, Atlas Stream Processing escribe el documento en la DLQ. Esta configuración se puede utilizar para habilitar la compactación de temas si se proporcionan valores de |
Atlas colección de series de tiempo
Para guardar datos procesados en una colección de series de tiempo de Atlas, utiliza la etapa de pipeline $emit con el siguiente formulario prototipo:
{ "$emit": { "connectionName": "<registered-connection>", "db": "<target-db>" | <expression>, "coll": "<target-coll>" | <expression>, "parallelism": <number>, "partitionBy": <expression>, "timeseries": { <options> } } }
La etapa $emit procesa un documento con los siguientes campos:
Campo | Tipo | Necesidad | Descripción |
|---|---|---|---|
| string | Requerido | Nombre, tal como aparece en el Registro de Conexiones, de la conexión desde la cual se ingieren datos. |
| string | expresión | Requerido | Nombre de, o expresión que resuelve a, la base de datos de Atlas que contiene la colección de series de tiempo objetivo. |
| string | expresión | Requerido | Nombre de o expresión que se resuelve en la colección de series de tiempo Atlas a la que guardar. |
| entero | Opcional | Número de hilos de escritura interna que utiliza el operador de almacenamiento en serie temporal para escribir datos en la colección de series de tiempo. Esto mejora el rendimiento para cargas de trabajo de alto volumen al distribuir las operaciones de escritura entre múltiples hilos. Por defecto |
| expresión | Opcional | Expresión que determina cómo se dividen los documentos entre los hilos de guardar cuando Si |
| Documento | Requerido | Documento que define los campos de serie de tiempo de la colección. |
Nota
El tamaño máximo para documentos dentro de una colección de series de tiempo es 4 MB. Para obtener más información, consulta Limitaciones de la colección de series de tiempo.
Importante
Requisitos de expresión dinámica
Al utilizar expresiones para los campos db o coll, debe especificar la opción timeField en la configuración timeseries. Esto garantiza que Atlas Stream Processing pueda crear correctamente colecciones de series temporales cuando la colección de destino no existe.
Por ejemplo:
{ "$emit": { "connectionName": "atlas1", "db": "$targetDatabase", "coll": "$targetCollection", "timeseries": { "timeField": "timestamp" } } }
AWS Kinesis
Atlas Stream Processing admite la creación de conexiones Private Link con flujos AWS Kinesis. Para obtener más información, consulte Agregar una conexión privada de Kinesis.
Para guardar datos procesados en AWS Kinesis, use la etapa de pipeline $emit con el siguiente formulario prototipo:
{ "$emit": { "connectionName": "<registered-connection>", "stream": "<stream-name>", "region": "<aws-region>", "partitionKey": "<key>" | <field> | <expression> "config": { "outputFormat": "basicJson" | "canonicalJson" | "relaxedJson", "dateFormat": "default" | "ISO8601", } } }
La etapa $emit procesa un documento con los siguientes campos:
Campo | Tipo | Necesidad | Descripción | |||
|---|---|---|---|---|---|---|
| string | Requerido | Nombre, tal como aparece en el Registro de Conexiones, de la conexión desde la cual se ingieren datos. | |||
| string | Requerido | Nombre del flujo de datos de Kinesis al que conectarse. | |||
| string | Opcional | Región en la que opera el Kinesis Data Stream. AWS admite múltiples flujos con el mismo nombre, cada uno en una región distinta. Este parámetro permite que Atlas Stream Processing diferencie entre tales flujos. | |||
| Documento | Opcional | Documento que contiene campos que sobrescriben diversos valores por defecto. | |||
| string | Opcional | Formato JSON a utilizar al emitir mensajes a Kinesis. Debe ser uno de los siguientes valores:
Se establece por defecto en Para obtener más información, consulta JSON básico. | |||
| string | Opcional | Formato de fecha para el valor de fecha. Los valores válidos son:
Por ejemplo: Considera la siguiente entrada. Si Si |
AWS S3
Para guardar datos procesados en una conexión de sumidero de buckets de AWS S3, utilizar la etapa del pipeline $emit con el siguiente formato de prototipo:
{ "$emit": { "connectionName": "<registered-connection>", "bucket": "<target-bucket>" | <expression>, "region": "<target-region>", "path": "<key-prefix>" | <expression>, "parallelism": <number>, "partitionBy": <expression>, "config": { "writeOptions": { "count": <doc-count>, "bytes": <threshold>, "interval": { "size": <unit-count>, "unit": "<time-denomination>" } }, "delimiter": "<delimiter>", "outputFormat": "basicJson" | "canonicalJson" | "relaxedJson", "dateFormat": "default" | "ISO8601", "compression": "gzip" | "snappy", "compressionLevel": <level> } } }
La etapa $emit procesa un documento con los siguientes campos:
Campo | Tipo | Necesidad | Descripción | |||
|---|---|---|---|---|---|---|
| string | Requerido | Nombre, tal como aparece en el Registro de Conexiones, de la conexión a la que se va a guardar datos. | |||
| string | Requerido | Nombre del bucket S3 al que se guardarán los datos. | |||
| string | Opcional | Nombre de la región AWS en la que se encuentra el bucket de destino. Si hospedas tu espacio de trabajo de procesamiento de streams en una región AWS, este parámetro será predeterminado a esa región. De lo contrario, por defecto se utilizará la región AWS más cercana a la región host de tu espacio de trabajo de procesamiento de streams. | |||
| string | expresión | Requerido | Prefijo de la clave de los objetos escritos en el bucket S3. Debe ser una cadena literal prefijo o una expresión que evalúe a una string. | |||
| entero | Opcional | Número de hilos internos de guardar que el operador sink S3 utiliza para guardar datos a S3. Esto mejora el rendimiento para cargas de trabajo de alto volumen al distribuir las operaciones de escritura entre múltiples hilos. Por defecto | |||
| expresión | Opcional | Expresión que determina cómo se dividen los documentos entre los hilos de guardar cuando Si | |||
| Documento | Opcional | Documento que contiene parámetros adicionales que anulan varios valores por defecto. | |||
| Documento | Opcional | Documento que contiene parámetros adicionales que rigen el comportamiento de guardar. Estos parámetros desencadenan un comportamiento de escritura según el umbral que se cumpla primero. Por ejemplo, si los documentos ingeridos alcanzan el umbral de | |||
| entero | Opcional | Número de documentos a agrupar en cada archivo escrito en S3. | |||
| entero | Opcional | Especifica el número mínimo de bytes que se deben acumular antes de que se escriba un archivo en S3. El recuento de bytes está determinado por el tamaño de los documentos BSON ingeridos por el pipeline, no por el tamaño del archivo de salida final. El valor predeterminado es 32 MB. | |||
| Documento | Opcional | Especifica un temporizador para la escritura masiva de documentos como una combinación de Por defecto 1 minuto. No puedes establecer el | |||
| entero | Condicional | El número de unidades especificadas por Por defecto será | |||
| string | Condicional | La denominación de tiempo en la que contabilizar el temporizador de guardado masivo. Este parámetro admite los siguientes valores:
Por defecto será | |||
| string | Opcional | Delimitador entre cada entrada en el archivo emitido. Se establece por defecto en | |||
| string | Opcional | Especifica el formato de salida del JSON escrito en S3. Debe ser uno de los siguientes valores:
El valor por defecto es " Para obtener más información, consulta JSON básico y JSON extendido. | |||
| string | Opcional | Formato de fecha para el valor de fecha. Los valores válidos son:
Por ejemplo, si agregas el siguiente registro a la pipeline: entonces si Si | |||
| string | Opcional | Nombre del algoritmo de compresión a utilizar. Debe ser uno de los siguientes valores:
| |||
| string | Condicional | Nivel de compresión que se aplicará al mensaje generado. Admite valores Se establece por defecto en Este parámetro es obligatorio y está limitado a |
Almacenamiento deblobs de Azure
Para guardar datos procesados en Azure Blob almacenamiento, use la $emit pipeline con el siguiente formulario de prototipo:
{ "$emit": { "connectionName": "<registered-connection>", "container": "<storage-container>", "path": "<prefix-key>" | <expression>, "config": { "dateFormat": "default" | "ISO8601", "compression": "none" | "gzip" | "snappy", "compressionLevel": [1-9], "outputFormat": "relaxedJson"| "canonicalJson" | "basicJson", "delimiter": "<delimiter>", "writeOptions": { "count": <int>, "interval": { "size": <int>, "unit": "ms" | "second" | "minute" | "hour" | "day" }, "bytes": <int> }, "parallelism": <int>, "partitionBy": "<key>" | expression } } }
La etapa $emit procesa un documento con los siguientes campos:
Campo | Tipo | Necesidad | Descripción | |||
|---|---|---|---|---|---|---|
| string | Requerido | Nombre, tal como aparece en el Registro de Conexiones, de la conexión en la que se guardarán datos. | |||
| string | Requerido | Contenedor de almacenamiento en el que guardar blobs. | |||
| string | expresión | Requerido | Prefijo de la clave de los objetos escritos en Azure Blob Storage. Debe ser un string literal o una expresión que se evalúe como un string. | |||
| Documento | Opcional | Documento que contiene parámetros adicionales que anulan varios valores por defecto. | |||
| string | Opcional | Formato de fecha para el valor de fecha. Los valores válidos son:
Por ejemplo, si agregas el siguiente registro a la pipeline: entonces si Si | |||
| string | Opcional | Nombre del algoritmo de compresión a utilizar. Debe ser uno de los siguientes valores:
Si no especifica un valor para este campo, Atlas Stream Processing escribe los datos sin compresión. | |||
| string | Condicional | Nivel de compresión que se aplicará al mensaje generado. Admite valores Se establece por defecto en Este parámetro es obligatorio y está limitado a | |||
| string | Opcional | Especifica el formato de salida del JSON escrito en Azure Blob Storage. Debe ser uno de los siguientes valores:
Se establece por defecto en Para obtener más información, consulta JSON básico y JSON extendido. | |||
| string | Opcional | Delimitador entre cada entrada en el archivo emitido. Se establece por defecto en | |||
| Documento | Opcional | Documento que contiene parámetros adicionales que rigen el comportamiento de guardar. Estos parámetros desencadenan un comportamiento de escritura según el umbral que se cumpla primero. Por ejemplo, si los documentos incorporados alcanzan el umbral de | |||
| entero | Opcional | Número de documentos a agrupar en cada archivo escrito en Azure Blob Storage. | |||
| entero | Opcional | Especifica el número mínimo de bytes que se deben acumular antes de guardar un archivo en Azure Blob Storage. La cantidad de bytes se determina por el tamaño de los documentos BSON procesados en el pipeline, no por el tamaño del archivo de salida final. El valor predeterminado es 32 MB. | |||
| Documento | Opcional | Especifica un temporizador para la escritura masiva de documentos como una combinación de Por defecto 1 minuto. No puedes establecer el | |||
| entero | Condicional | El número de unidades especificado por Por defecto será | |||
| string | Condicional | La denominación de tiempo en la que contabilizar el temporizador de guardado masivo. Este parámetro admite los siguientes valores:
Por defecto será | |||
| entero | Opcional | Cantidad de subprocesos de escritura internos que Atlas Stream Processing utiliza para escribir datos en Azure Blob Storage. Esto mejora el rendimiento para cargas de trabajo de alto volumen al distribuir las operaciones de escritura en múltiples hilos. Por defecto | |||
| string | expresión | Opcional | String o expresión que determina cómo Atlas Stream Processing particiona los documentos entre los hilos de guardado cuando Si |
Google Cloud Pub/Sub
Para guardar datos procesados en Google Cloud Pub/Sub, utiliza la etapa de pipeline $emit con el siguiente formulario prototipo:
{ "$emit": { "connectionName": "<registered-connection>", "topic": "<topic>" | <expression>, "projectId": "<project-id>", "region": "<pubsub-region>", "orderingKey": "<key>" | <expression>, "attributes": { "<key1>": "<value1>" | <expression>, . . . "<keyN>": "<valueN>" | <expression> }, "config": { "dateFormat": "default" | "ISO8601", "outputFormat": "relaxedJson"| "canonicalJson" | "basicJson", } } }
La etapa $emit procesa un documento con los siguientes campos:
Campo | Tipo | Necesidad | Descripción | |||
|---|---|---|---|---|---|---|
| string | Requerido | Nombre, tal como aparece en el Registro de Conexiones, de la conexión en la que se guardarán datos. | |||
| string | Requerido | ID del proyecto al que se debe publicar. | |||
| string | expresión | Requerido | Nombre del tema dentro del proyecto dado en el cual publicar mensajes. Debe ser un string o una expresión que evalúe a un string. | |||
| string | Requerido | El endpoint de ubicación al que enviar solicitudes. Para consultar las regiones disponibles, revisa la documentación de Pub/Sub. | |||
| string | expresión | Opcional | Clave en los datos publicados para ordenar la publicación del mensaje. Si estableces un Utiliza un valor de string para este campo a fin de establecer un | |||
| Documento | Opcional | Documento que define los atributos que se deben agregar a los mensajes. Los atributos adoptan la forma de pares clave-valor donde:
| |||
| Documento | Opcional | Documento que contiene parámetros adicionales que anulan varios valores por defecto. | |||
| string | Opcional | Formato de fecha para el valor de fecha. Los valores válidos son:
Por ejemplo, si agregas el siguiente registro a la pipeline: entonces si Si | |||
| string | Opcional | Especifica el formato de salida del JSON escrito en Google Cloud Pub/Sub. Debe ser uno de los siguientes valores:
Se establece por defecto en Para obtener más información, consulta JSON básico y JSON extendido. |
Basic JSON
Para facilitar la ingesta de mensajes, la etapa $emit admite la escritura de datos procesados en destinos en el formato JSON básico, que simplifica los formatos JSON extendido (canonicalJson) y JSON extendido relajado (relaxedJson). JSON básico no utiliza los contenedores JSON extendido de MongoDB y, por tanto, no conserva todos los tipos de BSON.
Se puede especificar el formato JSON básico configurando el campo config.outputFormat en "basicJson" en la etapa $emit.
La siguiente tabla proporciona ejemplos de estas simplificaciones para todos los campos afectados.
tipo de campo | relaxedJson | basicJson |
|---|---|---|
Binario |
|
|
fecha |
|
|
Decimal |
|
|
Marca de tiempo |
|
|
ObjectId |
|
|
Infinito negativo |
|
|
Infinito positivo |
|
|
Expresiones regulares |
|
|
UUID |
|
|
Comportamiento
Solo puedes guardar en una única colección de series de tiempo de Atlas por procesador de flujos. Si especificas una colección que no existe, Atlas crea la colección con los campos de serie de tiempo que especificaste. Debes especificar una base de datos existente.
Atlas Stream Processing no admite la escritura de documentos BSON de más de 125 MB usando la etapa $emit en un AWS S3 bucket.
La variante Azure Blob Storage $emit también admite la escritura en2 contenedores Azure Data Lake Storage v.
La variante $emit de GCP Pub/Sub admite la definición de valores a través de expresiones de rutas de campo tanto para el campo orderingKey como para los pares clave-valor en el campo attributes. Si hay un error en la expresión o si la expresión no se resuelve en una string, Atlas Stream Processing envía el mensaje afectado a la fila de letra muerta.
Puedes usar una expresión dinámica como el valor de los campos topic, db y coll para permitir que el procesador de flujo guarde en diferentes destinos en función de cada mensaje. La expresión debe evaluarse como una string.
Ejemplo
Tienes un flujo de eventos de transacciones que genera mensajes de la siguiente forma:
{ "customer": "Very Important Industries", "customerStatus": "VIP", "tenantId": 1, "transactionType": "subscription" } { "customer": "N. E. Buddy", "customerStatus": "employee", "tenantId": 5, "transactionType": "requisition" } { "customer": "Khan Traktor", "customerStatus": "contractor", "tenantId": 11, "transactionType": "billableHours" }
Para organizar cada uno de estos en un tema distinto de Apache Kafka, puedes guardar la siguiente etapa $emit:
{ "$emit": { "connectionName": "kafka1", "topic": "$customerStatus" } }
Esta $emit etapa:
Guarda el mensaje
Very Important Industriesen un tema llamadoVIP.Guarda el mensaje
N. E. Buddyen un tema llamadoemployee.Guarda el mensaje
Khan Traktoren un tema llamadocontractor.
Para obtener más información sobre las expresiones dinámicas, consulta operadores de expresiones.
Si se especifica un tema que no existe aún, Apache Kafka crea automáticamente el tema cuando recibe el primer mensaje que lo dirige.
Si se especifica un tema con una expresión dinámica, pero Atlas Stream Processing no puede evaluar la expresión para un mensaje dado, Atlas Stream Processing envía ese mensaje a la fila de letra muerta si está configurada y procesa los siguientes mensajes. Si no se configura una fila de letra muerta, entonces Atlas Stream Processing omite el mensaje por completo y procesa los mensajes siguientes.
Ejemplos
Una fuente de datos de transmisión genera informes meteorológicos detallados desde varias ubicaciones, cumpliendo con el esquema del Conjunto de Datos Meteorológicos de Muestra. La siguiente agregación tiene tres etapas:
La etapa
$sourceestablece una conexión con el Apache Kafka broker que recopila estos informes en un tema denominadomy_weatherdata, exponiendo cada registro a medida que se procesa a las siguientes etapas de agregación. Este etapa también reemplaza el nombre del campo de marca de tiempo que proyecta, estableciéndolo eningestionTime.La etapa
$matchexcluye documentos que tienen unairTemperature.valuede mayor o igual a30.0y pasa los documentos con unairTemperature.valuemenor que30.0a la siguiente etapa.La etapa
$addFieldsenriquece el flujo con metadatos.La etapa
$emitescribe la salida en un tema denominadostreama través de la conexión del broker de KafkaweatherStreamOutput.
{ "$source": { "connectionName": "sample_weatherdata", "topic": "my_weatherdata", "tsFieldName": "ingestionTime" } }, { "$match": { "airTemperature.value": { "$lt": 30 } } }, { "$addFields": { "processorMetadata": { "$meta": "stream" } } }, { "$emit": { "connectionName": "weatherStreamOutput", "topic": "stream" } }
Los documentos del tema stream toman la siguiente forma:
{ "st": "x+34700+119500", "position": { "type": "Point", "coordinates": [122.8, 116.1] }, "elevation": 9999, "callLetters": "6ZCM", "qualityControlProcess": "V020", "dataSource": "4", "type": "SAO", "airTemperature": { "value": 6.7, "quality": "9" }, "dewPoint": { "value": 14.1, "quality": "1" }, "pressure": { "value": 1022.2, "quality": "1" }, "wind": { "direction": { "angle": 200, "quality": "9" }, "type": "C", "speed": { "rate": 35, "quality": "1" } }, "visibility": { "distance": { "value": 700, "quality": "1" }, "variability": { "value": "N", "quality": "1" } }, "skyCondition": { "ceilingHeight": { "value": 1800, "quality": "9", "determination": "9" }, "cavok": "N" }, "sections": ["AA1", "AG1", "UG1", "SA1", "MW1"], "precipitationEstimatedObservation": { "discrepancy": "0", "estimatedWaterDepth": 999 }, "atmosphericPressureChange": { "tendency": { "code": "4", "quality": "1" }, "quantity3Hours": { "value": 3.8, "quality": "1" }, "quantity24Hours": { "value": 99.9, "quality": "9" } }, "seaSurfaceTemperature": { "value": 9.7, "quality": "9" }, "waveMeasurement": { "method": "M", "waves": { "period": 8, "height": 3, "quality": "9" }, "seaState": { "code": "00", "quality": "9" } }, "pastWeatherObservationManual": { "atmosphericCondition": { "value": "6", "quality": "1" }, "period": { "value": 3, "quality": "1" } }, "skyConditionObservation": { "totalCoverage": { "value": "02", "opaque": "99", "quality": "9" }, "lowestCloudCoverage": { "value": "00", "quality": "9" }, "lowCloudGenus": { "value": "00", "quality": "1" }, "lowestCloudBaseHeight": { "value": 1750, "quality": "1" }, "midCloudGenus": { "value": "99", "quality": "1" }, "highCloudGenus": { "value": "00", "quality": "1" } }, "presentWeatherObservationManual": { "condition": "52", "quality": "1" }, "atmosphericPressureObservation": { "altimeterSetting": { "value": 1015.9, "quality": "9" }, "stationPressure": { "value": 1026, "quality": "1" } }, "skyCoverLayer": { "coverage": { "value": "08", "quality": "1" }, "baseHeight": { "value": 2700, "quality": "9" }, "cloudType": { "value": "99", "quality": "9" } }, "liquidPrecipitation": { "period": 12, "depth": 20, "condition": "9", "quality": "9" }, "extremeAirTemperature": { "period": 99.9, "code": "N", "value": -30.4, "quantity": "1" }, "ingestionTime": { "$date": "2024-09-26T17:34:41.843Z" } }
Nota
Lo anterior es un ejemplo representativo. Los datos en transmisión no son estáticos, y cada usuario ve documentos distintos.