Conectividad de Power BI con el vínculo semántico

La conectividad de Power BI está en el núcleo del vínculo semántico en Microsoft Fabric. En este artículo se describen las formas en que el vínculo semántico proporciona conectividad a los modelos semánticos para los usuarios de los ecosistemas de Pandas de Python y de Apache Spark.

Un modelo semántico suele representar un estándar alto de datos y es el resultado de la mejora y el procesamiento de datos del canal de subida. El analista de negocios puede:

  • Codifique su conocimiento de dominio y la lógica de negocios en medidas de Power BI.
  • Crear informes en Power BI mediante el uso de modelos semánticos.
  • Utilice estos informes para impulsar las decisiones de empresa.

Cuando los científicos de datos que trabajan con los mismos modelos semánticos intentan duplicar la lógica de negocios en distintos lenguages o entornos de código, pueden producirse errores críticos. El vínculo semántico puentea la brecha entre los modelos semánticos y la Ciencia de datos synapse en la experiencia de Microsoft Fabric para proporcionar una forma en que los analistas de negocios y los científicos de datos colaboren sin problemas y reduzcan la falta de coincidencia de datos.

El vínculo semántico ofrece conectividad con:

  • El ecosistema de pandas de Python a través de la biblioteca de Python de SemPy.
  • Modelo semánticos a través del conector nativo de Spark que admite PySpark, Spark SQL, R y Scala.

Conectividad de datos a través de la biblioteca de Python de SemPy para usuarios de pandas

La biblioteca de Python de SemPy forma parte de la característica de vínculo semántico y sirve a los usuarios de pandas. La funcionalidad SemPy incluye la recuperación de datos de tablas, cálculo de medidas, y ejecución de consultas Data Analysis Expressions (DAX) y metadatos.

  • 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.

  • Para Spark 3.3 y versiones anteriores, o para actualizar a la versión más reciente del vínculo semántico, ejecute el siguiente comando:

    %pip install -U semantic-link
    

SemPy también extiende DataFrames de pandas con metadatos añadidos propagados desde el origen de datos de Power BI. Los metadatos incluyen:

  • Categorías de datos de Power BI:
    • Geográfico: dirección, lugar, ciudad
    • Dirección URL: dirección URL web, dirección URL de imagen
    • Código de barras
  • Relaciones entre tablas
  • Jerarquías

El conector nativo de vínculo semántico de Spark permite a los usuarios de Spark acceder a las tablas y medidas de Power BI. El conector es independiente del lenguaje y admite PySpark, Spark SQL, R y Scala.

Para usar el conector nativo de Spark, usted representa modelos semánticos como espacios de nombres de Spark y expone de forma transparente tablas de Power BI como tablas de Spark.

El siguiente comando configura Spark para utilizar el conector nativo de Power BI Spark para Spark SQL:

spark.conf.set("spark.sql.catalog.pbi", "com.microsoft.azure.synapse.ml.powerbi.PowerBICatalog")

# Optionally, configure the workspace using its ID
# Resolve workspace name to ID using fabric.resolve_workspace_id("My workspace")
# Replace 00000000-0000-0000-0000-000000000000 with your own workspace ID
# spark.conf.set("spark.sql.catalog.pbi.workspace, "00000000-0000-0000-0000-000000000000")

El siguiente comando enumera todas las tablas de un modelo semántico denominado Sales Dataset:

%%sql
SHOW TABLES FROM pbi.`Sales Dataset`

El siguiente comando muestra los datos de la tabla Customer en el modelo semántico Sales Dataset:

%%sql
SELECT * FROM pbi.`Sales Dataset`.Customer

Las medidas de Power BI son accesibles a través de la tabla virtual _Metrics para unir Spark SQL relacional con Power BI multidimensional. En el ejemplo siguiente, Total Revenue y Revenue Budget son medidas definidas en el modelo semánticoSales Dataset, y las columnas restantes son dimensiones. Las funciones de agregación como AVG se omiten para las medidas y solo están presentes para proporcionar coherencia con SQL.

El conector admite la inserción de predicados del cálculo como Customer[State] in ('CA', 'WA') de vexpresiones de Spark en el motor de Power BI para permitir el uso del motor optimizado de Power BI.

SELECT
    `Customer[Country/Region]`,
    `Industry[Industry]`,
    AVG(`Total Revenue`),
    AVG(`Revenue Budget`)
FROM
    pbi.`Sales Dataset`.`_Metrics`
WHERE
    `Customer[State]` in ('CA', 'WA')
GROUP BY
    `Customer[Country/Region]`,
    `Industry[Industry]`

Aumento de datos con medidas de Power BI

La operación de add_measure es una característica eficaz del vínculo semántico que permite aumentar los datos con medidas de los modelos semánticos. Esta operación solo está disponible en la biblioteca de Python de SemPy y no es compatible con el conector nativo de Spark. Para obtener más información sobre el add_measure método, consulte add_measure en la FabricDataFrame documentación de clase.

Para utilizar la biblioteca Python de SemPy, instálela en su kernel de cuaderno ejecutando el siguiente código en una celda del cuaderno:

# %pip and import only needs to be done once per notebook
%pip install semantic-link
from sempy.fabric import FabricDataFrame

En el ejemplo del siguiente código se supone que tiene un FabricDataFrame existente con datos que desea aumentar con medidas de un modelo semántico.

df = FabricDataFrame({
        "Sales Agent": ["Agent 1", "Agent 1", "Agent 2"],
        "Customer[Country/Region]": ["US", "GB", "US"],
        "Industry[Industry]": ["Services", "CPG", "Manufacturing"],
    }
)

joined_df = df.add_measure(["Total Revenue", "Total Budget"], dataset="Sales Dataset")

El método add_measure realiza los siguientes pasos:

  1. Resuelve los nombres de columna en el FabricDataFrame a las dimensiones de Power BI. La operación omite los nombres de columna que no se pueden resolver en el modelo semántico especificado. Para más información, consulte la sintaxis DAX admitida.
  2. Define las columnas group by, mediante el uso de los nombres de columna resueltos.
  3. Calcula una o más medidas en el nivel group by.
  4. Filtra el resultado por las filas existentes en FabricDataFrame.