Zacznijmy od banału, ale mega ważnego: dane same w sobie są często "surowe". Nierozkminiony strumień cyfr, dat czy stringów jest ciężki do ogarnięcia. Wyobraź sobie raport, gdzie daty są w różnych formatach: coś jest zapisane jako 01/02/2023, a coś jako 2023-02-01. Nawet najbardziej ogarnięty analityk może się w tym pogubić. I tu właśnie wchodzi magia formatowania danych.
Formatowanie danych pozwala na:
- Przerabianie danych na czytelny format, co mega ułatwia pracę z nimi.
- Bycie lifehackerem w analizie danych, szybkie wyciąganie tego, co trzeba.
- Przygotowanie danych do eksportu albo integracji z innymi systemami.
- Robienie raportów i wizualizacji czytelnymi i dokładnymi.
Wyobraź sobie, że pracujesz na uniwerku i musisz zrobić raport, żeby wypisać wszystkich studentów z ich pełnym imieniem, datą urodzenia i wydziałem. Zamiast ręcznie sklejać dane, używasz zapytania z formatowaniem, które łączy imię i nazwisko w jednej kolumnie, a datę urodzenia pokazuje w ogarniętym formacie, np. 12 marca 2001.
Podstawowe zadania formatowania danych
Formatowanie to trochę jak krojenie sałatki owocowej. Nie chodzi tylko o wrzucenie owoców do miski, ale o to, żeby je ładnie pokroić i ułożyć na talerzu. W SQL ta robota dzieli się na kilka typów zadań:
Formatowanie stringów
To może być łączenie stringów, zmiana wielkości liter (wszystko na wielkie albo małe), dodawanie albo usuwanie spacji i znaków.
Formatowanie liczb
Czasem warto zamienić liczby na stringi albo zaokrąglić je do konkretnej liczby miejsc po przecinku.
Praca z datami i czasem
Tu można zautomatyzować rzeczy typu pobranie aktualnej daty, formatowanie danych czasowych albo wyciąganie konkretnych części daty (np. tylko rok albo tylko miesiąc).
Wyciąganie unikalnych wartości
Jeśli w raporcie mają być tylko unikalne rekordy (np. unikalne miasta albo wydziały), to też podpada pod formatowanie danych.
Narzędzia do formatowania w PostgreSQL
Do pracy z danymi PostgreSQL daje spory zestaw wbudowanych funkcji. Oto krótka lista tego, o czym pogadamy szerzej na kolejnych wykładach:
Formatowanie stringów
CONCAT(): łączenie stringów.UPPER(),LOWER(): zmiana wielkości liter w tekście.
Formatowanie dat i czasu
NOW(): aktualna data i czas.CURRENT_DATE: aktualna data (bez czasu).DATE_PART(): wyciąganie części daty, np. roku albo miesiąca.
Konwersja typów
CAST(): zmiana typu danych.- Składnia:
<wartość>::<typ>.
Sortowanie danych
ORDER BY: sortowanie danych po jednej albo kilku kolumnach.DISTINCT: wyciąganie unikalnych wartości.
Przykład formatowania danych: jak to wygląda w praktyce?
Żeby cię zaciekawić, rozkminimy kilka przykładów. Zaczniemy od prostego.
Przykład 1: Formatowanie stringa
SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM students;
To zapytanie łączy first_name i last_name w jedną kolumnę full_name. Na przykład, jeśli student ma na imię "Otto", a nazwisko "Art", wynik będzie: "Otto Art".
Przykład 2: Formatowanie daty
SELECT DATE_PART('year', date_of_birth) AS birth_year
FROM students;
Tu wyciągamy tylko rok urodzenia z kolumny date_of_birth. Jeśli data urodzenia w bazie to 2001-03-15, wynik będzie 2001.
Przykład 3: Konwersja typów
SELECT birth_year::text || ' rok' AS formatted_year
FROM (
SELECT DATE_PART('year', date_of_birth) AS birth_year
FROM students
) subquery;
W tym zapytaniu najpierw wyciągamy rok urodzenia, a potem zamieniamy go na stringa, dodając tekst " rok". Na przykład wynik będzie: 2001 rok.
Gdzie to się przydaje?
Raporty dla menedżerów
Nie każdy chce widzieć "surowe" dane. Na przykład w raporcie o obrotach firmy lepiej podawać kwoty z podziałem na tysiące (1,000,000 zamiast 1000000), a daty — w formacie 21 FEB 2025.
Raporty dla klientów
Na przykład mail do klienta z tekstem: "Szanowny [Imię Nazwisko], twoje zamówienie N123 zostało pomyślnie dostarczone 12 października 2023 roku".
Integracja z innymi systemami
Niektóre formularze wymagają konkretnego formatu danych: daty mogą być w formacie ISO, stringi — z odpowiednią wielkością liter, liczby — zaokrąglone.
Analiza i wizualizacja
Wyobraź sobie, że robisz wykresy albo diagramy. Bez formatowania mogą wyglądać totalnie nieczytelnie.
GO TO FULL VERSION