27 Ocak 2019 Pazar

Veritabanı Yöneticisinin Rutini - Haftalık (DBA's Routine - Weekly)

Bir önceki yazımızda Veri Tabanı Yönetim Sistemlerinde yapay zeka akımının etkilerini görebiliyoruz demiştik. Bu akım yakın gelecekte DBA'lerin iş yapma şeklinde ciddi değişikliklere sebep olacağa benziyor. Şimdiden bu değişiklikler olmaya başladı bile.

Bu akımın etkileri gele dursun biz bir DBA'in rutininde neler olabileceğini incelemeye devam edelim. Önceki yazımızda günlük rutine odaklanmıştık. Bu yazımızda haftalık rutinde neler olabileceğini ele alalım.

Önceki yazıya ulaşmak için:

Veritabanı Yöneticisinin Rutini - Günlük (DBA's Routine - Daily)

Önceki yazımızda bahsettiğimiz şu beklenti bu yazının konusunu oluşturmakta ;
"Bir DBA'in riskleri belirleyerek önlemleri zamanında alması, iyileştirme fırsatlarını görerek uzun ve kısa vadede çeşitli aksiyon planları oluşturması beklenir."

DBA'in günlük görevleri daha çok üretilen istatistikleri incelemekten, ani ve kısa süreli müdahalelerde bulunmaktan ibarettir. Haftalık ve aylık görevleri ise bu bilgiler ışığı altında bakım ve iyileştirmeler yapmaktır.

Haftalık Görevler

  • Metadata üzerinde daha kapsamlı ve detaylı inceleme yapılır. Günlük görevlerde bahsettiğimiz tüm takipler gün içinde yetişmeyebilir. Bunları biraz daha detaylı olacak şekilde haftalık görevler arasına almak gerekebilir.
  • Sistem veritabanlarının yedeklerini almak. Tüm yedekler hakkında bilgiyi detaylı bir şekilde incelemek, yedeklerin sağlığından emin olmak gerekir. Bununla birlikte sistem veritabanlarının yedekleri sistem yoğunluğuna göre belli aralıklarla alınmalıdır. tempdb zaten her yeniden başlatmada sıfırdan oluşur. model veritabanı yeni oluşacak veritabanları için bir tür template görevi görür. Genelde tempdb ve model (bazı senaryolar için anlamlı olabilir) veritabanlarının yedeğine ihtiyaç duyulmaz. Ancak master ve msdb veritabanları bir hayli önemlidir. Özellikle master veritabanında server ayarları, kullanıcı, veritabanı, şifrelemeye dair bilgiler gibi hassas veriler yer alır. master kullanılamaz olduğunda sistemi işler hale getirmek ya çok sancılı olur ya da veriler artık kullanılamaz hale gelir.
  • Veritabanı yedeklerin kullanılabildiğinden emin olmak gerekir. Genel en fazla yedek almaya odaklanılır. Ancak yedeklerin kullanılabileceğini kontrol etmek en az yedek almak kadar önemli bir konudur. Yanlış stratejiler veya kullanılan ek ürünlerden dolayı LSN zinciri bozulmuş olabilir. Ya da backup alınan yerde çıkan bir hata yüzünden dosya kullanılamaz hale gelmiş olabilir. Yedekten dönmeyi denemeden yedeklerin işe yarayıp yaramayacağını anlayamayız. Bu yüzden test sunucularda restore senaryolarını belli aralıklarla uygulamak çok önemlidir.
  • Takipler ve incelemeler sonucunda elde edilen bulgulara göre Maintenance Plans (Bakım Planları) hazırlanmalıdır. Bakım planları SSMS / Management / Maintenance Plans altında oluşturabilirsiniz. Daha sonra bu planları SQL Server Agent üzerinde oluşturacağınız job'larda kullanabilir çeşitli periyotlarda bakımların yapılmasını sağlayabilirsiniz. Bu planlar içerisinde yedek alma, index rebuild-reorganize, istatistikleri güncelleme, veritabanı tutarlılık kontrolleri gibi işleri yapabilirsiniz. Daha kompleks işleri yürütmek için SSIS projesi açıp burada oluşturduğunuz paketlerden joblar tanımlamayı da tercih edebilirsiniz.
  • İstatistikleri güncellemek ve indexlere bakım yapmak gerekir. İstatistiklerin güncel, indexlerin bakımlı olması sorgu performansını doğrudan etkiler. önceki yazıda bahsettiğimiz şekilde bu bilgilere erişip bakım planımızı oluşturabiliriz. İstatistikler varsayılan olarak otomatik güncellenir. Eğer güncel değilse Maintenance Planlarla veya Update Statistics 'tabloveyaindexedview' komutu ile güncelleyebilirsiniz. Indexlerin bozulmalarına bakarak eğer bozulma %5 ile %30 arasında ise Reorganize, %30'dan fazla ise Rebuild yapmanız gerekir. Bozulma bilgisine SSMS üzerindeki raporlardan veya ilgili tablonun altında indexleri sağ tıklayıp açılan menüdeki özelliklerden veya sorgu ile sys.dm_db_index_physical_stats nesnesinin avg_fragmentation_in_percent kolonundan öğrenebilirsiniz. Bakımı da yine SSMS üzerinden indexe erişerek veya Maintenance Planlar üzerinden yapabilirsiniz. Dilerseniz Alter Index IndexAdı on TabloAdı REORGANIZE/REBUILD komutlarını ve ihtiyacınız olan parametreleri de kullanabilirsiniz. Index bakım sıklığını ve bozulmayı etkileyebilecek şeyler yoğun veri girişi, fillfactor ve padindex ayarlarıdır. Bu iki ayar sayesinde çok sık bakım gerekmesin diye index sayfalarında boşluk bırakırız. Mesala fillfactor %80 ise %80 sayfalar dolu olsun %20 boşluk kalsın demiş oluruz. Buradaki değeri düşürmek bakımı geciktirir. Ancak çok düşürürsek bu sefer de bilgi çok fazla index pagee dağılacağı için blocking de artış olur. Optimum değer sistemimize bağlıdır. Dilerseniz padindex özelliğini kullanarak doluluk oranının indexin ara seviyelerine de uygulanmasını sağlayabilirsiniz.
  • En maliyetli sorgular ve en çok beklenen görevler için iyileştirmeler yapmak gerekir. Sorgularla ilgili en azından üç noktayı takip etmek lazım. Bunların ilki en maliyetli sorguların neden o kadar maliyetli olduğunu öğrenmektir. Sorgu yazımında, sorgunun kullandığı nesnelerin performansında, sorgunun cachedeki durumunda, index ve istatistiklerin bakımında bir problem var mı diye kontrol edip iyileştirmeleri ekip çalışmalarıyla yapmak gerekir. İkinci nokta ise maliyeti düşük fakat gün için defalarca çalışan sorguları nasıl iyileştirebileceğini araştırmak. Üçüncü nokta ise birer defa çalıştırılan sorgu sayına ulaşmak ve eğer çok fazla tek seferlik sorgu varsa server ayarlarından Optimze for Ad hoc Workloads özelliğini aktif etmek gerekir. Diğer bir konu ise en çok beklenen görevlerin neler olduğunu tespit etmektir. Önceki yazımızda da belirttiğimiz gibi sys.databases, sys.dm_os_wait_stats, sys.dm_os_waiting_tasks nesneleri ile hangi görevlerin beklendiği belirlenebilir. En çok beklenen görevlere bakılarak iyileştirmeler yapılabilir.
  • Latch, lock, block ve deadlock aktivitelerini takip edip çözüm üretmek gerekir. Latch diskten memorye geçişte yaşanan çok küçük kilitlenmelerdir. Normalde gözardı edilir. Ancak sistem çok yoğunsa baş belası olmaya başlar. Latch problem olmaya başladığında donanım bazlı iyileştirmelere veya inmemory özelliklerine göz atılabilir. Lock nesneler üzerinde bir işlem yapıldığında devreye girer. İhtyaca göre küçük veya büyük bir alana kilit konabilir. Lock arttıkça diğer işlemler blocklanır. Blocklamalarda bir işlem yapılırken diğerleri bekler. Blocking takip edilerek sebebi araştırılmalı biran önce çözüm üretilmelidir. Çok fazla işlem yapılması yüzünden daha büyük bir alana kilit uygulanması veya uzun süre açık kalan transactionlar yüzünden kilidin uzun süre kalması en sık görülen bloklama sebepleridir.  Kodlar yapılacak düzenlemelerle veya uygun Isolation seviyeleri ile blocking problemi çözülebilir. Deadlock ise neredeyse hiç fark edilmez. İstekler askıda beklemez tamamen reddolur. Çapraz bir şekilde aynı kaynaklara erişmeye çalışan isteklerden varsayılan olarak geri çevrilmesi en maliyetli olanı işleme alınır, diğerleri iptal edilir. Deadlock aktivitelerini profiler, extended event gibi araçlar takip edebilirsiniz. Elde edilen bilgilere göre deadlocklar azaltılabilir.
  • HA, Audit, Job, Maintenance Plans, Database Mail gibi özelliklerden kaynaklı aktiviteler sağlıklı şekilde devam ediyor mu diye bakılır. Bu aktivitelerin loglarına ve ayarlarına bakılarak sağlıkları kontrol edilmelidir. Beklenenin dışında bir işlem olmuş mu diye kontrol edilmelidir. Gerekli düzeltmeler tespit edilip uygulanmalıdır.
DBA'gün günlük işleri daha çok takip üzerine ve ani ihtiyaçlara cevap verme üzerine kuruludur. Gün ortasında yavaş çalıştığı ifade edilen bir sisteme bakım yapmak çok pratik olmaz. Günlük takipte edilen bilgiler ışığı altında yukarıda bahsettiğimiz şekilde haftalık bakımlar yapmak gerekir. Kendi sisteminizin ihtiyaçlarını göre burada yazanları zenginleştirebilirsiniz.

Burada bahsettiğimiz konuların sayısı, sırası ve içerikleri sistemin büyüklüğüne göre değişebilir. Bu yazıyı tamamlayıcı nitelikte olan önceki yazımıza da göz atmanızı tavsiye ederim.

Önceki yazıya ulaşmak için:

Veritabanı Yöneticisinin Rutini - Günlük (DBA's Routine - Daily)

Faydalı olması dileğiyle,

26 Ocak 2019 Cumartesi

Veritabanı Yöneticisinin Rutini - Günlük (DBA's Routine - Daily)

Son zamanlarda bir çok alanda yapay zeka akımının hızla yayıldığını görüyoruz. Anlaşılan o ki bu akım yakın gelecekte belli kurallara bağlı işlerin insan faktörü olmadan yapılabilmesine, bazı işlerin yapılma şeklinin değişmesine, bazı işlerin de çok farklı bir boyuta taşınmasına sebep olacak.

Veritabanı Yönetimi (Database Administrative) işi de artık bundan nasibini almaya başladı diyebiliriz. Zaten Query Optimizer bir tür yapay zeka olup sorgu performansını her geçen gün daha yetenekli şekilde yükseltmekteydi. Bununla birlikte artık son zamanlarda bakım işlerini otomatikleştirmeyi hedefleyen yeni mekanizmaları da (Automatic Database Tuning, Smart Backup seçenekleri gibi) kullanmaya başladık. İlerleyen günlerde çok daha fazlasını göreceğimizden eminim. 

Bu gibi yenilikler belki Veritabanı Yöneticisi (Database Administrator) ihtiyacını tamamen ortadan kaldırmayacak ancak çalışma şeklini kesinlikle değiştirecektir. Bunu yakın gelecekte göreceğiz. Gelecek yaklaşa dursun, biz de bu arada DBA'in günlük rutininde neler olabilir bir bakalım.

Öncelikle DBA'in yönettiği sistemi ve ihtiyaçları iyi analiz etmesi gerekir. Bu analizleri de belli aralıklarla tekrarlamalıdır. Yol haritasına tatbikatları, acil durumda yapılacakları, kontrol listelerini, sağlık raporlarını eklemelidir. Bir DBA'in riskleri belirleyerek önlemleri zamanında alması, iyileştirme fırsatlarını görerek uzun ve kısa vadede çeşitli aksiyon planları oluşturması beklenir.

DBA'in günlük, haftalık, aylık olarak yapması gereken bazı görevleri olmalıdır. Bu görevlerin sırası, sayısı veya türü sistemin büyüklüğüne ve yoğunluğuna göre değişebilir. Biz bu yazımızda ortalama bir sistemde yapılabilecekleri özetleyelim, bazı ipuçları verelim. Bu özeti zenginleştirmesi size kalsın.

Günlük Görevler:


Öncelikle SQL Server Servislerinin çalışıp çalışmadığına bakılır. Servisler çalışıyorsa bağlantı kurulabiliyor mu diye bakılır. Servisler çalışmıyorsa veya bağlantı kurulamıyorsa sebebi araştırılmalıdır. Büyük ihtimalle bu konudaki detaylı ve yeterli bilgiye hata loglarından ulaşırsınız. Hata loglarının neler olduğunu aşağıda ikince maddede belirttim. 

Eğer SQL Servisleri çalışıyorsa ve bağlantı kurulabiliyorsa gün içinde şunlar yapılır:
  • Sistem yoğunluğu hakkında önceden fikir edinmek gerekir. Yönetilen sistemin genel yoğunluğunun ve ihtiyaçlarının neler olduğunu bilmek gerekir. Ortalama olarak CPU, Memory, Disk kaynak tüketimi ne seviyede? Disk büyüme hızı nedir? Disklerde yeterince boşluk var mı? Herhangi bir uzun süreli blocking söz konusu mu? Belki, belli bir sorgunun cevaplanma süresi bile referans alınabilir. Belirlenen bu bilgilere hızla bakılarak serverın içinde bulunduğu durum hakkında fikir edinmek mümkün olur. Bu durumu genel durumla kıyaslayıp server üzerindeki iş yükü görece olarak ölçülebilir. Bunun için SQL Server Management Studiodaki Activity Monitor veya Windows Task Manager'ı kullanmak yeterli olur. Bakıldığı anın özel bir an olup olmadığı da göz önünde bulundurulmalıdır. Yılın, haftanın, ayın veya günün iş yükünün anormal olduğu bir anında bakılıyor olabilir. Bunun için serverda yürüyen işler hakkında önceden fikir edinmek gerekir.
  • Logların kontrolü yapılır. İşleyişi bozabilecek herhangi bir hata gerçekleştiyse bu kayıtlarda detaylara ulaşma ihtimali yüksek. Bunun için SQL Server'ın loglarına (SQL Server Logs, SQL Server Agent Error Logs) ve İşletim sistemi loglarına (Event Logs) bakılmalır. İşletim sistemi loglarında daha çok donanım bazlı hatalara odaklanmak zaman kazandırır. Zaten oradaki bazı kayıtlar SQL Server logları ile aynıdır. Bir de herhangi bir kayıp var mı diye @@PACKET_ERRORS global değişkeni ile ağdaki paket gönderim hatalarına bakmak gerekir. Bu kısım için sp_monitor'den de faydalı bilgiler elde edilebilirsiniz.
  • Yedekler ve Joblar kontrol edilir. O ana kadar planlanmış yedekler sağlıklı şekilde alınmış mı? Ne kadar sürmüş? Yedek alınan yerler güvenli mi? Bu bilgiye SSMS / İlgili Database / Sağ Tık - Report / Backup and Restore Events raporundan erişebilirsiniz. Eğer açılması uzun sürerse msdb.dbo.backupset üzerinden de bu bilgilere ulaşabilirsiniz. Bu arada sahip olduğunuz SQL Server version/edition destekliyorsa Backup Compression özelliğini kullanmanızda fayda var. CPU'ya bir miktar yük bindirse de hem backup/restore hızınızı etkili şekilde arttırır. hem de disk alanında tasarruf ettirir. Ayrıca alınan yedeklerin sağlığını da belli aralıklarla kontrol etmekte fayda var. Yedeğin veya backup zincirinin bozulması backupların kullanılamayacağı anlamına gelir. Job aktivitelerini ise Job Activity Monitor'den izleyebilirsiniz.
  • Veritabanlarının genel durumuna bakılır. Veritabının durumu hangi seviyede görünüyor? online, offline, restoring, recovering, recovery pending, suspect, emergency, single user. Sağlıklı durum olan online hariç diğer ifadeleri veritabanı adının yanında parantez içerisinde görebilirsiniz. Dilerseniz sys.databases üzerinden de bu bilgilere erişebilirsiniz. Bu arada belirttiğim bu metadata nesnesinde log_reuse_wait_desc alanı size logun neyi beklediğini anlatır. Önemli bir diğer şey ise tutarlılık kontrolleridir. Veritabanları tutarlılıklarına DBCC CHECKDB/CHECKTABLE/CHECKALLOC komutları yardımıyla kontrol edebilirsiniz. Tutarlılıkla ilgili bozukluklar yine bu komutların parametreleri ile giderilebilir.
  • Sistemin performans değerleri hakkında periyodik bilgi toplanır. Activity Monitor, Performans Monitor, Profiler - Extented Events, Data Collection gibi araçlarla ve istatistik sunan metadata nesneleri ile periyodik olarak takipler yapılır ve sistemin performans değerleri takip edilir. Özellikle en maliyetli sorgular ve maliyetleri, servera sürekli erişen kişiler, bu kişilere ait program, yetki, oturum ve istekleri hakkında bilgiler, lock-deadlock sayısı ve sebepleri, uzun süre açık kalan transactionlar, beklenen görevler (waiting tasks) vs. dikkatlice takip edilmelidir. Tabi bu takibin sisteme ek yük bindireceğini unutmamak gerekir. Gün içinde sistemi yormayacak şekilde takipler yapılmalıdır. Serverın son başlatıldığı ana kadar olan bilgilere kolayca SSMS arayüzlerinden veya sp_whosp_who2, sys.dm_exec_connections, sys.dm_exec_sessions, sys.dm_exec_requests, sys.dm_os_waiting_tasks, sys.dm_os_wait_stats, DBCC OPENTRAN nesnelerinden ulaşabilirsiniz.
  • Indexlerin durumu kontrol edilir. Indexlerin bozulma ve kullanım durumları belli aralıklarla kontrol edilmelidir. Buna göre bakım türü, bakım sıklığı veya pageler içerisindeki dizilimi etkileyecek index tanımları belirlenir. Indexler hakkında bilgileri veritabanı raporlarından elde edebilirsiniz. Dilerseniz sys.dm_db_index_usage_stats, sys.dm_db_index_physical_stats, sys.indexes nesneleri üzerinden de bu bilgilere erişebilirsiniz. Belli aralıklarla oluşturulduğunda değer katacak indexleri keşfetmeniz faydalı olacaktır. Bu konuda ihtiyacınız olan bilgiye sys.dm_db_missing_index_groups ve sys.dm_db_missing_index_group_stats nesneleri üzerinden ulaşabilirsiniz. Bunlarla birlikte istatistiklerin güncelliğini de kontrol etmekte fayda var. STATS_DATE nesnesi table veya indexed view istatistiklerinin son güncelleme tarihini verecektir.
  • High Availability sağlığını kontrol etmek. Replication (HA çözümü sayılmasa da), Log Shipping, Mirroring, AlwaysOn Availability Group, AlwaysOn Failover Cluster çözümlerinin kendi yönetim ve takip biçimleri vardır. Kullandığınız çözüme göre işleyiş sağlığı, gecikmeler, gecikmelerden doğan tepkiler hakkında oluşan bilgileri gözden geçirmek ve felaket olduğunda devreye alabilme pratikliğini kontrol etmek gerekir.
  • Veritabanı güvenliği ne durumda. Kimler, nereden, hangi programlarla, hangi yetkilerle, kaç defa bağlanıyor? Kaç oturum açıyor ve ne talep ediyor? Yetkisiz erişim var mı? Özellikle takip etmek istediğimiz işlemlerle ilgili bir hareketlilik var mı? gibi soruların cevapları aranmalıdır. sys.dm_exec_connections, sys.dm_exec_sessions, sys.dm_exec_requests, sp_who ve sp_who2 gibi nesneler bir çok bilgi sağlayacaktır. Bununla birlikte Audit mekanizması da erişim aktiviteleri hakkında detaylı bilgi toplamayı kolaylaştıracaktır.
Yukarıda da bahsettiğim gibi sisteme ve iş yüküne bağlı olarak rutin işlerde farklılıklar olabilir. Çalışma esnasında bazı ipuçlarının peşine düşüp çok farklı konuları incelemek gerekebilir. Ancak günlük rutinde yapılan işler aşağı yukarı bunlardır. Zenginleştirmek ise size kalmış.

Yazının çok daha fazla uzamaması için scriptleri burada paylaşmak yerine ipuçları vermeyi tercih ettim.

Özetle sistem hakkında bilgi toplamak için SQL Server Logs, SQL Server Agent Logs, Windows Event  Logs, Activity Monitor, Extended Events, Profiler, Data Collector, Performans Monitor, sistemde hazır gelen server ve database raporları, DMV ve Metadata nesnelerinden faydalanabilirsiniz.

Hazır gelen raporlara SSMS üzerinden server ve databaseleri sağ tıklayıp açılan Reports menüsünden ulaşabilirsiniz.

Metadata nesneleri gizli Resource veritabanında yer alır. SSMS / herhangi bir DB / Views / System Views altından ulaşılabilir.

DMV listesine de şu linkten ulaşabilirsiniz:

faydalı olması dileğiyle,

17 Ekim 2018 Çarşamba

Power BI Demo Serisi ( Macera İşleri - 3 ) - Video

Abdullah Kise: "Bu seride Microsoft'un bisiklet ürünleri satışı yapan hayali firması AdventureWorks'un satış verileri üzerinde çalışıyoruz.  

Gündemimizde Report katmanından daha ziyade Query, Data ve Relationships katmanları olacak. M dili ve DAX dilini kullanarak bir takım yeni alanlar oluşturacağız. Bununla birlikte tablolar arası ilişki türlerini ve filtreleme biçimlerini ele alacağız.

Serimiz bir kaç bölümden oluşuyor. Bu bölümde CALCULATE fonksiyonu ile kullanıcının belirtiği filtrelerden bağımsız hesaplamalar yaptık. RANKX ile çalışanları bir hesaba göre sıraladık. SortbyColumn özelliğini kullanarak da bir alanı (ayları) diğer bir alanın (kaçıncı ay olduğu) değerlerine göre sıraladık."

Aşağıdaki linkten kaynak olarak kullandığımız Excel dosyasına ve videoda geliştirilen Power BI dosyasına erişebilirsiniz:




Önceki demo serisine erişmek için:

Power BI Demo Serisi ( Macera İşleri - 1 ) - Video

Power BI Demo Serisi ( Macera İşleri - 2 ) - Video

Power BI Demo Serisi ( Meşrubat Satışları - 3 ) - Video

Power BI Demo Serisi ( Meşrubat Satışları - 2 ) - Video
http://www.abdullahkise.com/2017/05/power-bi-demo-serisi-mesrubat-satslar-2.html

Power BI Demo Serisi ( Meşrubat Satışları - 1 ) - Video
http://www.abdullahkise.com/2017/05/power-bi-demo-serisi-mesrubatc.html


13 Ekim 2018 Cumartesi

Power BI Demo Serisi ( Macera İşleri - 2 ) - Video

Abdullah Kise: "Bu seride Microsoft'un bisiklet ürünleri satışı yapan hayali firması AdventureWorks'un satış verileri üzerinde çalışıyoruz.  

Gündemimizde Report katmanından daha ziyade Query, Data ve Relationships katmanları olacak. M dili ve DAX dilini kullanarak bir takım yeni alanlar oluşturacağız. Bununla birlikte tablolar arası ilişki türlerini ve filtreleme biçimlerini ele alacağız.

Serimiz bir kaç bölümden oluşuyor. Bu bölümde RELATED ve RELATEDTABLE fonksiyonlarını kullanarak ilişkili kayıtları çağırdık, COUNTROWS ile satırları saydık. PATH, PATHITEM ve LOOKUPVALUE fonksiyonlarını kullanarak tablodaki parent-child hiyerarşiyi çözümledik ve hiyerarşiler oluşturduk."

Aşağıdaki linkten kaynak olarak kullandığımız Excel dosyasına ve videoda geliştirilen Power BI dosyasına erişebilirsiniz:




Önceki demo serisine erişmek için:

Power BI Demo Serisi ( Macera İşleri - 1 ) - Video


Power BI Demo Serisi ( Meşrubat Satışları - 3 ) - Video

Power BI Demo Serisi ( Meşrubat Satışları - 2 ) - Video
http://www.abdullahkise.com/2017/05/power-bi-demo-serisi-mesrubat-satslar-2.html

Power BI Demo Serisi ( Meşrubat Satışları - 1 ) - Video
http://www.abdullahkise.com/2017/05/power-bi-demo-serisi-mesrubatc.html

7 Ekim 2018 Pazar

Power BI Demo Serisi ( Macera İşleri - 1 ) - Video

Abdullah Kise: "Bu seride Microsoft'un bisiklet ürünleri satışı yapan hayali firması AdventureWorks'un satış verileri üzerinde çalışıyoruz. Gündemimizde Report katmanından daha ziyade Query, Data ve Relationships katmanları olacak. M dili ve DAX dilini kullanarak bir takım yeni alanlar oluşturacağız. Bununla birlikte tablolar arası ilişki türlerini ve filtreleme biçimlerini ele alacağız. Serimiz bir kaç bölümden oluşuyor. Bu bölümde Query katmanında satır ve kolonları filtreliyoruz, yeni alanlar oluşturuyoruz. Relationships katmanında ise tablolar arası ilişki türlerine odaklanıyoruz. Single ve Both çapraz filtreleme davranışını inceliyoruz." Aşağıdaki linkten kaynak olarak kullandığımız Excel dosyasına ve videoda geliştirilen Power BI dosyasına erişebilirsiniz:
https://1drv.ms/f/s!Ap5-WHzOJRrTgto0PDQ7lgmfec4Uvg



Önceki demo serisine erişmek için:
Power BI Demo Serisi ( Meşrubat Satışları - 3 ) - Video

Power BI Demo Serisi ( Meşrubat Satışları - 2 ) - Video
http://www.abdullahkise.com/2017/05/power-bi-demo-serisi-mesrubat-satslar-2.html

Power BI Demo Serisi ( Meşrubat Satışları - 1 ) - Video
http://www.abdullahkise.com/2017/05/power-bi-demo-serisi-mesrubatc.html