Skumulowana suma po produktach w DAXie

To jest problem, który napotkałem u jednego ze swoich klientów bardzo niedawno. Chciałem policzyć jaka sprzedaż jest generowana przez N pierwszych produktów w stylu pareto tj. jeśli pierwszy produkt ma sprzedaż 200, a drugi 100, to dla pierwszego będę miał 200, a dla drugiego 300. Taka kalkulacja pozwala pokazać, że przykładowo 90% sprzedaży jest generowane przez 7 produktów.

Funkcja pętli w Power BI

Dzisiaj napiszę w jaki sposób stworzyć funkcję pętli w Power BI używając List.Generate() i funkcji niestandardowej. Zaprezentuje jak przejść przez kolejne strony przy zapytaniu API. W Pythonie zostało by to zrobione właśnie ze pomocą funkcji “for”.

Atak SQL Injection w usłudze Power BI

Zdaję sobie sprawę, że taki temat może być oczywistością dla wielu doświadczonych inżynierów danych czy SQLowców, ale mnie mocno zaskoczył. Nasz architekt Paweł Potasiński zwrócił mi uwagę na taką możliwość. W kontrolowanym środowisku Power BI pozwala na wstrzyknięcie kodu SQL poprzez parametr i robienie (prawie) wszystkiego na co ma się ochotę – nawet usunięcie bazy danych! O SQL Injection można poczytać tutaj lub obejrzeć ten filmik. A o moich skryptach w M tu lub tu.

 

Uwierzytelnianie przy użyciu wielu loginów i haseł do jednego źródła danych

Zadanie z poprzedniego tygodnia wymagało jeszcze jednej rzeczy! Jak wspomniałem, klient pobierał dane z API. Dodatkowo klient chciał pobierać dane dla dwóch różnych podmiotów tj. musiał łączyć się z bazą za pomocą dwóch różnych zestawów haseł i loginów. Ponieważ wszystko miało być raportowane z Power BI, musiałem znaleźć rozwiązanie. Znów postanowiłem popisać w M!

Zmiana jednostek przy pomocy slicerów

Dzisiaj opiszę bardzo proste rozwiązanie, które umożliwia zmianę jednostek/walut używając slicerów. To rozwiązanie sprawi, że raport będzie jeszcze bardziej interaktywny i łatwiejszy w odbiorze. Z mojego doświadczenia mogę dodać, że klienci będą w stanie znaleźć ważne dla nich informacje znacznie szybciej. Efekt końcowy może wyglądać na przykład tak: