Udostępnij przez


Łączność usługi Power BI z linkiem semantycznym

Łączność z usługą Power BI jest podstawą linku semantycznego w usłudze Microsoft Fabric. W tym artykule opisano sposoby, w jakie link semantyczny zapewnia łączność z semantycznymi modelami dla użytkowników ekosystemów bibliotek pandas języka Python i platformy Apache Spark.

Model semantyczny zwykle reprezentuje wysoki standard danych, który jest wynikiem nadrzędnego przetwarzania i uściślenia danych. Analitycy biznesowi mogą:

  • Kodowanie wiedzy o domenie i logiki biznesowej do miar usługi Power BI.
  • Tworzenie raportów usługi Power BI przy użyciu modeli semantycznych.
  • Te raporty umożliwiają podejmowanie decyzji biznesowych.

Gdy naukowcy danych pracujący z tymi samymi modelami semantycznymi próbują zduplikować logikę biznesową w różnych środowiskach kodowania lub językach, może to prowadzić do krytycznych błędów. Semantyczne połączenie wypełnia lukę między modelami semantycznymi a doświadczeniem Nauki o danych w Synapse w Microsoft Fabric, umożliwiając analitykom biznesowym i naukowcom zajmującym się danymi bezproblemową współpracę i zmniejszenie niezgodności danych.

Link semantyczny oferuje łączność z:

  • Ekosystem Python pandas poprzez bibliotekę Python SemPy.
  • Modele semantyczne za pośrednictwem natywnego łącznika platformy Spark, który obsługuje oprogramowanie PySpark, Spark SQL, R i Scala.

Łączność danych za pośrednictwem biblioteki języka Python SemPy dla użytkowników biblioteki pandas

Biblioteka SemPy języka Python jest częścią funkcji linku semantycznego i obsługuje użytkowników biblioteki pandas. Funkcje SemPy obejmują pobieranie danych z tabel, obliczanie miar i wykonywanie zapytań i metadanych języka Data Analysis Expressions (DAX).

  • W przypadku platformy Spark w wersji 3.4 lub nowszej link semantyczny jest dostępny w domyślnym środowisku uruchomieniowym podczas korzystania z Fabric i nie ma potrzeby jego instalowania.

  • W przypadku platformy Spark 3.3 lub nowszej albo zaktualizowania do najnowszej wersji linku semantycznego uruchom następujące polecenie:

    %pip install -U semantic-link
    

Biblioteka SemPy rozszerza również ramki danych pandas z dodanymi metadanymi propagowanymi ze źródła danych usługi Power BI. Te metadane obejmują:

  • Kategorie danych usługi Power BI:
    • Geograficzne: Adres, miejsce, miasto
    • Adres URL: internetowy adres URL, adres URL obrazu
    • Kod kreskowy
  • Relacje między tabelami
  • Hierarchie

Link semantyczny łącznik natywny platformy Spark umożliwia użytkownikom platformy Spark dostęp do tabel i miar usługi Power BI. Łącznik jest niezależny od języka i obsługuje oprogramowanie PySpark, Spark SQL, R i Scala.

Aby użyć natywnego łącznika Spark, reprezentujesz modele semantyczne jako przestrzenie nazw Spark i przezroczysto udostępniasz tabele Power BI jako tabele Spark.

Następujące polecenie konfiguruje platformę Spark do używania natywnego łącznika platformy Power BI Spark dla usługi 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")

Następujące polecenie wyświetla listę wszystkich tabel w modelu semantycznym o nazwie Sales Dataset:

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

Następujące polecenie wyświetla dane z Customer tabeli w modelu Sales Datasetsemantycznym :

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

Miary Power BI są dostępne przez wirtualną tabelę _Metrics, co pozwala na połączenie relacyjnego Spark SQL z wielowymiarową usługą Power BI. W poniższym przykładzie Total Revenue i Revenue Budget są miarami zdefiniowanymi w Sales Dataset modelu semantycznym, a pozostałe kolumny są wymiarami. Funkcje agregacji, takie jak AVG , są ignorowane dla miar i są obecne tylko w celu zapewnienia spójności z językiem SQL.

Łącznik obsługuje przesunięcie predykatu obliczeń, takie jak Customer[State] in ('CA', 'WA'), z wyrażeń Spark do silnika Power BI, aby umożliwić korzystanie z zoptymalizowanego silnika 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]`

Rozszerzanie danych za pomocą miar usługi Power BI

Operacja add_measure jest zaawansowaną funkcją linku semantycznego, która umożliwia rozszerzanie danych miarami z modeli semantycznych. Ta operacja jest dostępna tylko w bibliotece języka Python SemPy i nie jest obsługiwana w łączniku natywnym platformy Spark. Aby uzyskać więcej informacji dotyczących metody add_measure, zobacz add_measure w dokumentacji FabricDataFrame klasy.

Aby użyć biblioteki SemPy języka Python, zainstaluj ją w jądrze notesu, uruchamiając następujący kod w komórce notesu:

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

W poniższym przykładzie kodu przyjęto założenie, że masz istniejącą ramkę FabricDataFrame z danymi, które mają zostać rozszerzone o miary z modelu semantycznego.

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")

Metoda add_measure wykonuje następujące czynności:

  1. Przypisuje nazwy kolumn w ramce danych FabricDataFrame do wymiarów Power BI. Operacja ignoruje wszystkie nazwy kolumn, których nie można rozpoznać w danym modelu semantycznym. Aby uzyskać więcej informacji, zobacz obsługiwaną składnię języka DAX.
  2. Definiuje group by kolumny przy użyciu rozpoznanych nazw kolumn.
  3. Na poziomie group by oblicza jedną lub więcej miar.
  4. Filtruje wynik według istniejących wierszy w elemencie FabricDataFrame.