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ığı
// 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
SonTabloPipeline: 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.
