Stream Analytics y Power BI: panel de análisis en tiempo real de flujo de datosStream Analytics and Power BI: A real-time analytics dashboard for streaming data

Azure Stream Analytics permite aprovechar una de las principales herramientas de inteligencia empresarial, Microsoft Power BI.Azure Stream Analytics enables you to take advantage of one of the leading business intelligence tools, Microsoft Power BI. En este artículo, aprenderá a crear herramientas de inteligencia empresarial personalizadas utilizando Power BI como salida para los trabajos de Azure Stream Analytics.In this article, you learn how create business intelligence tools by using Power BI as an output for your Azure Stream Analytics jobs. También aprenderá a crear y usar un panel en tiempo real que el trabajo de Stream Analytics actualiza continuamente.You also learn how to create and use a real-time dashboard that is continuously updated by the Stream Analytics job.

Este artículo continúa a partir del tutorial Detección de fraudes en tiempo real de Stream Analytics.This article continues from the Stream Analytics real-time fraud detection tutorial. Se basa en el flujo de trabajo creado en ese tutorial y agrega una salida de Power BI para que se puedan visualizar llamadas telefónicas fraudulentas detectadas por un trabajo de Streaming Analytics.It builds on the workflow created in that tutorial and adds a Power BI output so that you can visualize fraudulent phone calls that are detected by a Streaming Analytics job.

Puede ver un vídeo que muestra este escenario.You can watch a video that illustrates this scenario.

PrerrequisitosPrerequisites

Antes de empezar, asegúrese de que dispone de lo siguiente:Before you start, make sure you have the following:

  • Una cuenta de Azure.An Azure account.
  • Una cuenta de Power BI Pro.An account for Power BI Pro. Puede usar una cuenta profesional o una cuenta educativa.You can use a work account or a school account.
  • Versión completa del tutorial Detección de fraudes en tiempo real.A completed version of the real-time fraud detection tutorial. El tutorial incluye una aplicación que genera metadatos de llamada telefónica ficticia.The tutorial includes an app that generates fictitious telephone-call metadata. En el tutorial, se crea un centro de eventos y se envían los datos de llamada telefónica de streaming al centro de eventos.In the tutorial, you create an event hub and send the streaming phone call data to the event hub. Escriba una consulta que detecte llamadas fraudulentas (llamadas del mismo número a la vez en distintas ubicaciones).You write a query that detects fraudulent calls (calls from the same number at the same time in different locations).

Incorporación del resultado de Power BIAdd Power BI output

En el tutorial de detección de fraudes en tiempo real, la salida se envía a Azure Blob Storage.In the real-time fraud detection tutorial, the output is sent to Azure Blob storage. En esta sección se agrega una salida que envía información a Power BI.In this section, you add an output that sends information to Power BI.

  1. En Azure Portal, abra la cuenta de Stream Analytics que creó antes.In the Azure portal, open the Streaming Analytics job that you created earlier. Si usó el nombre sugerido, el trabajo se llama sa_frauddetection_job_demo.If you used the suggested name, the job is named sa_frauddetection_job_demo.

  2. En el menú izquierdo, seleccione Salidas en Topología de trabajo.On the left menu, select Outputs under Job topology. Luego, seleccione + Agregar y elija Power BI en el menú desplegable.Then, select + Add and choose Power BI from the dropdown menu.

  3. Seleccione + Agregar > Power BI.Select + Add > Power BI. A continuación, rellene el formulario con los detalles siguientes y seleccione Autorizar para usar su propia identidad de usuario para conectarse a Power BI (el token es válido durante 90 días).Then fill the form with the following details and select Authorize to use your own user identity to connect to Power BI (the token is valid for 90 days).

Nota

Para trabajos de producción, le recomendamos que se conecte a Uso de la identidad administrada para autenticar el trabajo de Azure Stream Analytics en Power BI.For production jobs, we recommend to connect to use Managed Identity to authenticate your Azure Stream Analytics job to Power BI.

ConfiguraciónSetting Valor sugeridoSuggested value
Alias de salidaOutput alias CallStream PowerBICallStream-PowerBI
Nombre del conjunto de datosDataset name sa-datasetsa-dataset
Nombre de la tablaTable name fraudulent-callsfraudulent-calls

Configuración de la salida de Stream Analytics

Advertencia

