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.
La fuente de cambios de Azure Cosmos DB es un mecanismo para obtener una fuente continua e incremental de registros de un contenedor de Azure Cosmos DB a medida que esos registros se crean o modifican. La compatibilidad con la fuente de cambios funciona escuchando el contenedor para ver los cambios. A continuación, muestra la lista ordenada de los documentos que han cambiado en el orden en el que se modificaron. Para más información sobre la fuente de cambios, consulte el artículo Sobre cómo trabajar con la fuente de cambios .
En este artículo se describe cómo una empresa de comercio electrónico puede usar la fuente de cambios para comprender los patrones de usuario, realizar análisis y visualización de datos en tiempo real. Analizará eventos como un usuario que ve un elemento, agrega un artículo al carro o compra un artículo. Cuando se produce uno de estos eventos, se crea un nuevo registro y la fuente de cambios registra ese registro. A continuación, la fuente de cambios desencadena una serie de pasos que dan lugar a la visualización de métricas que analizan el rendimiento y la actividad de la empresa. Las métricas de ejemplo que puede visualizar incluyen ingresos, visitantes únicos del sitio, artículos más populares y el precio medio de los artículos que han sido vistos en comparación con los que han sido agregados a un carrito y los que han sido comprados. Estas métricas de ejemplo pueden ayudar a una empresa de comercio electrónico a evaluar su popularidad del sitio, desarrollar sus estrategias de publicidad y precios, y tomar decisiones sobre el inventario en el que invertir.
Componentes de la solución
El diagrama siguiente representa el flujo de datos y los componentes implicados en la solución:
Generación de datos: El simulador de datos se usa para generar datos comerciales que representan eventos como un usuario que ve un elemento, agregan un artículo al carro y compran un artículo. Puede generar un gran conjunto de datos de ejemplo mediante el generador de datos. Los datos de ejemplo generados contienen documentos con el formato siguiente:
{ "CartID": 2486, "Action": "Viewed", "Item": "Women's Denim Jacket", "Price": 31.99 }Azure Cosmos DB: Los datos generados se almacenan en un contenedor de Azure Cosmos DB.
Fuente de cambios: la fuente de cambios escuchará para detectar cambios en el contenedor de Azure Cosmos DB. Cada vez que se agrega un nuevo documento a la colección (es decir, cuando se produce un evento como un usuario que ve un elemento, agrega un elemento al carro o compra un artículo), la fuente de cambios desencadenará una función de Azure.
Función de Azure: La función de Azure procesa los nuevos datos y los envía a Azure Event Hubs.
Centro de eventos de Azure: El centro de eventos almacena estos eventos y los envía a Azure Stream Analytics para realizar un análisis posterior.
Azure Stream Analytics: Azure Stream Analytics define consultas para procesar los eventos y realizar análisis de datos en tiempo real. A continuación, estos datos se envían a Microsoft Power BI.
Power BI: Power BI se usa para visualizar los datos enviados por Azure Stream Analytics. Puede crear un panel para ver cómo cambian las métricas en tiempo real.
Prerrequisitos
Microsoft .NET Framework 4.7.1 o superior
Microsoft .NET Core 2.1 (o superior)
Visual Studio con desarrollo de la Plataforma universal de Windows, desarrollo de escritorio de .NET y cargas de trabajo de desarrollo web y ASP.NET
Suscripción de Microsoft Azure
Cuenta de Microsoft Power BI
Descargue el feed de cambios del laboratorio de Azure Cosmos DB desde GitHub.
Creación de recursos de Azure
Cree los recursos de Azure: Azure Cosmos DB, cuenta de almacenamiento, centro de eventos y Stream Analytics requeridos por la solución. Implementará estos recursos a través de una plantilla de Azure Resource Manager. Siga estos pasos para implementar estos recursos:
Establezca la directiva de ejecución de Windows PowerShell en Sin restricciones. Para ello, abra Windows PowerShell como administrador y ejecute los siguientes comandos:
Get-ExecutionPolicy Set-ExecutionPolicy UnrestrictedEn el repositorio de GitHub que descargó en el paso anterior, vaya a la carpeta de Azure Resource Manager y abra el archivo denominado parameters.json archivo.
Proporcione valores para los parámetros
cosmosdbaccount_name,eventhubnamespace_name,storageaccount_name, tal como se indica en el archivo parameters.json. Deberá usar los nombres que asigne a cada uno de los recursos más adelante.En Windows PowerShell, vaya a la carpeta Azure Resource Manager y ejecute el siguiente comando:
.\deploy.ps1Cuando se le solicite, escriba el identificador de suscripción de Azure, changefeedlab para el nombre del grupo de recursos y ejecute1 para el nombre de implementación. Una vez que los recursos empiecen a implementarse, puede tardar hasta 10 minutos en completarse.
Creación de una base de datos y la colección
Ahora creará una colección para contener eventos de sitio de comercio electrónico. Cuando un usuario ve un artículo, agrega un artículo a su carro o compra un artículo, la colección recibirá un registro que incluye la acción ("visto", "agregado" o "comprado"), el nombre del artículo implicado, el precio del artículo implicado y el número de identificación del carro del usuario implicado.
Vaya a Azure Portal y busque la cuenta de Azure Cosmos DB creada por la implementación de plantillas.
En el panel Explorador de datos , seleccione Nueva colección y rellene el formulario con los detalles siguientes:
- En el campo Id. de base de datos , seleccione Crear nuevo y escriba changefeedlabdatabase. Deje desactivada la casilla Aprovisionar rendimiento de base de datos.
- En el campo identificador de colección, escriba changefeedlabcollection.
- En el campo Clave de partición , escriba /Item. Esto distingue mayúsculas de minúsculas, así que asegúrese de escribirlo correctamente.
- En el campo Rendimiento , escriba 10000.
- Selecciona el botón Aceptar.
A continuación, cree otra colección denominada leases para el procesamiento de la fuente de cambios. La colección de concesiones coordina el procesamiento de la fuente de cambios en varios trabajos. Se utiliza una colección separada para almacenar los arrendamientos con un arrendamiento por partición.
Vuelva al panel Explorador de datos y seleccione Nueva colección y rellene el formulario con los detalles siguientes:
- En el campo Id. de base de datos , seleccione Usar existente y escriba changefeedlabdatabase.
- En el campo ID de colección, escriba arrendamientos.
- En Capacidad de almacenamiento, seleccione Fijo.
- Deje el campo Rendimiento establecido en su valor predeterminado.
- Selecciona el botón Aceptar.
Obtención de la cadena de conexión y las claves
Obtén la cadena de conexión de Azure Cosmos DB
Vaya a Azure Portal y busque la cuenta de Azure Cosmos DB creada por la implementación de plantillas.
Vaya al panel Claves , copie la CADENA DE CONEXIÓN PRINCIPAL y cópiela en un bloc de notas u otro documento al que tendrá acceso en todo el laboratorio. Debe etiquetarlo como cadena de conexión de Azure Cosmos DB. Tendrá que copiar la cadena en el código más adelante, así que tome nota y recuerde dónde lo almacena.
Obtención de la clave de la cuenta de almacenamiento y la cadena de conexión
Las cuentas de Azure Storage permiten a los usuarios almacenar datos. En este laboratorio, usará una cuenta de almacenamiento para almacenar los datos que usa la función de Azure. La función de Azure se desencadena cuando se realiza cualquier modificación en la colección.
Vuelva al grupo de recursos y abra la cuenta de almacenamiento que creó anteriormente.
Seleccione Claves de acceso en el menú de la izquierda.
Copie los valores de la clave 1 en un bloc de notas u otro documento al que tendrá acceso en todo el laboratorio. Debe etiquetar la clave como clave de almacenamiento y la cadena de conexión como cadena de conexión de almacenamiento. Tendrá que copiar estas cadenas en el código más adelante, así que tome nota y recuerde dónde los almacena.
Obtención de la cadena de conexión del espacio de nombres del centro de eventos
Un centro de eventos de Azure recibe los datos del evento, almacena, procesa y reenvía los datos. En este laboratorio, el centro de eventos recibirá un documento cada vez que se produzca un nuevo evento (siempre que un usuario vea un elemento, se agregue al carro de un usuario o lo compre un usuario) y, a continuación, reenviará ese documento a Azure Stream Analytics.
Vuelva al grupo de recursos y abra el Espacio de nombres de Event Hubs que creó y denominó en el prelaboratorio.
Seleccione Directivas de acceso compartido en el menú del lado izquierdo.
Seleccione RootManageSharedAccessKey. Copie la clave principal de cadena de conexión en un bloc de notas u otro documento al que tendrá acceso en todo el laboratorio. Debe etiquetarla como cadena de conexión de Espacio de nombres del centro de eventos. Tendrá que copiar la cadena en el código más adelante, así que tome nota y recuerde dónde lo almacena.
Configurar la función de Azure para leer el feed de cambios
Cuando se crea un nuevo documento o se modifica un documento actual en un contenedor de Azure Cosmos DB, la fuente de cambios agrega automáticamente ese documento modificado a su historial de cambios de colección. Ahora construirá y ejecutará una función de Azure que procese la fuente de cambios. Cuando se crea o modifica un documento en la colección que creó, la fuente de cambios desencadenará la función de Azure. A continuación, la función de Azure enviará el documento modificado al centro de eventos.
Vuelva al repositorio que ha clonado en el dispositivo.
Haga clic con el botón derecho en el archivo denominado ChangeFeedLabSolution.sln y seleccione Abrir con Visual Studio.
Vaya a local.settings.json en Visual Studio. A continuación, use los valores que registró anteriormente para rellenar los espacios en blanco.
Vaya a ChangeFeedProcessor.cs. En los parámetros de la función Run , realice las siguientes acciones:
- Reemplace el texto YOUR COLLECTION NAME HERE por el nombre de la colección. Si ha seguido instrucciones anteriores, el nombre de la colección es changefeedlabcollection.
- Reemplace el texto YOUR LEASES COLLECTION NAME HERE por el nombre de la colección de concesiones. Si ha seguido las instrucciones anteriores, el nombre de tu colección de arrendamientos es leases.
- En la parte superior de Visual Studio, asegúrese de que el cuadro Proyecto de inicio de la izquierda de la flecha verde indica ChangeFeedFunction.
- Seleccione Iniciar en la parte superior de la página para ejecutar el programa.
- Puede confirmar que la función se está ejecutando cuando la aplicación de consola indica "Se inició el host de trabajo".
Inserción de datos en Azure Cosmos DB
Para ver cómo la fuente de cambios procesa nuevas acciones en un sitio de comercio electrónico, se necesita simular datos que representen a los usuarios que ven artículos del catálogo de productos, añadiendo esos artículos a sus carritos y comprando los artículos en sus carritos. Estos datos son arbitrarios y se usan para replicar los datos de un sitio de comercio electrónico.
Vuelva al repositorio en el Explorador de archivos y haga clic con el botón derecho en ChangeFeedFunction.sln para abrirlo de nuevo en una nueva ventana de Visual Studio.
Navegue al archivo App.config. En el bloque
<appSettings>, agregue el punto de conexión y la PRIMARY KEY única de la cuenta de Azure Cosmos DB que recuperó anteriormente.Agregue los nombres de la colección y de la base de datos . (Estos nombres deben ser changefeedlabcollection y changefeedlabdatabase a menos que elija asignar un nombre diferente a los suyos).
Guarde los cambios en todos los archivos editados.
En la parte superior de Visual Studio, asegúrese de que el cuadro Proyecto de inicio de la izquierda de la flecha verde indica DataGenerator. A continuación, seleccione Iniciar en la parte superior de la página para ejecutar el programa.
Espere a que se ejecute el programa. ¡Las estrellas significan que los datos van a entrar! Mantener el programa en ejecución: es importante que se recopilen muchos datos.
Si navega al Azure portal, luego a la cuenta de Azure Cosmos DB dentro de su grupo de recursos, y después a Data Explorer, verá los datos aleatorios importados en su changefeedlabcollection.
Configuración de un trabajo de Stream Analytics
Azure Stream Analytics es un servicio en la nube totalmente administrado para el procesamiento en tiempo real de los datos de streaming. En este laboratorio, usarás Stream Analytics para procesar nuevos eventos desde Event Hub (cuando se ve un elemento, se añade al carrito o se compra), incorporar esos eventos en el análisis de datos en tiempo real y enviarlos a Power BI para su visualización.
Desde Azure Portal, vaya al grupo de recursos y luego a streamjob1 (el trabajo de Stream Analytics que creó en el prelaboratorio).
Seleccione Entradas como se muestra a continuación.
Seleccione + Agregar entrada de flujo. A continuación, seleccione Centro de eventos en el menú desplegable.
Rellene el nuevo formulario de entrada con los detalles siguientes:
- En el campo Alias de entrada , escriba input.
- Seleccione la opción Seleccionar Centro de Eventos de sus suscripciones.
- Establezca el campo Suscripción en su suscripción.
- En el campo Espacio de nombres de Event Hubs, escriba el nombre del espacio de nombres del centro de eventos que creó en el prelaboratorio.
- En el campo Nombre del centro de eventos, seleccione la opción Usar existente y elija event-hub1 en el menú desplegable.
- Deje el campo de nombre Event Hub policy (Directiva del centro de eventos) establecido en su valor predeterminado.
- Deje el formato de serialización de eventos como JSON.
- Deje el campo Codificación establecido en UTF-8.
- Deje el campo Tipo de compresión de eventos establecido en Ninguno.
- Selecciona el botón Guardar.
Vuelva a la página del trabajo de Stream Analytics y seleccione Salidas.
Seleccione +Agregar. A continuación, seleccione Power BI en el menú desplegable.
Para crear una nueva salida de Power BI para visualizar el precio medio, realice las siguientes acciones:
- En el campo Alias de salida , escriba averagePriceOutput.
- Deje el campo Área de trabajo Grupo establecida en Autorizar conexión para cargar áreas de trabajo.
- En el campo Nombre del conjunto de datos , escriba averagePrice.
- En el campo Nombre de tabla, escriba averagePrice.
- Seleccione el botón Autorizar y siga las instrucciones para autorizar la conexión a Power BI.
- Selecciona el botón Guardar.
A continuación, vuelva a streamjob1 y seleccione Editar consulta.
Pegue la consulta siguiente en la ventana de consulta. La consulta AVERAGE PRICE calcula el precio medio de todos los artículos que ven los usuarios, el precio medio de todos los artículos que se agregan a los carros de los usuarios y el precio medio de todos los artículos adquiridos por los usuarios. Esta métrica puede ayudar a las empresas de comercio electrónico a decidir en qué precios vender artículos y en qué inventario invertir. Por ejemplo, si el precio medio de los artículos vistos es mucho mayor que el precio medio de artículos comprados, una empresa podría optar por agregar artículos menos costosos a su inventario.
/*AVERAGE PRICE*/ SELECT System.TimeStamp AS Time, Action, AVG(Price) INTO averagePriceOutput FROM input GROUP BY Action, TumblingWindow(second,5)A continuación, seleccione Guardar en la esquina superior izquierda.
Ahora vuelva a streamjob1 y seleccione el botón Iniciar en la parte superior de la página. Azure Stream Analytics puede tardar unos minutos en iniciarse, pero finalmente verá que cambia de "Inicio" a "En ejecución".
Conectar con Power BI
Power BI es un conjunto basado en la nube de herramientas de análisis de negocios para analizar datos y compartir ideas. Es un excelente ejemplo de cómo puede visualizar estratégicamente los datos analizados.
Inicie sesión en Power BI y vaya a Mi área de trabajo ; para ello, abra el menú en el lado izquierdo de la página.
Seleccione + Crear en la esquina superior derecha y, a continuación, seleccione Panel para crear un panel.
Seleccione + Agregar icono en la esquina superior derecha.
Seleccione Datos de streaming personalizados y, a continuación, seleccione el botón Siguiente .
Seleccione averagePrice de YOUR DATASETS, luego seleccione Siguiente.
En el campo Tipo de visualización , elija Gráfico de barras agrupadas en el menú desplegable. En Eje, agregue acción. Omita Leyenda sin agregar nada. A continuación, en la sección siguiente denominada Valor, agregue avg. Seleccione Siguiente y, a continuación, título el gráfico y seleccione Aplicar. Debería ver un nuevo gráfico en el panel.
Ahora, si desea visualizar más métricas, puede volver a streamjob1 y crear tres salidas más con los campos siguientes.
a) Alias de salida: incomingRevenueOutput, Nombre del conjunto de datos: incomingRevenue, Nombre de tabla: incomingRevenue
b. Alias de salida: top5Output, Nombre del conjunto de datos: top5, Nombre de tabla: top5
c. Alias de salida: uniqueVisitorCountOutput, Nombre del conjunto de datos: uniqueVisitorCount, Nombre de tabla: uniqueVisitorCountA continuación, seleccione Editar consulta y pegue las siguientes consultas encima de la que ya escribió.
/*TOP 5*/ WITH Counter AS ( SELECT Item, Price, Action, COUNT(*) AS countEvents FROM input WHERE Action = 'Purchased' GROUP BY Item, Price, Action, TumblingWindow(second,30) ), top5 AS ( SELECT DISTINCT CollectTop(5) OVER (ORDER BY countEvents) AS topEvent FROM Counter GROUP BY TumblingWindow(second,30) ), arrayselect AS ( SELECT arrayElement.ArrayValue FROM top5 CROSS APPLY GetArrayElements(top5.topevent) AS arrayElement ) SELECT arrayvalue.value.item, arrayvalue.value.price, arrayvalue.value.countEvents INTO top5Output FROM arrayselect /*REVENUE*/ SELECT System.TimeStamp AS Time, SUM(Price) INTO incomingRevenueOutput FROM input WHERE Action = 'Purchased' GROUP BY TumblingWindow(hour, 1) /*UNIQUE VISITORS*/ SELECT System.TimeStamp AS Time, COUNT(DISTINCT CartID) as uniqueVisitors INTO uniqueVisitorCountOutput FROM input GROUP BY TumblingWindow(second, 5)La consulta TOP 5 calcula los cinco elementos principales, clasificados por el número de veces que se han comprado. Esta métrica puede ayudar a las empresas de comercio electrónico a evaluar qué artículos son más populares y pueden influir en las decisiones de publicidad, precios e inventario de la empresa.
La consulta REVENUE calcula los ingresos sumando los precios de todos los artículos adquiridos cada minuto. Esta métrica puede ayudar a las empresas de comercio electrónico a evaluar su rendimiento financiero y comprender también qué horas del día contribuyen a la mayoría de los ingresos. Esto puede afectar a la estrategia general de la empresa, el marketing en particular.
La consulta UNIQUE VISITORS calcula cuántos visitantes únicos se encuentran en el sitio cada cinco segundos mediante la detección de identificadores de carro únicos. Esta métrica puede ayudar a las empresas de comercio electrónico a evaluar su actividad del sitio y a crear estrategias sobre cómo adquirir más clientes.
Ahora también puede agregar iconos para estos conjuntos de datos.
- Para top 5, tendría sentido realizar un gráfico de columnas agrupadas con los elementos como eje y el recuento como valor.
- Para Ingresos, tendría sentido hacer un gráfico de líneas con el tiempo como eje y la suma de los precios como valor. El período de tiempo que se va a mostrar debe ser el más grande posible para entregar la mayor cantidad de información posible.
- Para visitantes únicos, tendría sentido realizar una visualización de tarjetas con el número de visitantes únicos como valor.
Este es el aspecto de un panel de ejemplo con estos gráficos:
Opcional: Visualizar con un sitio de comercio electrónico
Ahora observará cómo puede usar la nueva herramienta de análisis de datos para conectarse con un sitio de comercio electrónico real. Para crear el sitio de comercio electrónico, use una base de datos de Azure Cosmos DB para almacenar la lista de categorías de productos, el catálogo de productos y una lista de los elementos más populares.
Vuelva a Azure Portal y, a continuación, a la cuenta de Azure Cosmos DB y, a continuación, a Data Explorer.
Agregue dos colecciones en changefeedlabdatabase - productos y categorías con capacidad de almacenamiento fija.
Agregue otra colección en changefeedlabdatabase denominada topItems y /Item como clave de partición.
Seleccione la colección topItems y, en Escala y configuración , establezca el período de vida en 30 segundos para que topItems se actualice cada 30 segundos.
Para rellenar la colección topItems con los artículos comprados con más frecuencia, vuelva a streamjob1 y agregue una nueva salida. Seleccione Azure Cosmos DB.
Rellene los campos obligatorios como se muestra a continuación.
Si agregó la consulta TOP 5 opcional en la parte anterior del laboratorio, vaya a la parte 5a. Si no es así, continúe con la parte 5b.
5a. En streamjob1, seleccione Editar consulta y pegue la siguiente consulta en el editor de consultas de Azure Stream Analytics debajo de la consulta TOP 5, pero por encima del resto de las consultas.
SELECT arrayvalue.value.item AS Item, arrayvalue.value.price, arrayvalue.value.countEvents INTO topItems FROM arrayselect5b. En streamjob1, seleccione Editar consulta y pegue la siguiente consulta en el editor de consultas de Azure Stream Analytics sobre todas las demás consultas.
/*TOP 5*/ WITH Counter AS ( SELECT Item, Price, Action, COUNT(*) AS countEvents FROM input WHERE Action = 'Purchased' GROUP BY Item, Price, Action, TumblingWindow(second,30) ), top5 AS ( SELECT DISTINCT CollectTop(5) OVER (ORDER BY countEvents) AS topEvent FROM Counter GROUP BY TumblingWindow(second,30) ), arrayselect AS ( SELECT arrayElement.ArrayValue FROM top5 CROSS APPLY GetArrayElements(top5.topevent) AS arrayElement ) SELECT arrayvalue.value.item AS Item, arrayvalue.value.price, arrayvalue.value.countEvents INTO topItems FROM arrayselectAbra EcommerceWebApp.sln y vaya al archivo Web.config en el Explorador de soluciones.
Dentro del
<appSettings>bloque, agregue el URI y LA CLAVE PRINCIPAL que guardó anteriormente, donde dice el URI aquí y la clave principal aquí. A continuación, agregue el nombre de la base de datos y el nombre de la colección tal como se indica. (Estos nombres deben ser changefeedlabdatabase y changefeedlabcollection a menos que decida asignar un nombre diferente a los suyos).Rellene el nombre de la colección de productos, el nombre de la colección de categorías y el nombre de la colección de elementos principales como se indica. (Estos nombres deben ser productos, categorías y topItems a menos que haya decidido nombrar los suyos de manera diferente).
Vaya a la carpeta Checkout en EcommerceWebApp.sln. A continuación, abra el archivo Web.config en esa carpeta.
En el bloque
<appSettings>, agregue el URI y la PRIMARY KEY que guardó anteriormente, cuando se le indicó. A continuación, agregue el nombre de la base de datos y el nombre de la colección como se indica. (Estos nombres deben ser changefeedlabdatabase y changefeedlabcollection a menos que decida asignar un nombre diferente a los suyos).Presione Iniciar en la parte superior de la página para ejecutar el programa.
Ahora puede jugar en el sitio de comercio electrónico. Cuando vea un artículo, agregue un elemento al carro, cambie la cantidad de un artículo en el carro o compre un artículo, estos eventos se pasarán a través de la fuente de cambios de Azure Cosmos DB al centro de eventos, Stream Analytics y, a continuación, Power BI. Se recomienda seguir ejecutando DataGenerator para generar datos de tráfico web significativos y proporcionar un conjunto realista de "Productos calientes" en el sitio de comercio electrónico.
Eliminación de los recursos
Para eliminar los recursos que creó durante este laboratorio, vaya al grupo de recursos en Azure Portal y seleccione Eliminar grupo de recursos en el menú de la parte superior de la página y siga las instrucciones proporcionadas.
Pasos siguientes
- Para obtener más información sobre el flujo de cambios, consulte Trabajar con soporte para flujos de cambios en Azure Cosmos DB.