Ana içeriğe geç
Kesit Power BI
Orta · Veri Hazırlama

Veri bağlantıları: veritabanı, yerel SQL sorgusu, Desktop ile Service

Bir SQL veritabanına bağlanmak, gezgin ile yerel SQL sorgusu arasında seçim yapmak, M, DAX ve SQL’in yeri, bağlantıyı parametreyle yönetmek ve Desktop’ta kurulan bağlantının Service’te nasıl yenilendiği.

Uygulamada aç, 6 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

“Veri alma ve bağlantı modları” dersinde İçeri aktarma ile DirectQuery farkını gördük. Bu ders bir bağlantının yaşam döngüsüne bakıyor: Desktop’ta nasıl kurulur, hangi bilgileri saklar ve rapor yayımlandıktan sonra Service’te neden bazen yenilenmez.

Verinin yolculuğu ve üç dil

  1. Kaynak: SQL Server, Excel, SharePoint, bir API…
  2. Power Query: verinin alınması ve temizlenmesi. Dil: M.
  3. Anlam modeli (semantic model): tablolar, ilişkiler, ölçüler. Dil: DAX.
  4. Rapor: görseller ölçüleri çağırır.
  5. Service (Power BI Service): yayımlanan model zamanlanmış olarak yenilenir, rapor paylaşılır.
DilNerede çalışır?Ne için?
SQLKaynak veritabanındaVeriyi kaynağında süzmek, birleştirmek. Power Query çoğu adımı kendisi SQL’e çevirir (sorgu katlama); istersen elle de yazarsın.
MPower Query’de, yenileme sırasındaBağlanmak, şekillendirmek, temizlemek.
DAXModelde, rapor açıkkenÖlçüler, hesaplanmış tablolar ve sütunlar, güvenlik kuralları.

Bir veritabanına bağlanmak

Veri al → SQL Server veritabanı penceresi şunları ister:

İlk bağlantıda kimlik doğrulama türü sorulur: Windows, Veritabanı (kullanıcı adı ve parola) ya da kuruluş hesabı (Microsoft Entra ID). Kimlik bilgisi .pbix dosyasına yazılmaz; bilgisayarındaki Veri kaynağı ayarları’nda saklanır. Dosyayı bir meslektaşına gönderirsen o da kendi kimliğiyle bağlanır. Bağlantı şifreli değilse Desktop bir uyarı gösterir; mümkünse sunucu tarafında şifrelemeyi açtır.

let
    Kaynak = Sql.Database("sql01.sirket.local", "SatisDB"),
    Satislar = Kaynak{[Schema = "dbo", Item = "Satislar"]}[Data]
in
    Satislar

Gezgin mi, yerel SQL sorgusu mu?

Gezginden (Navigator) tablo seçip Power Query’de filtrelemek ile Gelişmiş seçenekler → SQL deyimi kutusuna hazır bir sorgu yapıştırmak aynı veriyi getirebilir. Fark sonraki adımlarda ortaya çıkar.

Gezgin + Power Query adımlarıYerel SQL sorgusu (native query)
Sorgu katlamaFiltre, sütun seçme, gruplama kaynağa gönderilir.Klasik yöntemde sonraki adımlar katlanmaz; hepsi Power Query’de, yerelde çalışır.
BakımAdımlar görünür ve tıklanarak düzenlenir.SQL metni tek bir adımda; değişiklik için SQL bilmek gerekir.
GüvenlikEk onay yok.Gelişmiş Düzenleyici’den eklenen ya da değiştirilen yerel sorgu için onay istenir.
İyi olduğu yerÇoğu senaryo.Veritabanı ekibinin optimize ettiği karmaşık bir sorgu ya da saklı yordam çağrısı.

Yerel sorgu kullanman gerekiyorsa katlamayı korumanın bir yolu vardır: Value.NativeQuery fonksiyonunu EnableFolding = true seçeneğiyle çağırmak. Bu, SQL Server, PostgreSQL, Snowflake, Google BigQuery gibi bazı bağlayıcılarda desteklenir; sonraki filtre adımı senin sorgunu bir alt sorgu olarak sarar.

