Lakehouse tablolarını sağlık denetimlerine göre en iyi duruma getirin

Şunlar için geçerlidir:✅ Microsoft Fabric'te SQL analiz uç noktası

Bu öğreticide, akıllı tablo bakımı gerçekleştirmek için bir Microsoft Fabric İşlem Hattı oluşturmayı öğreneceksiniz.

Bu çözüm Lakehouse SQL analiz uç noktasında T-SQL saklı yordamını çağırır sys.sp_get_table_health_metrics , sonucu değerlendirir ve yalnızca tablonun gerçekten bakıma ihtiyacı olduğunda çalışır OPTIMIZE . Bu "check-then-act" kalıbı, sağlıklı tablolarda gereksiz işlem maliyetini önlerken, durumu bozulan tabloların bakımının otomatik olarak yapılmasını sağlar.

Bakım neden gereklidir?

Lakehouse tabloları zaman içinde çok fazla küçük Parquet dosyası birikebilir ve bu da SQL analiz uç noktasında sorgu performansını zedeler.

Bu işlem hattı, tablo durumundan bağımsız olarak OPTIMIZE sabit bir zamanlamaya göre çalıştırmak yerine, duruma dayalı bilinçli bir karar verir: önce tablonun sağlığını denetler ve yalnızca bir anormallik algılandığında optimizasyonu tetikler.

Prerequisites

Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:

Çözüm yapısı

Tamamlanan işlem hattı şu yapıya sahiptir:

  1. Betik etkinliği: sp_get_table_health_metrics öğesini hedef tabloda yürütür ve tablo sistem durumu ölçümlerini yapılandırılmış çıktı olarak döndürür.
  2. Koşul etkinliği: Betik çıkışından doğrudan okur PotentialAnomalyType ve sıfırdan büyük olup olmadığını denetler. hakkında PotentialAnomalyTypedaha fazla bilgi için bkz. Olası anomali türü kodları.
  3. Not defteri etkinliği (True dalında): Spark not defterinden tabloda OPTIMIZE çalıştırır.

Bu öğreticinin sonunda, işlem hattından parametreleri alan ve tetiklendiğinde tabloyu en iyi duruma getiren bir not defteriniz olacak.

1. Adım: İyileştirme not defterini oluşturma

Not defteri, işlem hattından hedef Lakehouse, şema ve tablo adını parametre olarak alır, ardından OPTIMIZE ifadesini Spark SQL kullanarak yürütür.

  1. Fabric çalışma alanınızda + Yeni öğe>Not Defteri'ni seçin.
  2. Not defterini Optimize-Table olarak adlandırın.
  3. Konum'un altında, denetlediğiniz tabloların depolandığı Lakehouse'ı seçin. Bu alıştırma, SalesDataLakehouse adlı bir Lakehouse kullanır.
  4. Oluştur'i seçin.

Parametre hücresini ekleme

İlk hücre, işlem hattının çalışma zamanında geçersiz kıldığı değişkenleri tanımlar.

  1. İlk hücreye aşağıdaki parametreleri girin. Değerler önemli değildir ve işlem hattı bunları çalışma zamanında geçersiz kılar.

    # Parameters 
    lakehouse_name = "<LakehouseName>"
    schema_name    = "<SchemaName>"
    table_name     = "<TableName>"
    

    Important

    Fabric not defterlerinde parametreleştirme nasıl çalışır: Çalışma zamanında Fabric, parametre hücresinin hemen sonrasına, bu değişkenleri işlem hattı tarafından iletilen değerlerle yeniden atayan yeni bir hücre ekler. Burada ayarladığınız değerler yalnızca değişkenleri başlatır ve okunabilirliği geliştirir.

  2. Hücre menüsünü (...) > seçinBu hücreyi parametre hücresi olarak işaretlemek için parametre hücresini değiştirin.

OPTIMIZE hücresini ekleme

