Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam artikel ini, Anda belajar membaca data, metadata, dan mengevaluasi langkah-langkah dalam model semantik menggunakan pustaka SemPy Python di Microsoft Fabric. Anda juga belajar menulis data yang dapat dikonsumsi model semantik.
Prasyarat
Dapatkan langganan Microsoft Fabric. Atau, daftar untuk uji coba Microsoft Fabric gratis.
Masuk ke Microsoft Fabric.
Beralih ke Fabric dengan menggunakan pengalih pengalaman di sisi kiri bawah halaman beranda Anda.
- Buka pengalaman Ilmu Data di Microsoft Fabric.
- Buat buku catatan baru untuk menyalin dan menempelkan kode ke dalam sel.
- Untuk Spark 3.4 ke atas, tautan Semantic tersedia dalam runtime default saat menggunakan Fabric, dan tidak perlu menginstalnya. Jika Anda menggunakan Spark 3.3 atau yang lebih baru, atau jika Anda ingin memperbarui ke versi Terbaru Semantic Link, Anda dapat menjalankan perintah:
python %pip install -U semantic-link - Menambahkan Lakehouse ke buku catatan Anda
- Unduh model semantik Customer Profitability Sample.pbix dari folder himpunan data repositori fabric-samples dan simpan secara lokal.
Mengunggah model semantik ke ruang kerja Anda
Artikel ini menggunakan model semantik Customer Profitability Sample.pbix . Model semantik mereferensikan perusahaan yang memproduksi materi pemasaran. Ini termasuk data produk, pelanggan, dan pendapatan untuk unit bisnis yang berbeda.
- Buka ruang kerja Anda di Fabric Data Science.
- Pilih Impor > Laporan, Laporan Paginasi, atau Buku Kerja > Dari komputer ini, dan pilih model semantik Customer Profitability Sample.pbix .
Setelah unggahan selesai, ruang kerja Anda menyertakan tiga artefak baru: laporan Power BI, dasbor, dan model semantik bernama Sampel Profitabilitas Pelanggan. Langkah-langkah dalam artikel ini mengandalkan model semantik ini.
Menggunakan Python untuk membaca data dari model semantik
API Python SemPy dapat mengambil data dan metadata dari model semantik yang terletak di ruang kerja Microsoft Fabric. API juga dapat melakukan pemintaan pada data.
Notebook, model semantik himpunan data Power BI, dan lakehouse Anda dapat berada di ruang kerja yang sama atau di ruang kerja yang berbeda. Secara default, SemPy mencoba mengakses model semantik Anda dari:
- Ruang kerja lakehouse Anda, jika Anda menautkan lakehouse ke buku catatan Anda.
- Ruang kerja buku catatan Anda, jika tidak ada lakehouse yang terpasang.
Jika model semantik Anda tidak terletak di salah satu ruang kerja ini, Anda harus menentukan ruang kerja model semantik Anda saat memanggil metode SemPy.
Untuk membaca data dari model semantik, ikuti langkah-langkah berikut:
Cantumkan model semantik yang tersedia di ruang kerja Anda.
import sempy.fabric as fabric df_datasets = fabric.list_datasets() df_datasetsCantumkan tabel yang tersedia dalam model semantik Sampel Profitabilitas Pelanggan.
df_tables = fabric.list_tables("Customer Profitability Sample", include_columns=True) df_tablesCantumkan langkah-langkah yang ditentukan dalam model semantik Sampel Profitabilitas Pelanggan.
Tips
Dalam sampel kode berikut, kami menentukan ruang kerja yang digunakan SemPy untuk mengakses model semantik. Anda dapat mengganti
<Your Workspace>dengan nama ruang kerja tempat Anda mengunggah model semantik (dari bagian Unggah model semantik ke ruang kerja Anda).df_measures = fabric.list_measures("Customer Profitability Sample", workspace="<Your Workspace>") df_measuresDi sini, kami menentukan bahwa tabel Pelanggan adalah tabel yang menarik.
Baca tabel Pelanggan dari model semantik Sampel Profitabilitas Pelanggan.
df_table = fabric.read_table("Customer Profitability Sample", "Customer") df_tableCatatan
- Data diambil menggunakan XMLA, yang mengharuskan setidaknya XMLA hanya baca untuk diaktifkan.
- Jumlah data yang dapat diambil dibatasi oleh: - Memori maksimum untuk setiap kueri dari SKU kapasitas yang menjadi host model semantik. - Simpul driver Spark (kunjungi ukuran simpul untuk informasi lebih lanjut) yang menjalankan notebook.
- Semua permintaan menggunakan prioritas rendah untuk meminimalkan dampak pada performa Microsoft Azure Analysis Services dan ditagih sebagai permintaan interaktif.
Evaluasi ukuran Total Pendapatan untuk status dan tanggal setiap pelanggan.
df_measure = fabric.evaluate_measure( "Customer Profitability Sample", "Total Revenue", ["'Customer'[State]", "Calendar[Date]"]) df_measureCatatan
- Secara default, data tidak diambil menggunakan XMLA, sehingga XMLA baca-saja tidak perlu diaktifkan.
- Data tidak tunduk pada batasan backend Power BI.
- Jumlah data yang dapat diambil dibatasi oleh: - memori maksimum per kueri dari model semantik yang dihosting oleh SKU kapasitas. - Simpul driver Spark (kunjungi ukuran simpul untuk informasi lebih lanjut) yang menjalankan notebook.
- Semua permintaan ditagih sebagai permintaan interaktif.
- Fungsi
evaluate_daxini tidak menyegarkan model semantik secara otomatis. Kunjungi halaman ini untuk detail selengkapnya.
Untuk menambahkan filter ke perhitungan pengukuran, tentukan daftar nilai yang diizinkan untuk kolom tertentu.
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_measureEvaluasi ukuran Total Pendapatan per status dan tanggal pelanggan dengan kueri DAX.
df_dax = fabric.evaluate_dax( "Customer Profitability Sample", """ EVALUATE SUMMARIZECOLUMNS( 'State'[Region], 'Calendar'[Date].[Year], 'Calendar'[Date].[Month], "Total Revenue", CALCULATE([Total Revenue])) """)Catatan
- Data diambil menggunakan XMLA dan oleh karena itu mengharuskan setidaknya XMLA baca-saja untuk diaktifkan
- Jumlah data yang dapat diambil dibatasi oleh memori yang tersedia di Microsoft Azure Analysis Services dan simpul driver Spark (kunjungi ukuran simpul untuk informasi lebih lanjut)
- Semua permintaan menggunakan prioritas rendah untuk meminimalkan dampak pada performa Analysis Services dan ditagih sebagai permintaan interaktif
%%daxGunakan sihir sel untuk mengevaluasi kueri DAX yang sama, tanpa perlu mengimpor pustaka. Jalankan sel ini untuk memuat%%daxsihir sel:%load_ext sempyParameter ruang kerja bersifat opsional. Ini mengikuti aturan yang sama dengan parameter fungsi
evaluate_daxruang kerja.Sihir sel juga mendukung akses variabel Python dengan
{variable_name}sintaks. Untuk menggunakan kurung kurawal dalam kueri DAX, tambahkan kurung kurawal lain (misalnya:EVALUATE {{1}}).%%dax "Customer Profitability Sample" -w "<Your Workspace>" EVALUATE SUMMARIZECOLUMNS( 'State'[Region], 'Calendar'[Date].[Year], 'Calendar'[Date].[Month], "Total Revenue", CALCULATE([Total Revenue]))FabricDataFrame yang dihasilkan tersedia melalui
_variabel . Variabel tersebut memuat output dari sel terakhir yang dijalankan.df_dax = _ df_dax.head()Anda dapat menambahkan pengukuran ke data yang diambil dari sumber eksternal. Pendekatan ini menggabungkan tiga tugas:
- Ini mengaitkan nama kolom ke dimensi Power BI
- Ini menentukan grup menurut kolom
- Ini memfilter pengukuran Nama kolom apa pun yang tidak dapat diselesaikan dalam model semantik yang diberikan diabaikan (kunjungi sumber daya sintaks DAX yang didukung untuk informasi selengkapnya).
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
Parameter khusus
SemPy read_table dan evaluate_measure metode memiliki lebih banyak parameter yang berguna untuk memanipulasi output. Parameter ini meliputi:
-
pandas_convert_dtypes: Jika diatur keTrue, pandas akan mengonversi kolom DataFrame yang dihasilkan ke dtype terbaik. Pelajari selengkapnya di convert_dtypes. Jika parameter ini dinonaktifkan, masalah ketidakcocokan tipe antara kolom tabel terkait mungkin terjadi. Model Power BI mungkin tidak mendapati isu ini karena konversi jenis implisit DAX.
SemPy read_table juga menggunakan informasi model yang disediakan Power BI.
-
multiindex_hierarchies: Jika diatur keTrue, ini mengonversi hierarki Power BI ke struktur MultiIndex pandas.
Menulis data yang dapat dikonsumsi oleh model semantik
Tabel Spark yang ditambahkan ke Lakehouse secara otomatis ditambahkan ke model semantik default yang sesuai. Artikel ini menunjukkan bagaimana cara menulis data ke dalam Lakehouse yang terlampir.
FabricDataFrame menerima data input yang sama dengan dataframe Pandas.
from sempy.fabric import FabricDataFrame
df_forecast = FabricDataFrame({'ForecastedRevenue': [1, 2, 3]})
df_forecast.to_lakehouse_table("ForecastTable")
Dengan Power BI, tabel ForecastTable dapat ditambahkan ke model semantik komposit yang menyertakan model semantik Lakehouse.