let
    Kaynak = Sql.Database("sql01.sirket.local", "SatisDB"),
    Sorgu = Value.NativeQuery(Kaynak,
        "SELECT SiparisNo, Tarih, UrunNo, Tutar FROM dbo.Satislar WHERE Durum <> 'İptal'",
        null, [EnableFolding = true]),
    Son2Yil = Table.SelectRows(Sorgu, each [Tarih] >= #date(2023, 1, 1))
in
    Son2Yil

Parametreli bağlantı

“Power Query ile modele hazırlık” dersindeki parametreleri bağlantı bilgisine uygula: sunucu adını ve veritabanını metin parametresi yap. Geliştirme sırasında test sunucusunu, yayımladıktan sonra üretim sunucusunu kullanırsın; M koduna dokunmazsın.

let
    Kaynak = Sql.Database(SunucuAdi, VeritabaniAdi),
    Satislar = Kaynak{[Schema = "dbo", Item = "Satislar"]}[Data]
in
    Satislar

Service’te parametre değeri anlam modelinin ayarlarından değiştirilebilir; dağıtım işlem hatlarında (deployment pipelines) her aşama için ayrı değer veren kurallar tanımlanır.

Desktop’tan Service’e: neden yenilenmiyor?

Yayımladığında Service’e model, veri ve M kodu gider; kimlik bilgileri gitmez. Zamanlanmış yenilemenin çalışması için Service’in kaynağa ulaşabilmesi ve oturum açabilmesi gerekir:

Yenileme sınırlarıPro lisansta günde en fazla 8, Premium kişi başı (PPU) ve Premium/Fabric kapasitede 48 zamanlanmış yenileme yapılabilir. Art arda dört başarısız yenilemeden ya da süresi dolmuş kimlik bilgisi gibi düzeltilemez bir hatadan sonra zamanlama kendiliğinden kapanır. İki ay boyunca hiç görüntülenmeyen modelin zamanlaması da duraklatılır.

Bağlantı hatalarını okumak

BelirtiOlası nedenNe yapılır?
“Kimlik bilgileri geçersiz” ya da oturum açma hatasıParola değişti, hesap kilitlendi, yanlış kimlik doğrulama türüVeri kaynağı ayarlarında (Service’te model ayarlarında) kimliği güncelle.
“Ağla ilgili ya da örneğe özgü bir hata” (network-related error)Sunucu adı yanlış, güvenlik duvarı, VPN kapalı, Service’te ağ geçidi yokSunucuya ağdan erişimi kontrol et; buluttaki kaynakta istemci IP’sine izin ver; şirket içinde ağ geçidi kur.
Expression.Error: “…sütunu bulunamadı”Kaynakta şema değişti: sütun silindi ya da yeniden adlandırıldıHata veren adımı bul; sütun adını düzelt ya da “Diğer sütunları kaldır” ile yalnızca gerekenleri seç.
Service’te “ağ geçidi çevrimdışı”Ağ geçidinin kurulu olduğu makine kapalıMakineyi ya da ağ geçidi kümesini çalıştır.

Kaynak taşındığında (yeni sunucu, yeni dosya yolu) Dönüştür → Veri kaynağı ayarları → Kaynağı değiştir ile tüm sorgulardaki bağlantı bir kerede güncellenir. Tek bir sorguda ise Kaynak adımındaki sunucu adını Gelişmiş Düzenleyici’de değiştirmen yeter; sonraki adımlar aynı tablo yapısını bulduğu sürece çalışır.

Artımlı yenileme: kısa bir bakış

Milyonlarca satırlık bir olgu tablosunu her gece baştan yüklemek yerine yalnızca son günleri yenilemek mümkündür. Bunun için RangeStart ve RangeEnd adlı iki tarih/saat parametresiyle tabloyu filtreler ve tabloya bir yenileme ilkesi tanımlarsın. Filtrenin kaynağa katlanması şarttır; yerel SQL sorgusu bu yüzden burada risklidir. Ayrıntılar “Kurumsal model” dersinde.

ERP ve kurumsal veri tabanı kaynakları

İş ilanlarında sık geçer. Kısa karar özeti:

KaynakBağlayıcıDikkat
PostgreSQLPostgreSQL.Database, Import ve DirectQueryDesktop ve ağ geçidi Npgsql’i içerir. Yerel sorguda katlama varsayılan açıktır; Value.NativeQuery isteğe bağlı parametre alırsa katlanmaz.
OracleOracle.Database, Import ve DirectQueryOracle 12c (12.1.0.2) ve sonrası. Güncel Desktop ve ağ geçidinde yerleşik sürücü var. Kişisel ağ geçidi desteklenmez, kurumsal ağ geçidi gerekir.
SAP HANA, SAP BWAdanmış bağlayıcılar (SAP HANA database, SAP Business Warehouse)SAP’nin hazır analitik görünümlerini ya da BW sorgularını okumak çoğu zaman ham tablolardan daha doğrudur. Lisans ve yetkiyi SAP ekibiyle netleştir.
Oracle ERPOracle ERP (önizleme) bağlayıcısı listedeÖnizleme: üretimde kullanmadan önce sınırlarını oku.
Logo, Netsis, Mikro gibi yerel ERP’lerPower Query bağlayıcı listesinde adanmış bağlayıcı görmedik (Kasım 2026)Pratikte erişim çoğu kurulumda arkadaki veri tabanından ya da üreticinin raporlama yolundan olur. Tablo yapısını, lisans koşulunu ve okuma yetkisini üreticiden ve BT’den doğrula. Bu cümle bizim saha gözlemimizdir, resmî belge değildir.

Üç kural. ERP’nin canlı işlem tablolarına ağır sorgu atma: mümkünse salt okunur kopya, rapor görünümü ya da ambar kullan. Ham tabloyu değil, ERP ekibinin onayladığı görünümü oku. Fatura ve iade mantığını kendin yeniden kurarken Finans’ın rakamıyla mutabakat yap.

DevamıAğ geçidinin kurulumu ve teşhisi On-premises data gateway, yenilemenin türleri ve sınırları Veri yenileme dersinde.
Alıştırmalara geç (6)