Dobre praktyki SQL: złączenia INNER JOIN czy w klauzuli WHERE?

Problem: Jak połączyć dwie tabele w SQL’u? Ma to być złączenie równościowe (INNER JOIN). Tylko rekordy, które spełniają warunek złączenia mają być wybrane. Nic więcej, nic mniej.

Jak zapisać złączenie między nimi? Jaka jest dobra praktyka? Jak stworzyć kod, który będzie łatwy w utrzymaniu, rozbudowie i czytelny dla innych członków zespołu?

Możliwości:
1. Użyj klauzuli: INNER JOIN

FROM dbo.Users usr
INNER JOIN dbo.Posts post ON (post.OwnerUserId = usr.Id)

2. Wymień tabele, które chcesz złączyć w zaraz za FROM i później wykonaj złączenia w WHERE

FROM dbo.Users usr, dbo.Posts post
WHERE post.OwnerUserId = usr.Id

Rozwiązanie: Użyj INNER JOIN – składnia jest bardziej czytelna a kod będzie łatwiejszy w utrzymaniu i debugowaniu. Argumenty znajdziesz poniżej.

Read More

Pandas can do THIS? Data Engineer perspective on pandas

We all work with data.

Amount of data is growing fast, in the business setup or daily life. There is a need to extract them from different places, marge it, filter and send it to someone.

And do it AS FAST AS POSSIBLE.

Probably you also have a lot of data to be analyzed.

Most likely, you don’t like to repeat this operations over and over again. Doing everything manually is a tedious task.

Python and pandas might be the tools that you need.

Pandas gives you possibility to:
– read it from heterogeneous data sources: (CSV, Excel, Database, Parquet etc)
– analyze the data,
– operate on a data,
– manipulate the data,
– supplement it with another data,
– filter and sort.

After you are done with your operations, pandas gives you a possibility to store it in your favorite format: Excel, CSV, Parquet. Whatever you like.

Read More

How to audit staging area?

audit staging

Imagine that it is your first day in new company. Your manager is giving you an ambitious plan of restructuring the current Data Warehouse design.

He said that it is probably not a task for this week, but in 3 months he would like to have some proposal from you. He points some people that you might talk to.

You would like to make this process efficient. Imagine a set of questions that you could as to help you solve this puzzle.

How to create a DWH inventory? How to start? What to look for? What are the red flags?

Time is already ticking.

Let’s have a good checklist for Staging layer at the beginning.

Read More

7 tips to automate your daily DWH/BI developer life using PowerShell and Excel

Connect to Excel using PowerShell

PowerShell is a powerfull tool that will make your life easier. You can use it to automate your daily work or make boring taks interesting. It can also save you time to do whatherever you like.

If you are working on a Windows machine you already have it installed. This is an additional benefit.

As a bonus please find a git scripts at the end of the article. There are two working programs that are doing all the juicy stuff.

In this blog post you will see how can you:
– Connect to Excel using PowerShell
– Get a sheet name
– Find a named table
– Display value from the cell
– Loop through table
– Execute Excel Macro from PowerShell
– And finally save an Excel file using PowerShell

Read More

Co to jest CTE?

Problem: Jak napisać zapytanie SQL w przejrzysty sposób. Będzie ono czytelne dla innych. Dodatkowo, gdy wrócisz do niego po kilku miesiącach też będzie dla Ciebie zrozumiałe.
W przypadku zmiany wymagań da się łatwo dostosować do nowych potrzeb. Będzie łatwe w utrzymaniu i rozbudowie.

Rozwiązanie: użyj Common Table Expressions (CTE), żeby napisać czytelny kod.

Read More

Jak usunąć dane z tabeli bez DELETE?

Problem

Usuń dane z tabeli bez używania polecenia DELETE. Użytkownik nie chce widzieć danych starszych niż 30 dni.

Tło biznesowe

Do tabeli faktów masz już załadowane 2 lata danych. Biznes dochodzi do wniosku, że z nie sięga tak daleko w historię. Nie są im te dane potrzebne. Albo na potrzeby zgodności z audytem (audit complience) powinny zostać usunięte.

Tło techniczne

Użycie polecenia DELETE nie wchodzi w grę, ponieważ:
– Nie jest efektywne
– Niektóre silniki bigdata nie wspierają operacji DELETE. Do data laka możesz dołączać dane. Usuwanie trzeba zaimplementować w inny sposób.

To jak zaimplementować usuwanie bez użycia DELETE?

Read More

Ale po są warstwy w hurtowniach danych?!

warstwy w hurtowniach danych

Hurtownia danych zawiera warstwy. W zależności od modelu jaki wybierzesz możesz mieć na przykład dwie warstwy: Staging i Data Mart. Albo więcej: Staging, Data Valult, operational data store (ODS), data mart, warstwa raportowa.

Koszt takich warstw, to podatność na błędy programistyczne, zwiększony czas ładowania danych i więcej danych do obsługi. To tak jakbyś jeden wiersz ze źródła przechowywał w pięciu kopiach.

Ale po co są te wszystkie warstwy w hurtowniach danych? Dlaczego dane nie są pobierane bezpośrednio ze źródła (czy to pliku lub z innej bazy danych) do raportu.

Po co tak komplikować?

Read More

Jak automatycznie odświeżać widoki w Netezza?

Problem
Masz istniejący schemat bazy danych, biznes prosi, żeby dodać jeszcze jedną kolumnę w tabeli.

Pomyślisz bułka z masłem.

Jest tylko jedna kwestia, o której warto pamiętać, gdy pracujesz z Netezza.

Gdy zmienisz strukturę tabeli wtedy Netezza unieważnia (?) (invalidates) wszystkie widoki, które mają choćby złączenia do tej tabeli. Oznacza to, że nie możesz czytać z tego widoku.

Czyli wszystkie zasilania, które czerpały z tego widoku albo raporty, które się do niego odwoływały przestają działać.

Co można zrobić, żeby przeciwdziałać tej katastrofie? Jak odświeżać widoki w Netezza? Najlepiej automatycznie.

Read More

Hurtownie danych wszystko co chciałbyś wiedzieć (na początku)

Jeszcze w czasach liceum lubiłem wrócić po szkole i wcielić się w managera klubu piłkarskiego. To był niesamowity fun zarządzania, wygrywania meczy, kupowania zawodników. Budowania potęgi klubu. 

Albo zagrać w ulubioną strategię i odkrywać nowe kontynenty, budować i rozwijać miasta. Podbijać inne cywilizacje albo z nimi współpracować. Doprowadzić moją cywilizację od epoki kamienia łupanego do XXI wieku.

Wyobraź sobie, że Ty zostajesz takim managerem. Niestety tylko dla potrzeb tego artykułu. 

Skupmy się na firmie technologicznej. Pewnie masz ulubioną, której produkty posiadasz albo sam taką tworzysz.

Taka spółka to wiele produktów, procesów i ludzi. Dużo firm, z którymi współpracujesz. I jeszcze więcej systemów informatycznych, które przechowują dane.

Na przykład jeden system ma dane o fakturach, drugi zamówieniach, trzeci o pracownikach, czwarty monitoruje co się dzieje na świecie i co robi konkurencja, piąty o procesie produkcji, szósty przechowuje stany magazynowe, siódmy dane o klientach.

Jeden system nie daje wystarczających informacji niezbędnych do podjęcia decyzji.

Co w takim razie można zrobić?

Read More