Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ş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:
- Katkıda bulunan veya daha yüksek izinlere sahip Microsoft Fabric çalışma alanı.
- İzlemek istediğiniz en az bir Delta tablosu içeren çalışma alanındaki bir Lakehouse Bu öğreticide
SalesDataLakehouseadlı bir Lakehouse kullanılır. - Fabric veri işlem hatları hakkında bilgi.
- Fabric not defterleri hakkında bilgi sahibi olma.
Çözüm yapısı
Tamamlanan işlem hattı şu yapıya sahiptir:
-
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. -
Koşul etkinliği: Betik çıkışından doğrudan okur
PotentialAnomalyTypeve sıfırdan büyük olup olmadığını denetler. hakkındaPotentialAnomalyTypedaha fazla bilgi için bkz. Olası anomali türü kodları. -
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.
- Fabric çalışma alanınızda + Yeni öğe>Not Defteri'ni seçin.
- Not defterini Optimize-Table olarak adlandırın.
-
Konum'un altında, denetlediğiniz tabloların depolandığı Lakehouse'ı seçin. Bu alıştırma,
SalesDataLakehouseadlı bir Lakehouse kullanır. - 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.
İ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.
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.
İ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)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:
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
Fabric çalışma alanınızda + Yeni öğe>İşlem hattı seçin.
İşlem hattını Check-and-Optimize-Table olarak adlandırın.
İşlem hattı tuval arka planını seçin ve parametreler sekmesini açın . Üç parametre ekleyin:
Name Türü Varsayılan değer lakehouse_nameString SalesDataLakehouseschema_nameString dbotable_nameString 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.
- Etkinlikler sekmesinde Betik'i seçerek tuvale ekleyin.
- Buna Tablo Sağlığını Denetle adını verin.
-
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:
Etkinlikler sekmesinden, tuvale bir etkinlik eklemek için If Condition seçeneğini belirleyin.
Adını Check Anomaly koy.
Tablo Durumunu Denetle öğesinden Anomaliyi Denetle öğesine Başarı (yeşil) oku çizin.
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.
Not Defteri etkinliğini True alt tuvaline sürükleyin.
Optimize Çalıştır olarak adlandır.
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_nameString @pipeline().parameters.lakehouse_nameschema_nameString @pipeline().parameters.schema_nametable_nameString @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:
6. Adım: Doğrulama ve çalıştırma
Yapılandırma hatalarını denetlemek için işlem hattı araç çubuğunda Doğrula'yı seçin.
İşlem hattını el ile yürütmek için Çalıştır'ı seçin.
Çalıştırma işlemini izleyin ve onaylayın:
-
Tablo durumunu denetleyin: Çalıştırıldığında bu etkinlikten çıktıyı inceleyin.
sys.sp_get_table_health_metricssaklı yordamından gelen çıktıyı JSON biçiminde görmeniz gerekir. -
Anomaliyi Denetle:
PotentialAnomalyTypeöğesini betik çıktısından doğrudan okuyarak doğru şekilde değerlendirir. -
Run OPTIMIZE (yalnızca
PotentialAnomalyType > 0ise): 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 veOPTIMIZEişleminin iletilerini incelemek için çıktıyı denetleyin.
-
Tablo durumunu denetleyin: Çalıştırıldığında bu etkinlikten çıktıyı inceleyin.
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.