Si Power BI tiene un conjunto de datos y una tabla con los mismos nombres que especifica en el trabajo de Stream Analytics, se sobrescribirán los existentes.If Power BI has a dataset and table that have the same names as the ones that you specify in the Stream Analytics job, the existing ones are overwritten. Se recomienda no crear explícitamente este conjunto de datos y la tabla en la cuenta de Power BI.We recommend that you do not explicitly create this dataset and table in your Power BI account. Se crearán automáticamente cuando inicie el trabajo de Stream Analytics y este empiece a enviar salida a Power BI.They are automatically created when you start your Stream Analytics job and the job starts pumping output into Power BI. Si la consulta de trabajo no genera ningún resultado, el conjunto de datos y la tabla no se crean.If your job query doesn't return any results, the dataset and table are not created.

  1. Después de seleccionar Autorizar, se abre una ventana emergente y se le pide que escriba las credenciales para autenticarse en su cuenta de Power BI.When you select Authorize, a pop-up window opens and you are asked to provide credentials to authenticate to your Power BI account. Una vez que la autorización se realice correctamente, guarde la configuración.Once the authorization is successful, Save the settings.

  2. Haga clic en Crear.Click Create.

El conjunto de datos se crea con la siguiente configuración:The dataset is created with the following settings:

  • defaultRetentionPolicy: BasicFIFO: los datos son FIFO y el máximo de filas son 200 000 filas.defaultRetentionPolicy: BasicFIFO - Data is FIFO, with a maximum of 200,000 rows.
  • defaultMode: hybrid: el conjunto de datos admite iconos de streaming (también conocidos como inserción) y elementos visuales tradicionales basados en informes.defaultMode: hybrid - The dataset supports both streaming tiles (also known as push) and traditional report-based visuals. En cuanto al contenido de inserción, en este caso los datos se actualizan continuamente desde el trabajo de Stream Analytics sin necesidad de programar la actualización desde Power BI.For the push content, the data is continuously updated from the stream analytics job in this case, with no need to schedule refresh from the Power BI side.

Actualmente, no se pueden crear conjuntos de datos con otras marcas.Currently, you can't create datasets with other flags.

Para más información sobre conjuntos de datos de Power BI, consulte la referencia de la API de REST de Power BI.For more information about Power BI datasets, see the Power BI REST API reference.

Escritura de la consultaWrite the query

  1. Cierre la hoja Salidas y vuelva a la hoja del trabajo.Close the Outputs blade and return to the job blade.

  2. Haga clic en el cuadro Consulta.Click the Query box.

  3. Escriba la siguiente consulta.Enter the following query. Esta consulta es similar a la consulta de autocombinación que creó en el tutorial de detección de fraudes.This query is similar to the self-join query you created in the fraud-detection tutorial. La diferencia es que esta consulta envía los resultados a la nueva salida generada (CallStream-PowerBI).The difference is that this query sends results to the new output you created (CallStream-PowerBI).

    Nota

    Si no asignó el nombre CallStream a la entrada en el tutorial de detección de fraudes, sustituya el nombre por CallStream en las cláusulas FROM y JOIN de la consulta.If you did not name the input CallStream in the fraud-detection tutorial, substitute your name for CallStream in the FROM and JOIN clauses in the query.

    /* Our criteria for fraud:
    Calls made from the same caller to two phone switches in different locations (for example, Australia and Europe) within five seconds */
    
    SELECT System.Timestamp AS WindowEnd, COUNT(*) AS FraudulentCalls
    INTO "CallStream-PowerBI"
    FROM "CallStream" CS1 TIMESTAMP BY CallRecTime
    JOIN "CallStream" CS2 TIMESTAMP BY CallRecTime
    
    /* Where the caller is the same, as indicated by IMSI (International Mobile Subscriber Identity) */
    ON CS1.CallingIMSI = CS2.CallingIMSI
    
    /* ...and date between CS1 and CS2 is between one and five seconds */
    AND DATEDIFF(ss, CS1, CS2) BETWEEN 1 AND 5
    
    /* Where the switch location is different */
    WHERE CS1.SwitchNum != CS2.SwitchNum
    GROUP BY TumblingWindow(Duration(second, 1))
    
  4. Haga clic en Save(Guardar).Click Save.

Prueba de la consultaTest the query

