Newsletter 10/2023 17.03.2023

📝 Gdzie zacząć naukę DAXa? (10/2023)

To już 10-te w tym roku wydanie newslettera Zobacz Dane. Mam nadzieję, że udało Ci się skorzystać ze sporej ilości materiałów, które polecałem. I zgadnij co….. to nie koniec – dzisiaj kolejna porcja wartościowej wiedzy – specjalnie dla Ciebie.

Zaczynamy jednak jak zwykle od spisu treści.

Agenda dzisiejszego maila:

  1. CTE – czy dobry na wszystko?
  2. Modern data stack – a co to??
  3. Gdzie zacząć naukę DAX?
  4. #vizoftheweek – Zwroty z inwestycji od 1985 roku
  5. Zautomatyzuj nudne zadania w Excelu
  6. NOWOŚĆ – Problem SQLowy do rozwiązania
    • Rozwiązanie zagadki sprzed tygodnia
    • Nowy problem na dzisiaj
  7. Co słychać u mnie?

Jeśli chcesz powrócić do starszych archiwalnych numerów newslettera – poniżej link oraz hasło (ekskluzywny dostęp dla naszej społeczności)

LINK DO BAZY ARCHIWALNYCH NEWSLETTERÓW (Hasło: DZIK)


 

1. CTE – czy dobry na wszystko?

W ostatnim czasie słyszymy dużo dobrego na temat CTE czyli common table expression, których używamy w kodzie SQL. No bo wiadomo – wygląda to profesjonalnie, lepiej się czyta, zwiększa przejrzystość kodu itd.

Niekiedy jednak CTE bywa dość mocno nadużywany jak na przykład tutaj:

Ten temat w swoim najnowszym nagraniu postanowił podjąć Darek Butkiewicz z kanału Nieinformatyk. Opowiada on o tym, czy CTE jest dobry zawsze i wszędzie (oczywiście, że NIE) oraz kiedy nie powinniśmy używać tej “modnej” metody kodowania.

Filmik znajdziesz pod tym linkiem:
== Jak działa WITH w SQL czyli co to jest CTE? ==



2. Modern data stack – a co to??

Jeśli chociaż odrobinkę interesujesz się danymi a szczególnie inżynierią danych (data engineering) to mogło obić Ci się o uszy określenie “modern data stack“. Mi przynajmniej obijało się tyle razy, że postanowiłem kiedyś sprawdzić o co chodzi z tym MDSem…

Oczywiście napisano setki stron na ten temat, ale większość z nich jest po angielsku i z tak techniczną terminologią, że przeczytanie ich ze zrozumieniem jest prawdziwym wyzwaniem. Ale….. ostatnio wpadł mi w rękę materiał po polsku na poziomie mało zaawansowanym.

Od razu uprzedzam, że jest to materiał “sprzedażowy” gdzie firma Vizyble pokazuje korzyści ze wdrożenia MDS, więc trzeba mieć to z tyłu głowy czytając krótki artykuł i oglądając webinar (trzeba podać maila i dostajemy link do nagrania).

Pomimo tego da się z tego wyciągnąć trochę fajnej wiedzy dla siebie:
== Modern data stack w Vizyble ==



3. Gdzie zacząć naukę DAX?

W poprzednim newsletterze (09/2023) polecałem zapisanie się do grupy Linkedin związanej z platformą PowerBI. Ostatnio własnie tam pojawił się post, w którym autor Mateusz Wiatr podzielił się materiałami do nauki podstaw DAX.

Na stronie SQLBI.com dwaj eksperci od PBI: Marco Russo oraz Alberto Ferrari prowadzą bloga, wideo bloga i publikują swoje kursy. Część z nich – zwłaszcza te na poziomie podstawowym – są darmowe. I tak dla młodych adeptów DAXa znajdziemy tam trzy interesujące i kosztujące całe 0 zł materiały do nauki:

  • Introducing DAX Video Course – 32 lekcje podstaw DAX czyli ponad 3h materiału wideo
  • Introduction to Data Modeling for Power BI Video Course – tym razem prawie 30 lekcji i 2 godziny wideo z modelowania danych oraz
  • DAX Tools Video Course – ponad 2 godziny i 37 lekcji o narzędziach do DAX

Jak pisze sam Mateusz “Polecam – od tych trzech kursów zaczynałem swoją przygodę z DAXem

Może warto poświęcić sobotę albo niedzielę i przejść choć jeden z kursów?

== SQL BI Training ==



4. #vizoftheweek – Zwroty z inwestycji od 1985 roku

Budowa portfela inwestycyjnego to ciekawe zagadnienie dla osób mających nieco nadmiarowych aktywów. Co prawda podobno od przybytku głowa nie boli, ale jeśli masz sporo wolnej gotówki to chcesz, żeby pracowała na siebie jak najlepiej.