Komut OPTIMIZE bir Spark SQL komutudur, T-SQL komutu değildir. Bunu not defterleri, Spark iş tanımları veya Lakehouse Bakım arabirimi gibi Spark ortamlarında çalıştırmanız gerekir. SQL analytics uç noktası ve Warehouse SQL sorgu düzenleyicisi bu komutu doğrudan desteklemez.

  1. İkinci hücreye şunu girin:

    full_name = f"{lakehouse_name}.{schema_name}.{table_name}"
    print(f"Optimizing {full_name} ...")
    
    result = spark.sql(f"OPTIMIZE {full_name}")
    result.show(truncate=False)
    
  2. Not defterini diğer kullanıcılar için düzgün bir şekilde belgeleyebilmek için gerektiğinde Markdown hücreleri ekleyin. Son haline getirilmiş not defteriniz aşağıdakine benzer olmalıdır:

    'Sistem durumu denetimleri gerekli olduğunu gösterdiğinde bir Lakehouse tablosunu en iyi duruma getirme' başlıklı bir Fabric not defterinin ekran görüntüsü; biri işlem hattı tarafından sağlanan Lakehouse, şema ve tablo parametrelerini ayarlayan, diğeri ise seçilen Lakehouse tablosu için bir OPTIMIZE komutu çalıştıran iki PySpark hücresi bulunur.

Note

Bu örnekte şemaları etkinleştirilmiş bir Lakehouse ele alınıyor. Lakehouse şemalarını kullanmıyorsanız, full_name üzerindeki üç bölümlü adı buna göre ayarlayın.

2. Adım: İşlem hattını oluşturma

  1. Fabric çalışma alanınızda + Yeni öğe>İşlem hattı seçin.

  2. İşlem hattını Check-and-Optimize-Table olarak adlandırın.

  3. İşlem hattı tuval arka planını seçin ve parametreler sekmesini açın . Üç parametre ekleyin:

    Name Türü Varsayılan değer
    lakehouse_name String SalesDataLakehouse
    schema_name String dbo
    table_name String FactSales

Adım 3: Betik etkinliğini ekleme

Betik etkinliği, SQL analiz uç noktasında sys.sp_get_table_health_metrics çalıştırır ve sonucu yakalar.

Important

