Teknolojiyle uğraşırken, bazen belirli sınırlar olduğu gerçeğini kabul etmeniz gerekir - özellikle de mevcut kaynaklar söz konusu olduğunda. Ve bazen, belki de çoğu zaman, iş talepleri, mevcut kurulumda uygulanması zor veya neredeyse imkansızdır.
Son zamanlarda oldukça zorlu bir görevle karşılaştım - bir SSAS Çok Boyutlu çözümünü Power BI'a geçirmek. "Sorun", müşterinin Pro lisansına sahip olması (yani, 1 GB model boyutu sınırı) ve bilgi tablosunda yaklaşık 200 milyon satır bulunması (ve sürekli artması) idi!
Tablo ne kadar dar ve optimize edilmiş olursa olsun, 1 GB'ın altında 200 milyon satırı barındırmanın bir yolu olmadığını ilk bakışta biliyordum! Veri modeli boyutu optimizasyonu için en iyi uygulamalar hakkında zaten yazmıştım , ancak burada işe yaramazdı.
Olası çözümler hakkında düşünmeye başladığımda, ilk ve en bariz fikir Power BI'ı yalnızca bir görselleştirme aracı olarak kullanmak ve yalnızca bir SSAS küpüne Canlı Bağlantı yapmaktı. Bununla birlikte, bu çözüm ciddi sınırlamalarla birlikte gelir - en dikkat çekici olanı, semantik modelinizi rapor seviyesi ölçümleri yazarak zenginleştiremezsiniz - ve bu, müşterinin en önemli isteklerinden biriydi! Bu nedenle, Canlı Bağlantı hemen iptal edildi…
İkinci açık çözüm, verileri Power BI'a almak için DirectQuery modunu kullanmaktı. Power BI, SSAS Cube yerine doğrudan veri ambarındaki olgu ve boyut tablolarını hedefleyecektir. Direct Query, tüm sınırlamalarına rağmen tamamen yasal (ve mümkün olan tek) bir çözüm gibi görünüyordu. Ve bu aklıma gelenlerin en iyisiydi ...
… Phil Seamark'ın yepyeni bir perspektif açan filtrelenmiş toplamalar hakkındaki blog gönderisini bulana kadar ! Yaratıcı toplamalar hakkındaki bu dizinin tamamı harika, ancak bu özel kavram benim için aydınlatıcıydı.
Phil bunu her zamankinden daha iyi açıkladığından, konsept hakkında ayrıntılara girmeyeceğim. Esasen, fikir "sıcak" ve "soğuk" verileri ayırmak ve ardından Power BI'daki Bileşik model özelliğinden yararlanmaktır - Power BI'daki "etkin" verileri içe aktarırken "soğuk" veriler veri ambarında kalacak ve Doğrudan Sorgu yoluyla hedeflenir. Bunun da ötesinde, Power BI veri modeli içinde toplamaların uygulanması, daha sonra göreceğiniz gibi daha da fazla fayda sağlayacaktır.
Şimdi, umarım "sıcak" ve "soğuk" veri terimlerine aşinasınızdır - olmayanlarınız için - "sıcak" veriler, "güncel" kelimesinin tipik olarak "bağlıdır" anlamına geldiği en güncel verilerdir. . Özel kullanım durumunuza bağlı olarak son X dakika, saat, gün, ay, yıl vb. Veriler olabilir.
Benim durumumda, rapor kullanıcıları ile konuştuktan sonra, analizin çoğunun önceki 3 aydaki verilere odaklandığı sonucuna vardık. Bu nedenle fikir, bugünün tarihinden 3 ay önceki veriler olarak "sıcak" verileri dinamik olarak çıkarmak ve bu verileri Power BI tablo modelinde depolamaktır. Rapor tüketicileri, veriler en iyi şekilde sıkıştırılacağı ve bellekte tutulacağı için hızlı sorgulardan faydalanacaktır. Öte yandan, analiz için daha eski verilere ihtiyaç duyulduğunda ("soğuk" veriler), Power BI doğrudan bir veri kaynağına gider ve sorgu sırasında verileri oradan çeker.
"Devrilme noktası" bulmak - "sıcak" ve "soğuk" verileri ayırmak için zaman noktası burada çok önemlidir. "Sıcak" veriler için daha kısa bir süre kullanmayı tercih ederseniz, daha küçük bir veri modeli boyutuna sahip olursunuz (Power BI'da daha az veri içe aktarılır), ancak daha sık Doğrudan Sorgu sorgularıyla yaşamak zorunda kalırsınız.
Ancak, yeterli teori, Power BI Desktop'a atlayalım ve size "200 milyon satırlık" olgu tablonuza 1 GB'den daha az sığacak tüm adımları göstereceğim!
Gördüğünüz gibi, benim orijinal bilgi tablom spor bahisleri hakkında veriler içeriyor ve yaklaşık 200 milyon satıra sahip.
Ayrıca iki basit boyut tablom var - Tarih boyutu ve Spor Türü boyutu.
Power BI'daki tüm verileri içe aktardığım için, veri modelimin arkasındaki ölçümleri kontrol edeceğim. Gördüğünüz gibi pbix dosya boyutu 1 GB'ın biraz altında. Ve bu sayı günlük bir seviyede artıyor!
İlk adımımızı uygulayalım ve "sıcak" ve "soğuk" verileri ayıralım. Bu ikisi arasında örtüşme olmadığından, aynı zamanda aralarında boşluk olmadığından emin olmanız gerekir, böylece sonunda doğru bir sonuç alırsınız.
Burada, Power BI içindeki Bileşik model özelliğinden yararlanacağız. Dev bilgi tablomu ikiye böldüm: factBetSummaryHot ve factBetSummaryCold. "Sıcak" tablo, önceki 3 takvim ayındaki verileri tutacak ve benim durumumda, bu tabloda şu anda yaklaşık 4,3 milyon satır var.
Doğrudan Sorgu depolama modunda hem "sıcak" hem de "soğuk" tablolar oluşturarak başladım. Ardından, önce "sıcak" veriler üzerinden birleştirilmiş bir tablo oluşturacağım ve bu tablo Import modunu kullanacak. Öte yandan, "soğuk" tablo kalan ~ 190 milyon satırı içerir ve Doğrudan Sorgu modunu kullanacaktır. Üstelik, farklı boyut özelliklerini (örneğin tarih ve spor türü gibi) kapsayacak birkaç toplu tablo oluşturacağım ve ayrıca bu iki birleştirilmiş tablo için İçe Aktarma modunu kullanacağım, böylece Power BI'ın Doğrudan Sorguya geçmesi gerekecek ve orijinal veri kaynağını yalnızca İçe Aktarma modu tablolarından memnun olmayan sorgular için hedefleyin!
Tamam, şimdi filtrelenmiş toplama çözümünü uygulamaya başlayalım. Aşağıdaki çizimde görebileceğiniz gibi, "soğuk" tabloyu Doğrudan Sorgu depolama moduna geçirdim:
Ve şimdi pbix dosya boyutunu kontrol edersem, sadece 17 MB olduğunu görüyorum!
Böylece, veri modeli boyutunu ~ 1GB GB'den 17MB'ye düşürürken aynı zamanda orijinal veri ayrıntı düzeyini koruduğum için verileri 1GB'tan daha az sığdırmak için başlangıç isteğini yerine getirdim!
Şimdi, "etkin" veriler üzerinde birleştirilmiş bir tablo oluşturalım ve bu tablonun depolama modunu İçe Aktar olarak ayarlayalım:
Bu güçlü özellik hakkında daha fazla bilgi edinebileceğiniz, Shabnam Watson tarafından yazılmış harika bir makale olduğu için, toplamalar hakkında ayrıntıya girmeyeceğim .
Bir sonraki adım, yeni oluşturulan birleştirilmiş tablo ile boyut tabloları arasında ilişkiler kurmaktır:
Şimdi, bu raporun performansı birçok şeye bağlı olacaktır. Kullanıcı raporla etkileşime girmeye çalışırsa ve 3 aydan eski verileri isterse, Power BI gidip bu verileri SQL Server veritabanında depolanan ~ 190 milyon satır aracılığıyla arayacaktır - ağ gecikmesi, eşzamanlı istekler, vb.
Diyelim ki basit Kâr Üzerinden TOPLA sütunu olan toplam kârı analiz etmek istiyorum. Doğru rakamı elde etmek için, aşağıdaki DAX ölçüsünü yazarak hem "sıcak" hem de "soğuk" tablolardan değerleri toplamam gerekiyor:
Total Profit Hot & Cold = VAR vProfitHot = SUM(factBetSummaryHot[profit]) VAR vProfitCold = SUM(factBetSummaryCold[profit]) RETURN vProfitHot + vProfitCold
Aşağıdaki çizim, seçilen tarihlerin 31 Ocak ile 30 Mart arasında olmasına rağmen, verilerimi hazırlamak için Power BI'ın neredeyse 12 saniyeye ihtiyaç duyduğunu gösteriyor! Ve Performans Analizcisi sayılarına bakarsak, Doğrudan Sorgunun o zamanın neredeyse tamamını aldığını göreceksiniz:
Verilerin bu bölümü için güzel küçük birleştirilmiş tablomuz varken neden Dünya'da Power BI'ın Doğrudan Sorgu uygulaması gerekiyordu? Power BI akıllıdır. Aslında çok akıllı! Doğrudan Sorgu ikizini "ziyaret etmek" yerine, SUM üzerinden kâr sütunumuzu dahili olarak çevirmek ve toplama tablosuna ulaşmak için yeterince akıllıydı. Bununla birlikte, her şeyi kendi başına çözemediği bazı durumlar vardır. Bu senaryoda Power BI , "soğuk" Doğrudan Sorgu tablosundan bile tüm verileri aşağı çekip çekti ve ardından tarih filtrelerini uyguladı!
Bu , veri alımından ÖNCE tarih filtrelerini değerlendirmek için Power BI'a "talimat vermemiz" gerektiği anlamına gelir ! Ve yine, önlemin geliştirilmiş versiyonu için Phil Seamark'a teşekkürler :)
İlk adım, DAX'ta zaman içindeki "devrilme noktasını" ayarlamaktır. Bunu, dev olgu tablomuzu "sıcak" ve "soğuk" olarak böldüğümüzde, SQL'deki ile tamamen aynı mantığı kullanarak yapabiliriz:
Time Line = VAR maxDate = CALCULATE( MAX('factBetSummaryHot Agg'[datePlaced]), ALL() ) RETURN EOMONTH(DATE(YEAR(maxDate),MONTH(maxDate)-3,1),0)
Total Profit = VAR vProfitHot = SUM(factBetSummaryHot[profit]) VAR vProfitCold = IF( MIN(dimDate[date]) < [Time Line] , SUM(factBetSummaryCold[profit]) ) RETURN vProfitHot + vProfitCold
Ama değilse, pekala ...
Gördüğünüz gibi, görselimiz artık 159 milisaniyede görüntüleniyor! Ve DAX sorgusu 12 milisaniye sürdü! Bu sefer Doğrudan Sorgu yok ve eğer gidip sorguyu DAX Studio'da kontrol edersek, ölçü içinde Doğrudan Sorgu tablosunu referans olarak kullansak bile toplama tablomuzun eşleştiğini göreceğiz!
Sorun değil, çünkü en sık çalışan sorguların (önceki 3 ayın verilerini hedefleme) İçe Aktarma modu toplu tablosu kullanılarak karşılanacağı anlamına geliyor!
Bir sonraki optimizasyon adımı olarak, verileri "devrilme noktasından" (3 aydan eski) önce çekmesi gereken, en sık çalıştırılan kullanıcıların sorgularını potansiyel olarak tatmin edebilecek "soğuk" veriler üzerinde birleştirilmiş tablolar oluşturmak istiyorum. Bu, veri modeli boyutunu biraz artıracak, ancak rapor performansını önemli ölçüde artıracaktır.
Bu nedenle, yalnızca bazı özel kullanım durumlarında, bir kullanıcının "soğuk" veriler içinde bazı yüksek düzeyde tahıl görmesi gerektiğinde, Power BI sorguyu doğrudan temeldeki bir veritabanına çalıştırır.
Boyutlarımıza göre "soğuk" veriler üzerinde iki toplu tablo oluşturalım. İlki, verileri tarihe göre toplayacaktır:
SELECT datePlacedID ,SUM(profit) profit ,SUM(countBet) countBet FROM factBetSummaryCold GROUP BY datePlacedID
SELECT sportTypeID ,SUM(profit) profit ,SUM(countBet) countBet FROM factBetSummaryCold GROUP BY sportTypeID
Öncelik özelliğini ayarlayarak, ilk olarak kullanılacak tabloları toplayan Power BI'a "talimat verebilirsiniz". Öncelik değeri ne kadar yüksekse, daha yüksek öncelik ilgili tabloyu alır.
Raporumuza geri dönelim ve "devrilme noktası" öncesindeki verileri ekledikten sonra önlemimizin performansını kontrol edelim:
Harika! Tarih aralığını önceki 6 aya genişlettim ve sonuçlarımızı 198 milisaniye içinde geri aldık, DAX sorgusu ise sadece 40 milisaniye sürdü! DAX Studio'ya daha derinlemesine bakarsak, hem "soğuk" hem de "sıcak" veriler için isteğimizin hem "bölümlerinin" İçe Aktarma modunda birleştirilmiş tablolardan sunulduğunu doğrulayabiliriz:
Bir sonuç çıkarmadan önce, pbix dosya boyutumuza son bir göz atalım:
Bu inanılmaz: 18MB!
Gördüğünüz gibi başardık! Orijinal istek, veri modelini olgu tablosundaki 200 milyon satırın hiçbirini kaybetmeden SSAS küpünden Power BI Pro çalışma alanına taşımaktı! Orijinal veri ayrıntı düzeyini korurken ve kullanım durumlarının% 99'u için rapor performansını etkilemeden neredeyse 1 GB ile başladık ve 18 MB'de bitirdik!
Olağanüstü görevler olağanüstü çözümler gerektirir - ve bana sorarsanız Phil Seamark'ın parlak fikri sayesinde - Pro sınırlarında bile çok büyük verileri barındıracak bir çözümümüz var.
Esasen, az önce yaptığımız şey, 18MB’ye 200 milyon satır sığdırmayı başardık…
Okuduğunuz için teşekkürler!
Yasal Uyarı: Bu makale yalnızca eğitim amaçlıdır. Kimseyi web sitelerini, özellikle de bu tür eylemlere karşı hüküm ve koşulları olabilecek web mülklerini kazımaya teşvik etmiyoruz.
Biçimsel bir sistem, temel sembollerden ve bu sembolleri manipüle etmek için bir dizi kuraldan oluşan bir mantık yapısıdır. Bu semboller “temeldir” çünkü içsel bir anlamları yoktur.
Arka hikaye Her ürünün bir hikayesi vardır ve bu Yapdoof'un başlangıç hikayesidir. Yapdoof, Omept Technology Nijerya Limited'in bir ürünüdür.
Güncel özet: Mevcut makro durum değişmeden kalsa da, faiz oranlarını artırma zamanı yaklaştıkça daha "öngörülü" fişler piyasadan çekilecek, ki bu normaldir. yatırımcılar üzerinde bir etki, bu etki sadece duygusal değil, aynı zamanda tüm Amerikalıları yiyecek, giyecek, barınma ve ulaşım gibi çeşitli yönlerden etkiliyor. İşte tam da bu nedenle daha fazla yatırımcı chiplerini borsalara önceden transfer ediyor veya önceden diplerde satmaya hazırlanıyor.Sadece faiz artırımından sonra trend üzerine bahse girmek istemiyorlar.Durum hala iyi, ancak sabah 6:45'te parçalandı ve şu ana kadar parçalandı. Bu, düşüşün duygusal tarafındaki panik ve iyi zamanlanmış. Ama yine de bir haftadır söyledim.Şu anda makro oyun koşulları büyük çaplı düşüş ve yükseliş trendini desteklemiyor.Faiz oranları ve GSYİH'nın tam olarak inmesi için genel şok düzenini değiştirmek zor. . Aslında her sabah Cumartesi ve Pazar günleri bu seviyede bir ezilme oluyor, daha iki gün önce yakalandı ve sonra hareket olmadı, bugün yakalanmadı ve ardından panikli bir takibi tetikledi. Bu sabah 10:00 itibariyle BTC pozisyonlarının fiyat dağılımı ve dün gece 23:00'ten bugüne veriler, bu sabahın erken saatlerinde başlayan ancak büyük bir artış görmeyen hızla yükselen ve ardından düşen düşüşü yaşadı. BTC adreslerindeki değişikliklerin sayısı Değişikliğin ölçeği, çünkü bu iniş ve çıkışların aşırı güçlü bir tepkiye neden olmayacağı, ancak borsada önceden depolanan çiplerin duygusal değişimlerinin daha fazla olacağı yargısına varılabilir. Her iki taraftaki aşırı fiyatlara bakılırsa, eskilerin elindeki BTC, hafta sonu boyunca hala normal dalgalanma aralığını izliyor, sadece 200 BTC'den fazlası bir bütün olarak piyasadan ayrılıyor, yüksek seviyede tutulan fişler büyük ölçüde dalgalanıyor, yaklaşık 51.000 $ civarında. Yaklaşık 1.900 BTC'lik BTC değişimi, ancak çapraz karşılaştırmadan sonra, en büyük olasılık hala borsaların değişiminden geliyor, bu nedenle aslında, yüksek seviyede kilitlenen fişlerin değişimi sadece 150'den az . Bu transfer dahil olsa bile, toplam kayıp yığınındaki 24.000 doların üzerindeki düşüş 4'ü geçmedi, 200 BTC Bu, ister kısa vadeli bir yükseliş, ister fiyatta düşüş olsun, en büyük oranı kaplayan kaybeden chiplerin tepki vermediği anlamına geliyor.Bu yüzden büyük ölçekli bir düşüş olmayacağına karar vermemin nedeni bu. Hafta sonları kalan düşük volatilite yerine adresler değişiyor. Üstelik, yalnızca erken dönem kâr ve zarar fişlerindeki değişiklikler azalmakla kalmıyor, mevcut anlaşmazlık fiyatı altındaki kısa vadeli işlem fişleri bile fazla yanıt vermedi ve hafta sonu genel satış baskısı hala düşük. Borsaya aktarılan BTC verisine bakılırsa, bu sabah saat 8:00 itibariyle satış baskısı gerçekten de düşmeye devam ediyor, bu da satış için güçlü bir isteklilik olmadığını gösteriyor. Ayrıntılı verilerde, 6:45'te düşmeye başlamasına rağmen, bu dönemde oluşan satış baskısının büyük olmadığı, sadece sabah 8:30'dan sonra ortaya çıkan güçlü satış baskısının olduğu da görülebiliyor. Borsaya aktarılan satış baskısı ile karşılaştırıldığında, borsadan çekilen para miktarı çok fazla değil.Genel satış baskısını karşılayabilse de, bu alım gücü seviyesi şokların durumunu değiştirmek için hala yeterli değil.Fiyat dalgalanıyor likiditenin düşük olduğu hafta sonları. Ayrıntılı verilerden, Pekin saatinden 8:00'den sonra satış baskısındaki artışla birlikte, para çekme sayısının da artmaya başladığı, ancak nispeten konuşursak, bazılarının hazırlıksız yakalandığı görülebilir. Bununla birlikte, genel oyun durumu açısından bakıldığında, satışta çok fazla fiş olmadığı ve satın alma gücü durmadığı için, aksine, aktif olarak satın alıyorlar ve karşılık gelen fişleri devre dışı bırakmaya devam ediyorlar. Bu aynı zamanda fonların reaksiyondan sonra satın alma arzusunun devam ettiğini, bu nedenle büyük ölçekli bir düşüşün gerçekleşmesinin zor olduğunu kanıtlıyor. Sarsıntı hala ana tema. Borsanın BTC hisse senedi verilerinden, hafta sonları düşük tiraj durumunda bile, borsadan kaybolmaya devam eden çok sayıda chip olduğu görülebilir, bu sadece satın alma gücünün çok daha yüksek olduğunu göstermez. satış baskısından ziyade, aynı zamanda mevcut ekonomik fraksiyonu temsil eder.Enflasyonda bir zirve ve fiyatlarda bir dip beklentileri. Hisse senedinin detaylı verilerinden sabah 8:00'den önce borsa hissesinin fiyat düşse bile sürekli düşüşte olduğu görülüyor. Saat sekizden sonra, tamamen farklıydı. Dolayısıyla fiyat düştüğünde genel satışın sabah 6:45'te başlamadığı, tam tersine şu anda daha büyük bir dalgalanma olmadığı açıkça görülüyor. Daha büyük ölçekli bir satış, ancak bu noktadan sonra duyarlılık tarafından yönlendirildi. Mevcut fon miktarının düşük olduğu ve taahhüt kapasitesinin yetersiz olduğu doğru olmakla birlikte, büyük çaplı panik satışlarını tetiklememiştir. Mevcut BTC sürekli sözleşme verilerine bakılırsa, fonlama oranı fiyat düşüşüyle düşüşe geçmedi, bunun yerine büyük ölçekli bir yükseliş hissiyatı var, bu da mevcut hissiyatın daha fazla olduğunu gösteriyor Yatırımcılar bunun sadece aşamalı bir düşüş olduğuna inanıyor. ve ABD enflasyonu zirveye ulaştığında BTC hala dibe vuracak. Aslında, bugünün düşüşü için bir neden yok ve bu sadece hissiyattaki düşüş eğiliminden kaynaklanmıyor çünkü bu Cuma BTC ve ETH opsiyonlarının aylık teslimatı olacak çünkü önceki aylar düşüşte.Durum, fiyat teslimattan önce her zaman en büyük acı noktasından uzaktır, bu nedenle opsiyon teslimatına dikkat eden çok daha az küçük ortak var, özellikle opsiyon satıcıları güçsüz ve bu ay farklı. Temmuz sonunda, BTC opsiyonlarının en büyük acı noktası 23.000 ABD doları ki bu tam olarak bu sabahki düşüşten önceki fiyat.Önceki aylardaki yaklaşık 10.000 ABD doları açıkla karşılaştırıldığında, bu ay aslında bu fırsatı yakalama fırsatı var. en büyük acı noktasına ulaşmak ve aynı zamanda en uzun-kısa oyun yoğun bir durumdur. Mevcut kısa-uzun oran 0,83 ve boğalar küçük bir aralıkta liderliğini sürdürüyor.Mevcut açık opsiyonlar 76.654 ve beklenen miktar yaklaşık 1,7 milyar ABD doları. Dolayısıyla rekabet daha yoğun olacak. ETH'nin en büyük acı noktası sadece 1400 dolar.Mevcut fiyat, son aylarda nadir görülen en büyük acı noktasından hala daha yüksek.Kısa-uzun oranı bile son aylarda 1'den 0'a düştü.
Sathya Krishnan Suresh, Shunmupapriya P Bu yazıda, stili ve içeriği iki ayrı görüntüden gelen yeni görüntüler oluşturmak için kullanılabilecek bir yöntem olan “Nöral Stil Transferi” adlı ilginç bir konuyu tartışacağız. Bu makale Leon A Gatys ve arkadaşlarının A Neural Algorithm of Artistic Style (Sanatsal Stilin Sinirsel Algoritması) temel alınarak hazırlanmıştır; burada yazar, Evrişimsel Sinir Ağı (CNN) katmanlarını kullanarak yeni bir görüntünün oluşturulması hakkında ayrıntılı bir açıklama sunar.
Bugün farklı bir yolculuğa çıkıyoruz. Çoğunlukla resimler.