Python kullanarak Power BI tarafından kullanılan anlamsal modellerden okuma ve veri yazma
Bu makalede, Microsoft Fabric'teki SemPy python kitaplığını kullanarak verileri ve meta verileri okumayı ve anlamsal modellerdeki ölçüleri değerlendirmeyi öğreneceksiniz. Ayrıca anlamsal modellerin kullanabileceği verileri yazmayı da öğreneceksiniz.
Önkoşullar
Microsoft Fabric aboneliği alın. Alternatif olarak, ücretsiz bir Microsoft Fabric deneme sürümüne kaydolun.
Synapse Veri Bilimi deneyimine geçmek için giriş sayfanızın sol tarafındaki deneyim değiştiriciyi kullanın.
- Microsoft Fabric'te Veri Bilimi deneyimine gidin.
- Hücrelere kod kopyalamak/yapıştırmak için yeni bir not defteri oluşturun.
- Spark 3.4 ve üzeri için Doku kullanılırken varsayılan çalışma zamanında Anlam bağlantısı kullanılabilir ve yüklemeniz gerekmez. Spark 3.3 veya üzerini kullanıyorsanız veya Anlam Bağlantısı'nın en son sürümüne güncelleştirmek istiyorsanız komutunu çalıştırabilirsiniz:
python %pip install -U semantic-link
- Not defterinize bir Lakehouse ekleyin.
- Fabric-samples deposunun datasets klasöründen Customer Profitability Sample.pbix anlam modelini indirin ve anlam modelini yerel olarak kaydedin.
Anlam modelini çalışma alanınıza yükleme
Bu makalede Customer Profitability Sample.pbix semantik modelini kullanacağız. Bu anlamsal model, pazarlama malzemeleri üreten bir şirkete başvurur ve çeşitli iş birimleri için ürünler, müşteriler ve buna karşılık gelen gelir hakkında veriler içerir.
- Çalışma alanınızı Doku Veri Bilimi'nde açın.
- Karşıya Yükle > Gözat'ı seçin ve Müşteri Kârlılığı Örneği.pbix anlam modelini seçin.
Karşıya yükleme tamamlandıktan sonra çalışma alanınızda üç yeni yapıt bulunur: Power BI raporu, pano ve Customer Profitability Sample adlı anlam modeli. Bu makaledeki adımlar için bu anlam modelini kullanacaksınız.
Anlam modellerinden veri okumak için Python kullanma
SemPy Python API'si, Bir Microsoft Fabric çalışma alanında bulunan anlam modellerinden veri ve meta veriler alabilir ve bunlar üzerinde sorgular yürütebilir.
Not defteriniz, Power BI veri kümesi anlam modeliniz ve lakehouse'unuz aynı çalışma alanında veya farklı çalışma alanlarında bulunabilir. Varsayılan olarak, SemPy semantik modelinize şu kaynaktan erişmeye çalışır:
- Not defterinize bir göl evi eklediyseniz, göl evinizin çalışma alanı.
- Ekli göl evi yoksa, not defterinizin çalışma alanı.
Anlam modeliniz bu çalışma alanlarının herhangi birinde yer almıyorsa, SemPy yöntemini çağırırken anlamsal modelinizin çalışma alanını belirtmeniz gerekir.
Anlam modellerinden verileri okumak için:
Çalışma alanınızdaki kullanılabilir anlam modellerini listeleyin.
import sempy.fabric as fabric df_datasets = fabric.list_datasets() df_datasets
Müşteri Kârlılığı Örneği anlam modelinde bulunan tabloları listeleyin.
df_tables = fabric.list_tables("Customer Profitability Sample", include_columns=True) df_tables
Müşteri Kârlılığı Örneği anlam modelinde tanımlanan ölçüleri listeleyin.
İpucu
Aşağıdaki kodda SemPy'nin anlam modeline erişmek için kullanacağımız çalışma alanını belirttik. yerine
Your Workspace
anlam modelini yüklediğiniz çalışma alanının adını kullanabilirsiniz ( anlam modelini çalışma alanınıza yükleme bölümünden).df_measures = fabric.list_measures("Customer Profitability Sample", workspace="Your Workspace") df_measures
Şimdi Müşteri tablosunun ilgilendiğiniz tablo olduğunu belirledik.
Müşteri Kârlılığı Örneği anlam modelinden Müşteri tablosunu okuyun.
df_table = fabric.read_table("Customer Profitability Sample", "Customer") df_table
Not
- Veriler XMLA kullanılarak alınır ve bu nedenle en az XMLA'nın salt okunur olarak etkinleştirilmesi gerekir.
- Alınabilen veri miktarı, anlam modelini barındıran kapasite SKU'sunun sorgusu başına en yüksek bellek miktarı ve not defterini çalıştıran Spark sürücü düğümü (bkz. düğüm boyutları) ile sınırlıdır.
- Tüm istekler, Microsoft Azure Analysis Services performansı üzerindeki etkiyi en aza indirmek için düşük önceliklidir ve etkileşimli istekler olarak faturalandırılır.
Müşterinin durumu ve tarihi başına Toplam Gelir ölçüsünü değerlendirin.
df_measure = fabric.evaluate_measure( "Customer Profitability Sample", "Total Revenue", ["'Customer'[State]", "Calendar[Date]"]) df_measure
Not
- Varsayılan olarak, veriler XMLA kullanılarak alınmaz ve bu nedenle XMLA'nın salt okunur olarak etkinleştirilmesini gerektirmez.
- Ayrıca veriler Power BI arka uç sınırlamalarına tabi değildir.
- Alınabilen veri miktarı, anlam modelini barındıran kapasite SKU'sunun sorgusu başına en yüksek bellek miktarı ve not defterini çalıştıran Spark sürücü düğümü (bkz. düğüm boyutları) ile sınırlıdır.
- Tüm istekler etkileşimli istekler olarak faturalandırılır.
Belirli bir sütunda bulunabilecek değerlerin listesini belirterek ölçü hesaplamasına filtre ekleyebilirsiniz.
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_measure
DaX sorgusu kullanarak müşterinin durumu ve tarihi başına Toplam Gelir ölçüsünü de değerlendirebilirsiniz.
df_dax = fabric.evaluate_dax( "Customer Profitability Sample", """ EVALUATE SUMMARIZECOLUMNS( 'State'[Region], 'Calendar'[Date].[Year], 'Calendar'[Date].[Month], "Total Revenue", CALCULATE([Total Revenue])) """)
Not
- Veriler XMLA kullanılarak alınır ve bu nedenle en az XMLA'nın salt okunur olarak etkinleştirilmesi gerekir.
- Alınabilir veri miktarı, Microsoft Azure Analysis Services ve Spark sürücü düğümündeki kullanılabilir bellekle sınırlıdır (bkz. düğüm boyutları).
- Tüm istekler Analysis Services performansı üzerindeki etkiyi en aza indirmek için düşük öncelikli kullanır ve etkileşimli istekler olarak faturalandırılır.
Hücre sihrini kullanarak kitaplığı içeri aktarmanıza gerek kalmadan aynı DAX sorgusunu
%%dax
değerlendirebilirsiniz. Hücre sihrini yüklemek%%dax
için aşağıdaki hücreyi çalıştıralım.%load_ext sempy
Çalışma alanı parametresi isteğe bağlıdır ve işlevin çalışma alanı parametresiyle
evaluate_dax
aynı kuralları izler. Hücre sihri, söz dizimini kullanarak Python değişkenlerine{variable_name}
erişimi de destekler. DAX sorgusunda küme ayracı kullanmak için, başka bir küme ayracıyla (örn.EVALUATE {{1}}
) bu küme ayracından kurtulın.%%dax "Customer Profitability Sample" -w "Your Workspace" EVALUATE SUMMARIZECOLUMNS( 'State'[Region], 'Calendar'[Date].[Year], 'Calendar'[Date].[Month], "Total Revenue", CALCULATE([Total Revenue]))
Elde edilen FabricDataFrame, son yürütülen hücrenin çıkışını yakalayan değişkeni aracılığıyla
_
kullanılabilir.df_dax = _ df_dax.head()
Alternatif olarak, dış kaynaklardan alınan verilere ölçüler ekleyebilirsiniz. Bu yaklaşım üç görevi birleştirir: Sütun adlarını Power BI boyutlarına çözümler, sütunlara göre gruplandırma tanımlar ve ölçüyü filtreler. Belirli bir anlam modeli içinde çözümlenebilen tüm sütun adları yoksayılır (desteklenen DAX söz dizimine bakın).
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
Özel parametreler
SemPy read_table
ve evaluate_measure
yöntemleri, çıkışı işlemek için yararlı olan daha fazla parametreye sahiptir. Bu parametreler şunlardır:
fully_qualified_columns
: Değer "True" ise, yöntemler biçimindeTableName[ColumnName]
sütun adları döndürür.num_rows
: Sonuçta çıkış olarak elde edilen satır sayısı.pandas_convert_dtypes
: Değer "True" ise, sonuçta elde edilen DataFrame sütunları pandas convert_dtypes kullanılarak mümkün olan en iyi dtype'a atılır. Bu parametre kapalıysa, tür uyumsuzluğu sorunları, DAX örtük tür dönüştürmesi nedeniyle Power BI modelinde algılanmamış olabilecek ilişkili tabloların sütunları arasında sonuçlanabilir.
SemPy read_table
, Power BI tarafından sağlanan model bilgilerini de kullanır.
Anlamsal modeller tarafından kullanılabilen veri yazma
Lakehouse'a eklenen Spark tabloları, karşılık gelen varsayılan anlam modeline otomatik olarak eklenir. Bu örnekte, ekli Lakehouse'a veri yazma işlemi gösterilmektedir. FabricDataFrame, Pandas veri çerçeveleriyle aynı giriş verilerini kabul eder.
from sempy.fabric import FabricDataFrame
df_forecast = FabricDataFrame({'ForecastedRevenue': [1, 2, 3]})
df_forecast.to_lakehouse_table("ForecastTable")
Power BI kullanılarak, ForecastTable tablosu Lakehouse semantik modeli kullanılarak bileşik bir anlam modeline eklenebilir.
İlgili içerik
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin