Aracılığıyla paylaş


Spark kullanarak anlamsal modellerden okuma ve Power BI tarafından kullanılabilir veri yazma

Bu makalede, Microsoft Fabric'teki spark yerel semantik bağlayıcısını kullanarak verileri ve meta verileri okumayı ve anlam modellerindeki ölçüleri değerlendirmeyi öğrenebilirsiniz. Ayrıca anlamsal modellerin kullanabileceği verileri yazmayı da öğreneceksiniz.

Önkoşullar

  • Microsoft Fabric'te Veri Bilimi deneyimine gidin.

    • Sol bölmeden İş Yükleriöğesini seçin.
    • Veri Bilimiseçin.
  • Hücrelere kod kopyalamak/yapıştırmak için yeni bir not defteri oluşturun.

  • Spark 3.4 ve üzeri sürümlerde, "Semantic link" varsayılan çalışma zamanında Fabric kullanılırken mevcuttur 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.

  1. Sol bölmeden Çalışma Alanları seçin ve ardından çalışma alanınızın adını seçerek açın.
  2. Bu bilgisayardanRapor veya Sayfalandırılmış Raporİçeri Aktar'ı seçin ve Customer Profitability Sample.pbix anlam modelini seçin.

Çalışma alanına anlamsal model yükleme arabirimini gösteren ekran görüntüsü.

Karşıya yükleme tamamlandıktan sonra, çalışma alanınızda üç yeni öğe vardır: Müşteri Karlılığı Örneği adlı anlam modeli, bir Power BI raporu ve bir pano. Bu semantik modeli bu makaledeki adımlar için kullanırsınız.

Çalışma alanına yüklenen Power BI dosyasındaki öğeleri gösteren ekran görüntüsü.

Python, R, SQL ve Scala'da Spark kullanarak verileri okuma ve yazma

Varsayılan olarak, anlamsal modellere erişmek için kullanılan çalışma alanı şu şekildedir:

  • ekli Lakehouse çalışma alanı veya
  • Lakehouse eklenmemişse not defterinin çalışma alanı.

Microsoft Fabric, çalışma alanında yer alan tüm anlam modellerindeki tüm tabloları Spark tabloları olarak kullanıma sunar. Tüm Spark SQL komutları Python, R ve Scala'da yürütülebilir. Anlamsal bağlantı Spark yerel bağlayıcısı, Spark koşullarının Power BI motoruna aktarılmasını destekler.

İpucu

Power BI tabloları ve ölçüleri normal Spark tabloları olarak kullanıma sunulduğundan, bunlar tek bir sorguda diğer Spark veri kaynaklarıyla birleştirilebilir.

  1. PySpark kullanarak çalışma alanında tüm anlamsal modellerin tablolarını listeleyin.

    df = spark.sql("SHOW TABLES FROM pbi")
    display(df)
    
  2. SparkR kullanarak Müşteri Karlılığı Örneği anlamsal modelindeki Müşteri tablosundan verileri alın.

    Not

    Tabloların alınması katı sınırlamalara tabidir (bkz . Okuma Sınırlamaları) ve sonuçlar eksik olabilir. Aktarılan veri miktarını azaltmak için yığın azaltma tekniğini kullanın. Desteklenen toplayıcılar şunlardır: COUNT, SUM, AVG, MIN ve MAX.

    %%sparkr
    
    df = sql("SELECT * FROM pbi.`Customer Profitability Sample`.Customer")
    display(df)
    
  3. Power BI ölçüleri sanal tablo _Metrics aracılığıyla kullanılabilir. Aşağıdaki sorgu, bölgeye ve sektöre göre toplam gelir ve gelir bütçesini hesaplar.

    %%sql
    
    SELECT
        `Customer[Country/Region]`,
        `Industry[Industry]`,
        AVG(`Total Revenue`),
        AVG(`Revenue Budget`)
    FROM
        pbi.`Customer Profitability Sample`.`_Metrics`
    WHERE
        `Customer[State]` in ('CA', 'WA')
    GROUP BY
        `Customer[Country/Region]`,
        `Industry[Industry]`
    
  4. Spark şemasını kullanarak kullanılabilir ölçüleri ve boyutları inceleyin.

    spark.table("pbi.`Customer Profitability Sample`._Metrics").printSchema()
    
  5. Verileri Lakehouse'unuza delta tablosu olarak kaydedin.

    delta_table_path = "<your delta table path>" #fill in your delta table path 
    df.write.format("delta").mode("overwrite").save(delta_table_path)
    

Okuma erişimi sınırlamaları

Okuma erişimi API'lerinde aşağıdaki sınırlamalar vardır:

  • Analysis Service'te 10 saniyeden uzun süre çalışan sorgular desteklenmez (Spark'ta gösterge: "java.net.SocketTimeoutException: PowerBI hizmeti iletişim başarısız oldu ")
  • Spark SQL kullanarak Power BI tablo erişimi, Power BI arka uç sınırlamalarına tabidir.
  • Spark _Metrics sorguları için koşul gönderimi tek bir IN ifadesiyle sınırlıdır ve en az iki öğe gerektirir. Ek IN ifadeleri ve desteklenmeyen koşul, veri aktarımı sonrasında Spark'ta değerlendirilir.
  • Spark SQL kullanılarak erişilen Power BI tabloları için koşul iletimi aşağıdaki ifadeleri desteklemez:
  • Spark SQL'de yeni anlamsal modellerin erişilebilir olması için Spark oturumu yeniden başlatılmalıdır.