Saklı yordam etkinliği yerine Script etkinliğini kullanın. Yalnızca Betik etkinliği, sonuç kümesini sonraki etkinliklerin ayrıştırabileceği yapılandırılmış JSON çıktısı olarak sunar.

  1. Etkinlikler sekmesinde Betik'i seçerek tuvale ekleyin.
  2. Buna Tablo Sağlığını Denetle adını verin.
  3. Ayarlar sekmesinde:
    • Bağlantı: Lakehouse'unuz için SQL analiz uç noktasını seçin. Listelenmiyorsa, açılan listenin en altındaki Tümüne gözat'ı seçin ve lakehouse'unuzun SQL analiz uç noktasını bulun.

    • Betik türü: Sorgu'yu seçin.

    • Betik: Dinamik içerik ekle'yi seçin ve aşağıdaki ifadeyi girin:

      @concat('EXEC sys.sp_get_table_health_metrics ''',
              pipeline().parameters.schema_name, '.',
              pipeline().parameters.table_name, '''')
      

Bu ifade, hedef tablonuzda saklı yordamı yürüten SQL komutunu üretir, örneğin: EXEC sys.sp_get_table_health_metrics 'dbo.FactSales'.

Betik çıktısını doğrulayın

İşlem hattını bir kez çalıştırın ve Betik etkinliği çıktısını inceleyin. Şuna benzer bir JSON nesnesi görürsünüz:

{
  "resultSetCount": 1,
  "resultSets": [
    {
      "rowCount": 1,
      "rows": [
        {
          "PotentialAnomalyType": 3,
          "PotentialAnomalyDescription": "Too many small files...",
          "FileCount": 2688,
          "...": "..."
        }
      ]
    }
  ]
}

Important

Gerçek sonucunuz tablonuzun durumuna göre değişebilir. Önemli olan, sys.sp_get_table_health_metrics tarafından sunulan sütunları döndürmesidir.

4. Adım: If Koşulu etkinliğini ekleme

If Koşulu etkinliği, PotentialAnomalyType değerini doğrudan Betik etkinliği çıktısından okur ve sonucuna göre karar verir. Aşağıdaki adımları kullanın:

  1. Etkinlikler sekmesinden, tuvale bir etkinlik eklemek için If Condition seçeneğini belirleyin.

  2. Adını Check Anomaly koy.

  3. Tablo Durumunu Denetle öğesinden Anomaliyi Denetle öğesine Başarı (yeşil) oku çizin.

  4. If Koşulu etkinliğinin Etkinlikler sekmesinde İfade'yi şu şekilde ayarlayın:

    @greater(int(activity('Check Table Health').output.resultSets[0].rows[0]['PotentialAnomalyType']), 0)
    

Bu ifade, sys.sp_get_table_health_metrics tarafından döndürülen ilk satırı okur, PotentialAnomalyType öğesini bir tamsayıya dönüştürür ve değer sıfırdan büyük olduğunda true sonucunu verir; bu da hedef tabloda bir anomali algılandığını gösterir.

5. Adım: Not Defteri etkinliğini ekleme (True dalı)

If Koşulu etkinliği seçili durumdayken, True öğesinin yanındaki Düzenle (kalem simgesi) öğesini seçin. Tuval, kapsamı True dalı olan bir alt tuvale geçer.

  1. Not Defteri etkinliğini True alt tuvaline sürükleyin.

  2. Optimize Çalıştır olarak adlandır.

  3. Ayarlar sekmesinde:

    • Not Defteri: 1. Adımda oluşturduğunuz Tabloyu İyileştir not defterini seçin.

    • Temel parametreler'i genişletin ve üç satır ekleyin:

      Name Türü Value
      lakehouse_name String @pipeline().parameters.lakehouse_name
      schema_name String @pipeline().parameters.schema_name
      table_name String @pipeline().parameters.table_name

Üç ad sütunu değeri, not defterinin parametre hücresindeki değişken adlarıyla tam olarak eşleşmelidir.

Note

Yanlış etkinlikleri boş bırakabilirsiniz. If Koşulu etkinliği boş bir False dalını no-op olarak işler ve işlem hattını başarılı olarak bildirir.

Tamamlanan işlem hattınız aşağıdaki gibi görünmelidir:

Anomaliyi Denetle koşullu etkinliğine bağlı Tablo Durumunu Denetle betik etkinliğini içeren bir Fabric veri işlem hattının ekran görüntüsü. Doğru dalı bir OPTIMIZE not defteri etkinliği çalıştırırken, yanlış dalında herhangi bir etkinlik yoktur.

6. Adım: Doğrulama ve çalıştırma

  1. Yapılandırma hatalarını denetlemek için işlem hattı araç çubuğunda Doğrula'yı seçin.

  2. İşlem hattını el ile yürütmek için Çalıştır'ı seçin.

  3. Çalıştırma işlemini izleyin ve onaylayın:

    1. Tablo durumunu denetleyin: Çalıştırıldığında bu etkinlikten çıktıyı inceleyin. sys.sp_get_table_health_metrics saklı yordamından gelen çıktıyı JSON biçiminde görmeniz gerekir.
    2. Anomaliyi Denetle: PotentialAnomalyType öğesini betik çıktısından doğrudan okuyarak doğru şekilde değerlendirir.
    3. Run OPTIMIZE (yalnızca PotentialAnomalyType > 0 ise): Check Anomaly etkinliği True olarak değerlendirilirse, doğru parametrelerin (Lakehouse adı, şema ve tablo adı) kullanıldığını doğrulamak için Run OPTIMIZE etkinliğinin girdisini gözden geçirin ve OPTIMIZE işleminin iletilerini incelemek için çıktıyı denetleyin.

Kaynakları temizle

Yalnızca bu öğretici için kaynak oluşturduysanız ve artık bunlara ihtiyacınız yoksa, aşağıdaki öğeleri çalışma alanınızdan silin:

  • Tabloyu Denetle ve İyileştir işlem hattı.
  • Tabloyu İyileştir not defteri.