Fabric'te Veri Taşımanın İki Yolu

Microsoft Fabric'te veri taşımak ve dönüştürmek için iki temel araç var: Dataflow Gen2 ve Data Factory Pipeline. Forumlarda sürekli sorulan soru: _"İkisi de benzer işler yapıyor gibi görünüyor, hangisini kullanmalıyım?"_

Cevap: Farklı güçleri var — doğru yerde doğru aracı kullanmak önemli.

Hızlı Karşılaştırma

| Özellik | Dataflow Gen2 | Pipeline |

|---|---|---|

| Motor | Power Query (M dili) | Copy Activity + Orchestration |

| Arayüz | Görsel dönüşüm editörü | DAG bazlı orkestrasyon |

| Hedef | Lakehouse, Warehouse, KQL | Çoklu hedef |

| Dönüşüm | Güçlü (350+ Power Query fonksiyonu) | Sınırlı (Copy + Notebook çağırma) |

| Orkestrasyon | ❌ | ✅ (sıralı/paralel adımlar) |

| Zamanlama | ✅ | ✅ |

| Hata yönetimi | Basit | Gelişmiş (retry, if/else) |

| CU tüketimi | Orta | Değişken |

Dataflow Gen2: Ne Zaman?

Power Query tabanlı görsel dönüşüm aracı. Excel'deki Power Query'yi biliyorsanız zaten biliyorsunuz.

İdeal senaryolar:

  • SQL veya API'den veri çekip Lakehouse'a yükleme
  • Kolon dönüşümleri (tip değiştirme, birleştirme, ayırma)
  • Filtreleme, gruplama, pivot/unpivot
  • Lookup ve merge işlemleri
  • İş kullanıcılarının self-servis veri hazırlığı
Power Query M
// Dataflow Gen2 - Power Query M örneği
let
    Kaynak = Sql.Database("sunucu.database.windows.net", "SatisDB"),
    Tablo = Kaynak{[Schema="dbo", Item="Satislar"]}[Data],
    FiltreYil = Table.SelectRows(Tablo, each [Yil] >= 2024),
    TemizTutar = Table.TransformColumns(FiltreYil, {"Tutar", each if _ < 0 then 0 else _}),
    YeniKolon = Table.AddColumn(TemizTutar, "KDV", each [Tutar] * 0.20),
    SonTablo = Table.TransformColumnTypes(YeniKolon, {{"KDV", type number}})
in
    SonTablo
💡Dataflow Gen2, staging katmanı olarak mükemmeldir. Kaynaklardan çektiğiniz ham veriyi temizleyip Lakehouse'a yüklemek için ideal.

Pipeline: Ne Zaman?

Orkestrasyon aracı. Birden fazla adımı (Copy, Notebook, Dataflow, SP) sıralı veya paralel çalıştırır.

İdeal senaryolar:

  • Birden fazla Dataflow'u sırayla çalıştırma
  • Notebook → Dataflow → Stored Procedure zinciri
  • Koşullu mantık (If/Else, Switch)
  • Hata durumunda retry veya farklı akış
  • Parametreli ve dinamik pipeline'lar

Best Practice: Pipeline + Dataflow Birlikte

En etkili yaklaşım her ikisini birlikte kullanmaktır:

  • Pipeline = orkestrasyon katmanı (sıralama, hata yönetimi)
  • Dataflow Gen2 = dönüşüm katmanı (veri temizleme, hazırlama)
  • Notebook = karmaşık dönüşüm (ML, Python, büyük veri)
  • Stored Procedure = son katman hesaplamaları

Forum'dan Gerçek Hatalar

Hata 1: "Dataflow çok yavaş"

Dataflow Gen2, satır-satır işler (Power Query motoru). Büyük veri setlerinde (10M+ satır) yavaşlayabilir. Bu durumda Notebook (Spark) tercih edin.

Hata 2: "Pipeline'da Dataflow adımı hata veriyor"

Pipeline içinde Dataflow çağırırken timeout ayarını kontrol edin. Varsayılan timeout kısa olabilir — uzatın.

Hata 3: "Hangi CU daha az tüketiyor?"

Pipeline Copy Activity genellikle daha az CU tüketir. Dataflow Gen2 dönüşüm karmaşıklığına göre değişir. Büyük volume'larda Copy + Notebook kombinasyonu en verimli.

Sonuç

Dataflow Gen2 dönüşüm için, Pipeline orkestrasyon için kullanın — birlikte en güçlüler. Basit veri hazırlığı için Dataflow yeterli, karmaşık çok adımlı süreçlerde Pipeline zorunlu. Büyük veri dönüşümlerinde ise Notebook'u devreye alın.