Compartir a través de


Lectura de modelos semánticos y escritura de datos consumibles por Power BI con Spark

En este artículo, aprenderá a leer datos y metadatos, y a evaluar medidas en modelos semánticos mediante el conector nativo de vínculo semántico de Spark en Microsoft Fabric. También aprenderá a escribir datos que los modelos semánticos pueden usar.

Requisitos previos

  • Vaya a la experiencia de Ciencia de datos en Microsoft Fabric.

    • En el panel izquierdo, seleccione Cargas de trabajo.
    • Seleccione Data Science.
  • Cree un nuevo cuaderno, para copiar/pegar código en las celdas.

  • Para Spark 3.4 y versiones posteriores, el vínculo semántico está disponible en el entorno de ejecución predeterminado al usar Fabric y no es necesario instalarlo. Si usa Spark 3.3 o más adelante, o si desea actualizar a la versión más reciente de Semantic Link, puede ejecutar el comando :

    python %pip install -U semantic-link

  • Adición de un almacén de lago de datos al cuaderno.

  • Descargue el modelo semántico Customer Profitability Sample.pbix desde la carpeta datasets del repositorio fabric-samples, y guarde el modelo semántico localmente.

Carga del modelo semántico en el área de trabajo

En este artículo, se usa el modelo semántico Customer Profitability Sample.pbix. Este modelo semántico hace referencia a los materiales de marketing de una empresa y contiene datos sobre productos, clientes y los ingresos correspondientes de varias unidades de negocio.

  1. En el panel izquierdo, seleccione Áreas de trabajo y luego seleccione el nombre de su área de trabajo para abrirla.
  2. Seleccione Importar>Informe o Informe paginado>Desde este equipo y seleccione el modelo semántico Customer Profitability Sample.pbix.

Captura de pantalla que muestra la interfaz para cargar un modelo semántico en el área de trabajo.

Una vez finalizada la carga, el área de trabajo tiene tres artefactos nuevos: un informe de Power BI, un panel y un modelo semántico denominado Ejemplo de rentabilidad del cliente. Utiliza este modelo semántico para los pasos descritos en este artículo.

Captura de pantalla que muestra los elementos del archivo de Power BI cargados en el área de trabajo.

Lectura y escritura de datos mediante Spark en Python, R, SQL y Scala

De forma predeterminada, el área de trabajo que se usa para acceder a los modelos semánticos es:

  • el área de trabajo del almacén de lago asociado o
  • el área de trabajo del cuaderno, si no hay ningún almacén de lago asociado.

Microsoft Fabric expone todas las tablas de todos los modelos semánticos en el área de trabajo como tablas de Spark. Todos los comandos de Spark SQL se pueden ejecutar en Python, R y Scala. El conector nativo de vínculo semántico de Spark admite la inserción de predicados de Spark en el motor de Power BI.

Sugerencia

Dado que las tablas y medidas de Power BI se exponen como tablas de Spark normales, se pueden combinar con otros orígenes de datos de Spark en una sola consulta.

  1. Enumere las tablas de todos los modelos semánticos del área de trabajo mediante PySpark.

    df = spark.sql("SHOW TABLES FROM pbi")
    display(df)
    
  2. Recupere los datos de la tabla Customer del modelo semántico Ejemplo de rentabilidad del cliente mediante SparkR.

    Nota:

    La recuperación de tablas está sujeta a limitaciones estrictas (consulte Limitaciones de lectura) y los resultados podrían estar incompletos. Use la delegación de agregados para reducir la cantidad de datos transferidos. Los agregados admitidos son: COUNT, SUM, AVG, MIN y MAX.

    %%sparkr
    
    df = sql("SELECT * FROM pbi.`Customer Profitability Sample`.Customer")
    display(df)
    
  3. Las medidas de Power BI están disponibles mediante la tabla virtual _Metrics. La consulta siguiente calcula los ingresos totales y el presupuesto de ingresos por región y sector.

    %%sql
    
    SELECT
        `Customer[Country/Region]`,
        `Industry[Industry]`,
        AVG(`Total Revenue`),
        AVG(`Revenue Budget`)
    FROM
        pbi.`Customer Profitability Sample`.`_Metrics`
    WHERE
        `Customer[State]` in ('CA', 'WA')
    GROUP BY
        `Customer[Country/Region]`,
        `Industry[Industry]`
    
  4. Inspeccione las medidas y dimensiones disponibles mediante un esquema de Spark.

    spark.table("pbi.`Customer Profitability Sample`._Metrics").printSchema()
    
  5. Guarde los datos en un almacén de lago como tabla delta.

    delta_table_path = "<your delta table path>" #fill in your delta table path 
    df.write.format("delta").mode("overwrite").save(delta_table_path)
    

Limitaciones de acceso de lectura

Las API de acceso de lectura tienen las siguientes limitaciones:

  • Las consultas que duran más de 10 segundos en el Servicio de Análisis no se admiten (indicación dentro de Spark: "java.net.SocketTimeoutException: error de comunicación del servicio PowerBI")
  • El acceso a tablas de Power BI mediante Spark SQL está sujeto a las limitaciones de back-end de Power BI.
  • El empuje de predicado para las consultas de Spark _Metrics se limita a una sola expresión IN y requiere al menos dos elementos. Las expresiones IN adicionales y los predicados no admitidos se evalúan en Spark después de la transferencia de datos.
  • La delegación de predicados de las tablas de Power BI a las que se accede mediante Spark SQL no admite las expresiones siguientes:
  • La sesión de Spark debe reiniciarse para que los nuevos modelos semánticos sean accesibles en Spark SQL.