Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule nauczysz się odczytywać dane, metadane i oceniać miary w modelach semantycznych przy użyciu biblioteki języka Python SemPy w usłudze Microsoft Fabric. Dowiesz się również, jak zapisywać dane, z których mogą korzystać semantyczne modele.
Wymagania wstępne
Uzyskaj subskrypcję usługi Microsoft Fabric. Możesz też utworzyć konto bezpłatnej wersji próbnej usługi Microsoft Fabric.
Zaloguj się do usługi Microsoft Fabric.
Przełącz się na Fabric, używając przełącznika nawigacji w lewej dolnej części strony głównej.
- Przejdź do środowiska nauki o danych w usłudze Microsoft Fabric.
- Utwórz nowy notatnik, aby kopiować i wklejać kod do komórek.
- 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. Jeśli używasz platformy Spark 3.3 lub nowszej albo chcesz zaktualizować do najnowszej wersji narzędzia Semantic Link, możesz uruchomić polecenie:
python %pip install -U semantic-link - Dodaj Lakehouse do notesu
- Pobierz model semantyczny Customer Profitability Sample.pbix z folderu datasets repozytorium fabric-samples i zapisz go lokalnie.
Prześlij model semantyczny do swojego obszaru roboczego
W tym artykule jest używany model semantyczny Customer Profitability Sample.pbix . Semantyczny model odwołuje się do firmy produkującej materiały marketingowe. Obejmuje ona dane dotyczące produktów, klientów i przychodów dla różnych jednostek biznesowych.
- Otwórz obszar roboczy w usłudze Fabric Data Science.
- Wybierz Importuj > Raport, Raport stronicowany lub Skoroszyt > z tego komputera, a następnie wybierz Customer Profitability Sample.pbix model semantyczny.
Po zakończeniu przesyłania, obszar roboczy będzie zawierał trzy nowe elementy: raport Power BI, pulpit nawigacyjny oraz model semantyczny o nazwie Customer Profitability Sample. Kroki opisane w tym artykule opierają się na tym modelu semantycznym.
Odczytywanie danych z modeli semantycznych przy użyciu języka Python
Interfejs API języka Python SemPy może pobierać dane i metadane z modeli semantycznych znajdujących się w obszarze roboczym usługi Microsoft Fabric. Interfejs API może również wykonywać na nich zapytania.
Twój notes, semantyczny model zestawu danych usługi Power BI i lakehouse mogą znajdować się w tym samym obszarze roboczym lub w różnych obszarach roboczych. Domyślnie program SemPy próbuje uzyskać dostęp do modelu semantycznego z:
- Obszar roboczy jeziora danych, jeśli dołączyłeś jezioro danych do swojego notatnika.
- Obszar roboczy twojego notesu, jeśli nie jest dołączony żaden lakehouse.
Jeśli model semantyczny nie znajduje się w jednym z tych obszarów roboczych, podczas wywoływania metody SemPy należy określić obszar roboczy modelu semantycznego.
Aby odczytać dane z modeli semantycznych, wykonaj następujące kroki:
Wyświetl listę dostępnych modeli semantycznych w obszarze roboczym.
import sempy.fabric as fabric df_datasets = fabric.list_datasets() df_datasetsWyświetl tabele dostępne w modelu semantycznym Customer Profitability Sample .
df_tables = fabric.list_tables("Customer Profitability Sample", include_columns=True) df_tablesWymień miary zdefiniowane w semantycznym modelu przykładowym Customer Profitability.
Wskazówka
W poniższym przykładzie kodu określono obszar roboczy dla biblioteki SemPy, który ma być używany do uzyskiwania dostępu do modelu semantycznego. Możesz zastąpić
<Your Workspace>nazwą obszaru roboczego, do którego przesłałeś model semantyczny (z sekcji Przesłać model semantyczny do obszaru roboczego).df_measures = fabric.list_measures("Customer Profitability Sample", workspace="<Your Workspace>") df_measuresW tym miejscu ustaliliśmy, że tabela Klient jest tabelą, która nas interesuje.
Przeczytaj tabelę Customer z Customer Profitability Sample modelu semantycznego.
df_table = fabric.read_table("Customer Profitability Sample", "Customer") df_tableUwaga
- Dane są pobierane przy użyciu kodu XMLA, co wymaga włączenia co najmniej funkcji XMLA tylko do odczytu .
- Ilość pobieranych danych jest ograniczona przez: — maksymalna ilość pamięci na zapytanie jednostki SKU pojemności, która hostuje model semantyczny. — Węzeł sterujący Spark, który uruchamia notebook (odwiedź stronę rozmiarów węzłów, aby uzyskać więcej informacji).
- Wszystkie żądania używają niskiego priorytetu, aby zminimalizować wpływ na wydajność usług Microsoft Azure Analysis Services i są rozliczane jako żądania interakcyjne.
Oceń miarę Total Revenue (Łączny przychód ) dla stanu i daty każdego klienta.
df_measure = fabric.evaluate_measure( "Customer Profitability Sample", "Total Revenue", ["'Customer'[State]", "Calendar[Date]"]) df_measureUwaga
- Domyślnie dane nie są pobierane za pomocą XMLA, więc nie trzeba włączać trybu tylko do odczytu XMLA.
- Dane nie podlegają ograniczeniom zaplecza usługi Power BI.
- Ilość pobieranych danych jest ograniczona przez: — maksymalna ilość pamięci na zapytanie jednostki SKU pojemności obsługującej model semantyczny. — Węzeł sterujący Spark, który uruchamia notebook (odwiedź stronę rozmiarów węzłów, aby uzyskać więcej informacji).
- Wszystkie żądania są rozliczane jako żądania interakcyjne.
- Funkcja
evaluate_daxnie odświeża automatycznie modelu semantycznego. Odwiedź tę stronę , aby uzyskać więcej szczegółów.
Aby dodać filtry do obliczenia miary, określ listę dopuszczalnych wartości dla określonej kolumny.
filters = { "State[Region]": ["East", "Central"], "State[State]": ["FLORIDA", "NEW YORK"] } df_measure = fabric.evaluate_measure( "Customer Profitability Sample", "Total Revenue", ["Customer[State]", "Calendar[Date]"], filters=filters) df_measureOceń miarę Total Revenue w odniesieniu do stanu i daty klientów za pomocą zapytania DAX.
df_dax = fabric.evaluate_dax( "Customer Profitability Sample", """ EVALUATE SUMMARIZECOLUMNS( 'State'[Region], 'Calendar'[Date].[Year], 'Calendar'[Date].[Month], "Total Revenue", CALCULATE([Total Revenue])) """)Uwaga
- Dane są pobierane przy użyciu XMLA i dlatego wymaga włączenia co najmniej uprawnień XMLA tylko do odczytu.
- Ilość danych możliwych do odzyskania jest ograniczona przez dostępną pamięć w Microsoft Azure Analysis Services i węźle sterującym Spark (odwiedź rozmiary węzłów, aby uzyskać więcej informacji)
- Wszystkie żądania używają niskiego priorytetu, aby zminimalizować wpływ na wydajność usług Analysis Services i są rozliczane jako żądania interakcyjne
Użyj funkcji magicznej komórki
%%dax, aby ocenić to samo zapytanie DAX, bez konieczności importowania biblioteki. Uruchom tę komórkę, aby załadować%%daxmagię komórek:%load_ext sempyParametr obszaru roboczego jest opcjonalny. Jest zgodny z tymi samymi regułami co parametr obszaru roboczego
evaluate_daxfunkcji.Magia komórki obsługuje również dostęp do zmiennych języka Python ze składnią
{variable_name}. Aby użyć nawiasu klamrowego w zapytaniu DAX, należy go poprzedzić drugim nawiasem klamrowym (na przykład:EVALUATE {{1}}).%%dax "Customer Profitability Sample" -w "<Your Workspace>" EVALUATE SUMMARIZECOLUMNS( 'State'[Region], 'Calendar'[Date].[Year], 'Calendar'[Date].[Month], "Total Revenue", CALCULATE([Total Revenue]))Wynikowy element FabricDataFrame jest dostępny za pośrednictwem zmiennej
_. Ta zmienna zapisuje dane wyjściowe ostatniej wykonanej komórki.df_dax = _ df_dax.head()Miary można dodawać do danych pobranych ze źródeł zewnętrznych. To podejście łączy trzy zadania:
- Przypisuje nazwy kolumn do wymiarów w Power BI
- Definiuje grupowanie według kolumn
- Filtruje ona miarę Wszystkie nazwy kolumn, których nie można rozpoznać w danym modelu semantycznym, są ignorowane (odwiedź obsługiwany zasób składni języka DAX, aby uzyskać więcej informacji).
from sempy.fabric import FabricDataFrame 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", dataset="Customer Profitability Sample") joined_df
Specjalne parametry
Metody SemPy read_table i evaluate_measure mają więcej parametrów, które są przydatne do manipulowania wynikiem. Te parametry obejmują:
-
pandas_convert_dtypes: Jeśli ustawiono wartośćTrue, biblioteka pandas rzutuje wynikowe kolumny DataFrame na najlepszy możliwy typ danych. Dowiedz się więcej w convert_dtypes. Jeśli ten parametr jest wyłączony, mogą wystąpić problemy z niezgodnością typów między kolumnami powiązanych tabel. Model usługi Power BI może nie wykryć tych problemów z powodu niejawnej konwersji typu DAX.
Oprogramowanie SemPy read_table używa również informacji o modelu, które udostępnia usługa Power BI.
-
multiindex_hierarchies: Jeśli ustawiono wartośćTrue, konwertuje hierarchie usługi Power BI na strukturę pandas MultiIndex.
Zapisywanie danych do wykorzystania przez modele semantyczne
Tabele platformy Spark dodane do usługi Lakehouse są automatycznie dodawane do odpowiedniego domyślnego modelu semantycznego. W tym artykule pokazano, jak zapisywać dane do podłączonego Lakehouse.
FabricDataFrame akceptuje te same dane wejściowe co ramki danych Pandas.
from sempy.fabric import FabricDataFrame
df_forecast = FabricDataFrame({'ForecastedRevenue': [1, 2, 3]})
df_forecast.to_lakehouse_table("ForecastTable")
Za pomocą usługi Power BI tabela ForecastTable można dodać do złożonego modelu semantycznego, który zawiera semantyczny model lakehouse.