Esta sección es opcional pero conveniente.This section is optional, but recommended.

  1. Si la aplicación TelcoStreaming no se ejecuta en este momento, siga estos pasos para iniciarla:If the TelcoStreaming app is not currently running, start it by following these steps:

    • Abra el símbolo del sistema.Open Command Prompt.

    • Vaya a la carpeta donde se encuentran los archivos telcogenerator.exe y telcodatagen.exe.config modificado.Go to the folder where the telcogenerator.exe and modified telcodatagen.exe.config files are.

    • Ejecute el siguiente comando:Run the following command:

      telcodatagen.exe 1000 .2 2

  2. En la página Consulta del trabajo de Stream Analytics, haga clic en los puntos que aparecen junto a la entrada CallStream y, después, seleccione Datos de ejemplo de la entrada.On the Query page for your Stream Analytics job, click the dots next to the CallStream input and then select Sample data from input.

  3. Especifique que quiere datos correspondientes a tres minutos y haga clic en OK.Specify that you want three minutes' worth of data and click OK. Espere a que se le notifique que se ha realizado un muestreo de los datos.Wait until you're notified that the data has been sampled.

  4. Haga clic en Probar y revise los resultados.Click Test and review the results.

Ejecutar el trabajoRun the job

  1. Asegúrese de que la aplicación TelcoStreaming se ejecuta.Make sure the TelcoStreaming app is running.

  2. Vaya a la página Información general del trabajo de Stream Analytics y seleccione Iniciar.Navigate to the Overview page for your Stream Analytics job and select Start.

    Inicio del trabajo de Stream Analytics

El trabajo de Stream Analytics empieza a buscar llamadas fraudulentas en el flujo entrante.Your Streaming Analytics job starts looking for fraudulent calls in the incoming stream. También crea el conjunto de datos y la tabla en Power BI y empieza a enviarles datos sobre las llamadas fraudulentas.The job also creates the dataset and table in Power BI and starts sending data about the fraudulent calls to them.

Creación del panel en Power BICreate the dashboard in Power BI

  1. Vaya a Powerbi.com e inicie sesión con su cuenta profesional o educativa.Go to Powerbi.com and sign in with your work or school account. Si la consulta del trabajo de Stream Analytics genera resultados, verá que el conjunto de datos ya se ha creado:If the Stream Analytics job query outputs results, you see that your dataset is already created:

    Ubicación del conjunto de datos de streaming en Power BI

  2. En el área de trabajo, haga clic en + Crear.In your workspace, click + Create.

    Botón Crear en el área de trabajo de Power BI

  3. Cree otro panel y asígnele el nombre Fraudulent Calls.Create a new dashboard and name it Fraudulent Calls.

    Creación de un panel y asignación de un nombre en el área de trabajo de Power BI

  4. En la parte superior de la ventana, haga clic en Agregar icono, seleccione DATOS DE TRANSMISIÓN PERSONALIZADOS y luego haga clic en Siguiente.At the top of the window, click Add tile, select CUSTOM STREAMING DATA, and then click Next.

    Icono de conjunto de datos de streaming personalizado en Power BI

  5. En YOUR DATSETS (SUS CONJUNTOS DE DATOS), seleccione el conjunto de datos y haga clic en Siguiente.Under YOUR DATSETS, select your dataset and then click Next.

    Conjunto de datos de streaming en Power BI

  6. En Tipo de visualización, seleccione Tarjeta y luego, en la lista Campos, seleccione fraudulentcalls.Under Visualization Type, select Card, and then in the Fields list, select fraudulentcalls.

    Detalles de visualización del nuevo icono

  7. Haga clic en Next.Click Next.

  8. Rellene detalles del icono, como el título y el subtítulo.Fill in tile details like a title and subtitle.

    Título y subtítulo del nuevo icono

  9. Haga clic en Aplicar.Click Apply.

    Ahora tiene un contador de fraudes.Now you have a fraud counter!

    Contador de fraudes en el panel de Power BI

  10. Siga de nuevo los pasos para agregar un icono (a partir del paso 4).Follow the steps again to add a tile (starting with step 4). Esta vez, haga lo siguiente:This time, do the following:

    • Cuando obtenga el Tipo de visualización, seleccione Gráfico de líneas.When you get to Visualization Type, select Line chart.

    • Agregue un eje y seleccione windowend.Add an axis and select windowend.

    • Agregue un valor y seleccione fraudulentcalls.Add a value and select fraudulentcalls.

    • En Período de tiempo para mostrar, seleccione los últimos 10 minutos.For Time window to display, select the last 10 minutes.

      Creación de un icono de gráfico de líneas en Power BI

  11. Haga clic en Siguiente, agregue el título y el subtítulo y haga clic en Aplicar.Click Next, add a title and subtitle, and click Apply.

    El panel de Power BI le ofrece ahora dos vistas de datos sobre las llamadas fraudulentas detectadas en los datos de streaming.The Power BI dashboard now gives you two views of data about fraudulent calls as detected in the streaming data.

    Panel de Power BI finalizado que muestra dos iconos de llamadas fraudulentas