Jednym z możliwych rozwiązań jest budowa zdywersyfikowanego portfela, czyli takiego, który składa się z różnorodnych aktywów. Istnieje wiele prac naukowych dowodzących, że strategia “nietrzymania wszystkich jaj w jednym koszyku” ma sens i zmniejsza ryzyko.

Zatem w co inwestować? Na to pytanie każdy musi odpowiedziec sobie sam, chociaż pewnych wskazówek może dostarczyć nam historia. Na naszym “wykresie tygodnia” widzimy roczne zwroty z różnych “klas aktywów”.

Do pokazania takiej ilości danych sprawdza się właśnie taka mniej standardowa tree map.
W artykule znajdziemy dane od 1985 roku wraz z bardziej interaktywną i wygodniejszą wersją tej wizualizacji.

Artykuł znajdziesz pod tym linkiem:

 



5. Zautomatyzuj swoje zadania w Excel

Stary poczciwy MS Excel jeszcze długo pozostanie królem dżungli korporacyjnych danych. Ale czasem praca z nim może być nudna i żmudna – zwłaszcza jeśli musimy wykonać wiele razy tą samą operację na rożnych plikach lub w kilku miejscach.

Oczywiście są różne triki pozwalające na efektywniejszą pracę z Excelem (nawet kiedyś napisałem o tym), jest także VBA, które w znaczący sposób rozszerza funkcjonalności Excela. Ale jest również Python, który w bardzo prosty sposób pomaga automatyzować powtarzalne czynności arkusza kalkulacyjnego.

Z artykułu Nika Piepenbreiera dowiemy się jak przyspieszyć swoją pracę, gdy akurat musimy:

  • złączyć informacje z wielu plików w jeden plik
  • policzyć sumę wartości z wielu plików
  • wprowadzić nową formułę w każdym z wielu plików

Do każdego z przykładów mamy też gotowy kod pythonowy.

Tutaj link do artykułu na Towards Data Science:
== Automate These 3 Boring Excel Tasks with Python ==



6. Problem SQLowy do rozwiązania

poprzednim numerze newslettera zadałem zagadkę SQLową do samodzielnego rozwiązania.
Serdecznie gratuluję Mariuszowi, który jako pierwszy podesłał odpowiedź i to w dwóch wersjach 🙂

Oto i rozwiązania Mariusza:

1.
WITH sum_orders_value_from_feb

AS

(SELECT o.customer_id, SUM(quantity*unit_price) total_revenue

FROM order_items oi

INNER JOIN orders o ON oi.order_id = o.order_id

WHERE o.order_date BETWEEN ‘2023-02-01’ AND ‘2023-02-28’

GROUP BY o.customer_id)

 

SELECT TOP 5 customer_id, total_revenue

FROM sum_orders_value_from_feb

ORDER BY total_revenue DESC

2.

SELECT TOP 5 o.customer_id, SUM(quantity*unit_price) total_revenue

FROM order_items oi

INNER JOIN orders o ON oi.order_id = o.order_id

WHERE o.order_date BETWEEN ‘2023-02-01’ AND ‘2023-02-28’

GROUP BY o.customer_id

ORDER BY SUM(quantity*unit_price) DESC


Pora na zagadkę na najbliższy tydzień:

Załóżmy, że mamy tabelę sales o takiej liście kolumn:

“transaction_id” (integer)
“transaction_date” (date)
“customer_name” (text)
“product_name” (text)
“quantity” (integer)
“unit_price” (float)

Napisz zapytanie, które policzy sumę przychodów dla każdego z miesięcy roku 2022 w rozbiciu na produkt. Twoje zapytanie powinno zwrócić następujące kolumny:

“month” (integer)
“product_name” (text)
“total_revenue” (float)

Kolumna “month” jest miesiącem transakcji i przyjmuje wartośc od 1 do 12, oraz  “total_revenue” określa sumę przychodu ze sprzedaży w danym miesiącu dla konkretnego produktu (iloczyn quantity oraz unit_price). Rezultaty uszereguj wpierw rosnąco według miesięcy a następnie malejąco według sprzedaży.

Powodzenia!
Odpowiedź w kolejnym newsletterze.



 

Co słychać u mnie? 

  • Słabo ostatnio mi idzie publikowanie na Linkedinie, ale głównie za sprawą napiętego harmonogramu pracy zawodowej. Mimo to coś tam od czasu do czasu udaje się wrzucić, więc możesz od czasu do czasu zagladac do mnie – link do mojego Linkedina.
  • Kończę książkę Wszyscy kłamią” Setha Stevens-Davidowitza – pozycja dotyczy wykorzystania big data i danych z wyszukiwań Googla w rozwiązywaniu problemów, dla których do tej pory jedynym rozwiązaniem była ankieta na wąskiej prób osób. Co ciekawe w książce znajdziemy też cały rozdział o tym czego NIE dowiemy się analizując duże zbiory danych. Lektura dla każdego kto lubi i zajmuje się danymi.
  • W tym tygodniu w głośnikach soundtrack z Diablo II