Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los datos de referencia son un conjunto de datos finito que es estático o que cambia lentamente por naturaleza. Se usa para realizar una búsqueda o para aumentar los flujos de datos. Los datos de referencia también se conocen como una tabla de búsqueda.
Tome un escenario de IoT como ejemplo. Puede almacenar metadatos sobre los sensores, que no cambian a menudo, en los datos de referencia. Después, podría combinarlo con flujos de datos de IoT en tiempo real.
Azure Stream Analytics carga datos de referencia en memoria para lograr un procesamiento de flujos de baja latencia. Para usar datos de referencia en su tarea de Stream Analytics, normalmente usará una combinación de datos de referencia en su consulta.
Example
Puede tener una secuencia de eventos en tiempo real generada cuando los coches pasan un peaje. El tollbooth puede capturar las placas de licencia en tiempo real. Esos datos se pueden combinar con un conjunto de datos estático que tenga detalles de registro para identificar las placas de licencia que han expirado.
SELECT I1.EntryTime, I1.LicensePlate, I1.TollId, R.RegistrationId
FROM Input1 I1 TIMESTAMP BY EntryTime
JOIN Registration R
ON I1.LicensePlate = R.LicensePlate
WHERE R.Expired = '1'
Stream Analytics admite Azure Blob Storage, Azure Data Lake Storage Gen2 y Azure SQL Database como capa de almacenamiento para datos de referencia. Si tiene los datos de referencia en otros almacenes de datos, intente usar Azure Data Factory para extraer, transformar y cargar los datos en uno de los almacenes de datos admitidos. Para más información, consulte Actividad de copia en la visión general de Azure Data Factory.
Azure Blob Storage o Azure Data Lake Storage Gen2
Los datos de referencia se modelan como una secuencia de blobs en orden ascendente de la fecha y hora especificada en el nombre del blob. Los blobs solo se pueden agregar al final de la secuencia mediante un valor de fecha y hora mayor que el especificado por el último blob de la secuencia. Los blobs se definen en la configuración de entrada.
Para más información, consulte Uso de datos de referencia de Blob Storage para un trabajo de Stream Analytics.
Configuración de datos de referencia de blobs
Para configurar los datos de referencia, primero debe crear una entrada de tipo datos de referencia. En la tabla siguiente se explica cada propiedad que debe proporcionar al crear la entrada de datos de referencia con su descripción.
| Nombre de propiedad | Description |
|---|---|
| Alias de entrada | Nombre amistoso usado en la consulta de trabajo para hacer referencia a esta entrada. |
| Cuenta de almacenamiento | Nombre de la cuenta de almacenamiento donde se encuentran los blobs. Si está en la misma suscripción que el trabajo de Stream Analytics, selecciónelo en la lista desplegable. |
| Clave de cuenta de almacenamiento | Clave secreta asociada a la cuenta de almacenamiento. Esta clave se rellena automáticamente si la cuenta de almacenamiento está en la misma suscripción que el trabajo de Stream Analytics. |
| Contenedor de almacenamiento | Los contenedores proporcionan una agrupación lógica para blobs almacenados en Blob Storage. Al cargar un blob en Blob Storage, debe especificar un contenedor para ese blob. |
| Patrón de ruta | Esta propiedad obligatoria se utiliza para localizar tus blobs en el contenedor especificado. Dentro de la ruta, puede especificar una o más instancias de las variables {date} y {time}. Ejemplo 1: products/{date}/{time}/product-list.csv Ejemplo 2: products/{date}/product-list.csv Ejemplo 3: product-list.csv Si el blob no existe en la ruta de acceso especificada, el trabajo de Stream Analytics espera indefinidamente a que el blob esté disponible. |
| Formato de fecha [opcional] | Si usó {date} en el patrón de ruta que especificó, seleccione el formato de fecha en el que se organizan los blobs en la lista desplegable de formatos admitidos. Ejemplo: AAAA/MM/DD o MM/DD/AAAA |
| Formato de hora [opcional] | Si usó {time} en el patrón de ruta de acceso que especificó, seleccione el formato de tiempo en el que se organizan los blobs en la lista desplegable de formatos admitidos. Ejemplo: HH, HH/mm o HH-mm |
| Formato de serialización de eventos | Para asegurarse de que las consultas funcionan de la manera esperada, Stream Analytics debe saber qué formato de serialización usa para los flujos de datos entrantes. Para los datos de referencia, los formatos admitidos son CSV y JSON. |
| Encoding | UTF-8 es el único formato de codificación admitido en este momento. |
Datos de referencia estáticos
Es posible que no se espere que cambien los datos de referencia. Para habilitar la compatibilidad con datos de referencia estáticos, especifique una ruta de acceso estática en la configuración de entrada.
Stream Analytics extrae el blob de la ruta especificada. Los tokens de sustitución {date} y {time} no son necesarios. Dado que los datos de referencia son inmutables en Stream Analytics, no se recomienda sobrescribir un blob de datos de referencia estático.
Generación de datos de referencia según una programación
Los datos de referencia pueden ser un conjunto de datos que cambia lentamente. Para actualizar los datos de referencia, especifique un patrón de ruta de acceso en la configuración de entrada mediante las variables de sustitución {date} y {time}. Stream Analytics recoge las definiciones actualizadas de datos de referencia en función de este patrón de ruta.
Por ejemplo, un patrón de sample/{date}/{time}/products.csv con un formato de fecha de AAAA-MM-DD y un formato de hora de HH-mm indica a Stream Analytics que recoja el blob sample/2015-04-16/17-30/products.csv actualizado el 16 de abril de 2015, a las 5:30 UTC.
Stream Analytics examina automáticamente los blobs de datos de referencia actualizados a intervalos de un minuto. Un blob con la marca de tiempo 10:30:00 podría cargarse con un pequeño retraso, por ejemplo, 10:30:30. Puede observar un pequeño retraso en el trabajo de Stream Analytics que hace referencia a este blob.
Para evitar estos escenarios, cargue el blob antes del tiempo efectivo de destino, que es 10:30:00 en este ejemplo. El trabajo de Stream Analytics ahora tiene tiempo suficiente para detectar y cargar el blob en memoria y realizar operaciones.
Nota:
Actualmente, los trabajos de Stream Analytics buscan la actualización del blob solo cuando el tiempo de la máquina avanza hasta la hora codificada en el nombre del blob. Por ejemplo, el trabajo busca sample/2015-04-16/17-30/products.csv lo antes posible, pero no antes del 16 de abril de 2015 a las 5:30 PM UTC.
Nunca buscará un blob con una hora codificada anterior a la última que se detectó.
Por ejemplo, después de que el trabajo encuentre el blob sample/2015-04-16/17-30/products.csv, omite los archivos con una fecha codificada anterior al 16 de abril de 2015, a las 5:30 p. m. Si se crea un blob de llegada sample/2015-04-16/17-25/products.csv tardía en el mismo contenedor, el trabajo no lo usará.
En otro ejemplo, sample/2015-04-16/17-30/products.csv solo se produce el 16 de abril de 2015 a las 10:03 p. m., pero no hay ningún blob con una fecha anterior presente en el contenedor. A continuación, el trabajo usa este archivo a partir del 16 de abril de 2015, a las 10:03 p. m. y usa los datos de referencia anteriores hasta entonces.
Una excepción a este comportamiento es cuando el trabajo necesita volver a procesar los datos en el tiempo o cuando se inicia el trabajo por primera vez.
A la hora de inicio, el trabajo busca el blob más reciente generado antes de la hora de inicio del trabajo especificada. Este comportamiento garantiza que haya un conjunto de datos de referencia no vacío cuando se inicie el trabajo. Si no se encuentra uno, el trabajo muestra el siguiente diagnóstico: Initializing input without a valid reference data blob for UTC time <start time>.
Cuando se actualiza un conjunto de datos de referencia, se genera un registro de diagnóstico: Loaded new reference data from <blob path>. Por muchas razones, es posible que un trabajo tenga que volver a cargar un conjunto de datos de referencia anterior. La mayoría de las veces, la razón es volver a procesar los datos pasados. El mismo registro de diagnóstico se genera en ese momento. Esta acción no implica que los datos de flujo actuales usen datos de referencia anteriores.
Azure Data Factory se puede usar para organizar la tarea de crear los blobs actualizados requeridos por Stream Analytics para actualizar las definiciones de datos de referencia.
Data Factory es un servicio de integración de datos basado en la nube que organiza y automatiza el movimiento y la transformación de los datos. Data Factory admite la conexión a un gran número de almacenes de datos locales y basados en la nube. Puede mover datos fácilmente según una programación normal que especifique.
Para obtener más información sobre cómo configurar una canalización de Data Factory para generar datos de referencia para Stream Analytics que se actualizan según una programación predefinida, consulte este ejemplo de GitHub.
Sugerencias para actualizar los datos de referencia de blobs
- No sobrescriba los blobs de datos de referencia porque son inmutables.
- La manera recomendada de actualizar los datos de referencia es:
- Utilice {date}/{time} en el patrón de ruta.
- Agregue un nuevo blob usando el mismo patrón de contenedor y ruta de acceso definido en la entrada del trabajo.
- Use una fecha y hora mayor que la especificada por el último blob de la secuencia.
- Los blobs de datos de referencia no están ordenados por la hora de última modificación del blob. Solo se ordenan por la fecha y hora especificadas en el nombre del blob mediante las sustituciones {date} y {time}.
- Para evitar tener que enumerar un gran número de blobs, elimine los blobs antiguos para los que el procesamiento ya no se realizará. Stream Analytics puede tener que volver a procesar una pequeña cantidad en algunos escenarios, como un reinicio.
Azure SQL Database
El trabajo de Stream Analytics recupera los datos de referencia de SQL Database y los almacena como una instantánea en memoria para su procesamiento. La instantánea de los datos de referencia también se almacena en un contenedor de una cuenta de almacenamiento. Se especifica la cuenta de almacenamiento en la configuración.
El contenedor se crea automáticamente cuando se inicia el trabajo. Si el trabajo se detiene o entra en un estado con errores, los contenedores creados automáticamente se eliminan cuando se reinicia el trabajo.
Si sus datos de referencia son un conjunto de datos que cambia lentamente, necesita actualizar periódicamente la versión instantánea que se usa en su trabajo.
Con Stream Analytics, puede establecer una frecuencia de actualización al configurar la conexión de entrada de SQL Database. El entorno de ejecución de Stream Analytics consulta la instancia de SQL Database en el intervalo especificado por la frecuencia de actualización. La frecuencia de actualización más rápida admitida es una vez por minuto. Para cada actualización, Stream Analytics almacena una nueva instantánea en la cuenta de almacenamiento proporcionada.
Stream Analytics proporciona dos opciones para consultar la instancia de SQL Database. Una consulta de captura de datos es obligatoria y debe incluirse en cada tarea. Stream Analytics ejecuta la consulta de instantáneas periódicamente en función del intervalo de actualización. Usa el resultado de la consulta (la instantánea) como conjunto de datos de referencia.
La consulta de instantáneas debe ajustarse a la mayoría de los escenarios. Si tiene problemas de rendimiento con grandes conjuntos de datos y velocidades de actualización rápidas, use la opción de consulta delta. Las consultas que tardan más de 60 segundos en devolver un conjunto de datos de referencia generan un tiempo de espera.
Con la opción de consulta delta, Stream Analytics ejecuta inicialmente la consulta de instantáneas para obtener un conjunto de datos de referencia de línea base. Después, Stream Analytics ejecuta la consulta delta periódicamente en función del intervalo de actualización para recuperar los cambios incrementales. Estos cambios incrementales se aplican continuamente al conjunto de datos de referencia para mantenerlo actualizado. El uso de la opción de consulta delta puede ayudar a reducir el costo de almacenamiento y las operaciones de E/S de red.
Configuración de datos de referencia de SQL Database
Para configurar los datos de referencia de SQL Database, primero debe crear la entrada de datos de referencia. En la tabla siguiente se explica cada propiedad que debe proporcionar al crear la entrada de datos de referencia con su descripción. Para obtener más información, consulte Uso de datos de referencia de una base de datos SQL para un Stream Analytics job.
Puede usar Azure SQL Managed Instance como entrada de datos de referencia. Debe configurar un punto de conexión público en la instancia administrada de SQL. A continuación, configure manualmente las siguientes opciones en Stream Analytics. También se admite una máquina virtual de Azure que ejecuta SQL Server con una base de datos asociada mediante la configuración manual de estas opciones.
| Nombre de propiedad | Description |
|---|---|
| Alias de entrada | Nombre amistoso usado en la consulta de trabajo para hacer referencia a esta entrada. |
| Subscription | Su suscripción. |
| Base de datos | Instancia de SQL Database que contiene los datos de referencia. Para SQL Managed Instance, debe especificar el puerto 3342. Un ejemplo es sampleserver.public.database.windows.net,3342. |
| Nombre de usuario | Nombre de usuario asociado a la instancia de SQL Database. |
| Contraseña | Contraseña asociada a la instancia de SQL Database. |
| Actualizar periódicamente | Esta opción le permite seleccionar una frecuencia de actualización. Seleccione Activado para especificar la frecuencia de actualización en DD:HH:MM. |
| Consulta de instantáneas | Esta opción de consulta predeterminada recupera los datos de referencia de la instancia de SQL Database. |
| Consulta delta | Para escenarios avanzados con grandes conjuntos de datos y una frecuencia de actualización corta, agregue una consulta delta. |
Limitación de tamaño
Use conjuntos de datos de referencia inferiores a 300 MB para obtener el mejor rendimiento. Los conjuntos de datos de referencia de 5 GB o inferiores se admiten en trabajos con seis unidades de streaming o más. El uso de un conjunto de datos de referencia grande podría afectar a la latencia de un extremo a otro del trabajo.
La complejidad de las consultas puede aumentar para incluir el procesamiento con estado, como agregados con ventanas, combinaciones temporales y funciones analíticas temporales. Cuando aumenta la complejidad, el tamaño máximo admitido de los datos de referencia disminuye.
Si Stream Analytics no puede cargar los datos de referencia y realizar operaciones complejas, el trabajo se queda sin memoria y produce un error. En tales casos, la métrica de uso del porcentaje de unidades de streaming alcanza el 100%.
| Número de unidades de streaming | Tamaño recomendado |
|---|---|
| 1 | 50 MB o inferior |
| 3 | 150 MB o inferior |
| 6 y más allá | 5 GB o inferior |
La compatibilidad con la compresión no está disponible para los datos de referencia. Para los conjuntos de datos de referencia de más de 300 MB, use SQL Database como origen con la opción de consulta delta para obtener un rendimiento óptimo. Si no se utiliza la opción de consulta delta en estos escenarios, observará picos en la métrica de retraso del marcador cada vez que se actualice el conjunto de datos de referencia.
Unión de varios conjuntos de datos de referencia en un trabajo
Solo puede unir una entrada de datos de referencia a una entrada de streaming. Por lo tanto, para unir varios conjuntos de datos de referencia, divida la consulta en varios pasos. Este es un ejemplo:
With Step1 as (
--JOIN input stream with reference data to get 'Desc'
SELECT streamInput.*, refData1.Desc as Desc
FROM streamInput
JOIN refData1 ON refData1.key = streamInput.key
)
--Now Join Step1 with second reference data
SELECT *
INTO output
FROM Step1
JOIN refData2 ON refData2.Desc = Step1.Desc
Trabajos de IoT Edge
Solo se admiten datos de referencia locales para trabajos perimetrales de Stream Analytics. Cuando se implementa un trabajo en un dispositivo IoT Edge, carga datos de referencia de la ruta de acceso de archivo definida por el usuario. Tener un archivo de datos de referencia listo en el dispositivo.
Para un contenedor de Windows, coloque el archivo de datos de referencia en la unidad local y comparta la unidad local con el contenedor de Docker. Para un contenedor de Linux, cree un volumen de Docker y rellene el archivo de datos en el volumen.
Los datos de referencia de una actualización de IoT Edge son activados por una implementación. Después de que se desencadene, el módulo de Stream Analytics elige los datos actualizados sin detener el trabajo en ejecución.
Puede actualizar los datos de referencia de dos maneras:
- Actualice la ruta de datos de referencia en el trabajo de Stream Analytics desde el portal de Azure.
- Actualice la implementación de IoT Edge.