Más información sobre limitaciones y prácticas recomendadasLearn about limitations and best practices

Actualmente, se puede llamar a Power BI una vez por segundo aproximadamente.Currently, Power BI can be called roughly once per second. Los objetos visuales de streaming admiten paquetes de 15 KB.Streaming visuals support packets of 15 KB. Si el tamaño es superior, se producirá un error en los objetos visuales de streaming (pero la inserción continuará funcionando).Beyond that, streaming visuals fail (but push continues to work). Gracias a estas limitaciones, Power BI se presta de forma más natural a los casos en los que Azure Stream Analytics realiza una reducción considerable de la carga de datos.Because of these limitations, Power BI lends itself most naturally to cases where Azure Stream Analytics does a significant data load reduction. Se recomienda utilizar una ventana de saltos de tamaño constante o una ventana de salto para asegurarse de que la inserción de datos es a lo sumo de una inserción por segundo y de que la consulta se ajusta a los requisitos de capacidad de procesamiento.We recommend using a Tumbling window or Hopping window to ensure that data push is at most one push per second, and that your query lands within the throughput requirements.

Puede utilizar la siguiente ecuación para calcular el valor que asignar a la ventana en segundos:You can use the following equation to compute the value to give your window in seconds:

Ecuación para calcular el valor para asignar a la ventana en segundos

Por ejemplo:For example:

  • Tiene 1000 dispositivos que envían datos a intervalos de un segundo.You have 1,000 devices sending data at one-second intervals.
  • Está usando Power BI Pro SKU que admite 1 000 000 de filas por hora.You are using the Power BI Pro SKU that supports 1,000,000 rows per hour.
  • Desea publicar la cantidad media de datos por dispositivo en Power BI.You want to publish the amount of average data per device to Power BI.

En consecuencia, la ecuación se convierte en:As a result, the equation becomes:

Ecuación según los criterios de ejemplo

Con esta configuración, se puede cambiar la consulta original a la siguiente:Given this configuration, you can change the original query to the following:

    SELECT
        MAX(hmdt) AS hmdt,
        MAX(temp) AS temp,
        System.TimeStamp AS time,
        dspl
    INTO "CallStream-PowerBI"
    FROM
        Input TIMESTAMP BY time
    GROUP BY
        TUMBLINGWINDOW(ss,4),
        dspl

Renovar la autorizaciónRenew authorization

Si la contraseña ha cambiado desde que se creó o autenticó por última vez el trabajo, tendrá que volver a autenticar la cuenta de Power BI.If the password has changed since your job was created or last authenticated, you need to reauthenticate your Power BI account. Si Azure AD Multi-Factor Authentication se configura en el inquilino de Azure Active Directory (Azure AD), también debe renovar la autorización de Power BI cada dos semanas.If Azure AD Multi-Factor Authentication is configured on your Azure Active Directory (Azure AD) tenant, you also need to renew Power BI authorization every two weeks. Si no se renueva, podrían aparecer síntomas, como la ausencia de salida del trabajo o un Authenticate user error en los registros de operaciones.If you don't renew, you could see symptoms such as a lack of job output or an Authenticate user error in the operation logs.

De forma similar, si un trabajo intenta iniciarse después de que el token haya caducado, se producirá un error y no se iniciará.Similarly, if a job starts after the token has expired, an error occurs and the job fails. Para resolver este problema, detenga el trabajo en ejecución y vaya a la salida de Power BI.To resolve this issue, stop the job that's running and go to your Power BI output. A fin de evitar que se pierdan datos, seleccione el vínculo Renovar autorización y reinicie el trabajo desde la Hora de la última detención.To avoid data loss, select the Renew authorization link, and then restart your job from the Last Stopped Time.

Después de que la autorización se haya actualizado con Power BI, se mostrará una alerta verde en el área de autorización para indicar que el problema se ha resuelto.After the authorization has been refreshed with Power BI, a green alert appears in the authorization area to reflect that the issue has been resolved.

Pasos siguientesNext steps