Blog JSystems - uwalniamy wiedzę!

Szukaj
Dashboard AI/BI sieci Nordvella w Databricks: sprzedaż netto, marża i trend miesięczny w regionach
Dashboard sprzedaży fikcyjnej sieci sklepów Nordvella, zbudowany w Databricks Free Edition na danych, które przeprowadzimy w tym artykule od pliku CSV do raportu.

W skrócieDatabricks to platforma w chmurze do przetwarzania danych, analityki i AI, stworzona przez twórców Apache Spark. Łączy jezioro danych z hurtownią w jedno środowisko, nazywane lakehouse: dane leżą w Twojej chmurze w otwartym formacie, a inżynierowie, analitycy i data scientiści pracują na nich w notebookach, SQL i narzędziach AI.

W tym przewodniku wyjaśniamy, czym jest Databricks, skąd się wziął i jak działa, a potem przechodzimy przez platformę w praktyce, na darmowym koncie Databricks Free Edition. Na danych fikcyjnej sieci sklepów z elektroniką Nordvella (tej samej, na której pracuje nasz bezpłatny kurs Power BI) wgrywamy pliki, piszemy kod w PySpark i SQL i korzystamy z historii tabel Delta Lake. Budujemy też potok z kontrolą jakości danych, dashboard i agenta Genie, któremu zadajemy pytania o sprzedaż po polsku. Każdy plik i każdy notebook możesz pobrać i powtórzyć u siebie.

Pliki do tego artykułu

Dane fikcyjnej sieci Nordvella (nagłówki kolumn po angielsku, wartości po polsku) i notebooki, które uruchamiamy w kolejnych sekcjach. Pliki CSV wgrywasz do wolumenu w Unity Catalog, notebooki importujesz do workspace'u.

Czym jest Databricks

Databricks to platforma w chmurze, na której firma przechowuje dane, przetwarza je i buduje na nich raporty, modele uczenia maszynowego i aplikacje AI. Działa na Amazon Web Services, Microsoft Azure i Google Cloud. Nie instalujesz jej na swoim serwerze: logujesz się przez przeglądarkę do workspace'u, czyli przestrzeni roboczej zespołu, i tam masz notebooki, edytor SQL, katalog danych, harmonogram zadań i narzędzia AI.

Najprościej opisać Databricks przez problem, który rozwiązuje. W typowej firmie dane sprzedażowe leżą w kilku systemach. Analityk kopiuje je do hurtowni, żeby zbudować raport. Data scientist kopiuje je drugi raz do jeziora danych, bo hurtownia nie przechowuje logów i plików, a modele potrzebują wszystkiego. Za chwilę są trzy kopie, każda trochę inna, każda z innymi uprawnieniami, i nikt nie wie, która liczba jest prawdziwa. Databricks proponuje jedną kopię danych w chmurze, w otwartym formacie, a na niej wszystkie zadania: od zapytania SQL po trenowanie modelu.

Animacja warstw platformy Databricks: pamięć w chmurze, Delta Lake, Unity Catalog, silniki Spark i SQL oraz narzędzia
Platforma Databricks warstwa po warstwie: na dole pliki w pamięci obiektowej Twojej chmury, nad nimi format tabel Delta Lake, katalog Unity Catalog, silniki obliczeniowe i narzędzia, z których korzysta cały zespół.

Platforma składa się z kilku warstw, które w praktyce widzisz jako jedno narzędzie:

  • Przechowywanie. Dane leżą jako pliki w pamięci obiektowej chmury (Amazon S3, Azure Data Lake Storage albo Google Cloud Storage). To tani magazyn, w którym zmieści się dowolna ilość danych.
  • Format tabel. Delta Lake zamienia katalog plików Parquet w tabelę z transakcjami, historią zmian i kontrolą schematu. Parquet to kolumnowy format pliku, w którym dane jednej kolumny leżą obok siebie, więc zapytania czytają tylko potrzebne kolumny.
  • Katalog i uprawnienia. Unity Catalog wie, jakie tabele istnieją, kto ma do nich dostęp i skąd się wzięły.
  • Silniki obliczeniowe. Apache Spark rozkłada przetwarzanie na wiele maszyn naraz, a SQL warehouse odpowiada na zapytania analityków i raporty.
  • Narzędzia. Notebooki w Pythonie i SQL, edytor SQL, dashboardy, Genie do pytań w języku naturalnym, potoki i zadania Lakeflow, MLflow do eksperymentów z modelami.

Databricks powstał wokół Apache Spark i nadal go rozwija, ale to nie jest „Spark w chmurze”. Spark jest jednym z silników, a wokół niego jest katalog danych, format tabel, harmonogram, narzędzia dla analityków i AI. Jeśli chcesz najpierw zrozumieć sam silnik, przeczytaj nasz artykuł Czym jest Apache Spark - kompletny przewodnik dla początkujących.

Na co dzień korzysta z niego kilka ról naraz. Inżynier danych ładuje i czyści dane, analityk pisze zapytania i buduje raporty, data scientist trenuje modele, a administrator pilnuje dostępu i kosztów. Wszyscy pracują na tych samych tabelach, więc liczba w raporcie i liczba, na której uczy się model, pochodzą z jednego źródła.

Infografika ról w Databricks: inżynier danych, analityk, data scientist, inżynier AI i administrator z ich narzędziami
Pięć ról, które spotkasz w zespole pracującym w Databricks, i narzędzia, po które sięgają najczęściej.

Skąd się wziął Databricks

Historia Databricks zaczyna się od Apache Spark. Spark powstał w 2009 roku w laboratorium AMPLab na Uniwersytecie Kalifornijskim w Berkeley jako szybsza alternatywa dla Hadoop MapReduce: zamiast zapisywać wyniki pośrednie na dysk, trzyma je w pamięci operacyjnej klastra. W 2013 roku siedmiu badaczy z AMPLab, wśród nich Ali Ghodsi, Matei Zaharia i Ion Stoica, założyło firmę Databricks, a Spark trafił pod opiekę Apache Software Foundation. Szerzej o drodze od Hadoopa do dzisiejszych platform piszemy w artykule Historia big data: od Hadoopa i MapReduce do Sparka, Databricks i Fabric. Podstawowe pojęcia, od reguły 5V po jezioro danych i lakehouse, zebraliśmy w artykule Co to jest big data? Pojęcia, krajobraz technologiczny i platformy.

Animowana oś czasu Databricks od powstania Apache Spark w 2009 roku do Genie Code i Genie Agents w 2026 roku
Oś czasu Databricks: od Sparka w laboratorium AMPLab, przez Delta Lake, lakehouse i Unity Catalog, po Free Edition, Lakebase i asystentów Genie.

Przez pierwsze lata Databricks był przede wszystkim wygodnym środowiskiem do uruchamiania Sparka w chmurze. Przełom przyniosły trzy projekty. W 2019 roku firma udostępniła jako open source Delta Lake, czyli format tabel z dziennikiem transakcji, który zamienia zwykłe pliki w jeziorze danych w tabele z gwarancjami jak w bazie. W 2020 roku opisała koncepcję lakehouse, a rok później jej twórcy przedstawili ją w pracy naukowej na konferencji CIDR. W 2022 roku dla wszystkich klientów wystartował Unity Catalog, jeden katalog i system uprawnień dla wszystkich danych w firmie, a w 2024 roku Databricks udostępnił go jako open source.

Kolejne lata to AI i bazy danych. W 2023 roku Databricks przejął MosaicML, firmę od trenowania modeli językowych, w 2024 roku Tabular, założony przez twórców konkurencyjnego formatu Apache Iceberg, a w 2025 roku Neon, z którego technologii powstała baza Lakebase. W czerwcu 2025 roku wystartowała darmowa Databricks Free Edition, która zastąpiła wcześniejszą Community Edition. W 2026 roku firma przemianowała część narzędzi: asystent w notebookach to teraz Genie Code, a przestrzenie do pytań w języku naturalnym to Genie Agents.

Skalę firmy dobrze oddają jej własne komunikaty: w sierpniu 2026 roku Databricks podał roczny przychód w ujęciu bieżącym (ang. revenue run-rate) powyżej 7 mld USD i wycenę 190 mld USD, a na stronie firmy znajdziesz informację o ponad 20 000 organizacji korzystających z platformy.

Lakehouse: hurtownia i jezioro danych w jednym

Słowo, które najczęściej pada przy Databricks, to lakehouse. To połączenie dwóch angielskich słów: data lake (jezioro danych) i data warehouse (hurtownia danych). Żeby zrozumieć, po co je łączyć, trzeba zobaczyć, czym się różnią.

Hurtownia danych przechowuje uporządkowane tabele i świetnie odpowiada na pytania w SQL: ile sprzedaliśmy w regionie, jak zmieniła się marża. Pilnuje schematu, transakcji i uprawnień. Dane trzyma jednak we własnym formacie, a logi, pliki JSON czy obrazy do niej nie pasują. Jezioro danych to z kolei katalog plików w taniej pamięci obiektowej chmury: zmieści wszystko, a pliki w otwartych formatach (CSV, JSON, Parquet) przeczyta dowolne narzędzie. Brakuje mu za to transakcji i kontroli schematu, więc bez dyscypliny zamienia się w bagno danych (ang. data swamp), w którym nikt nie wie, który plik jest aktualny.

Tabela porównująca hurtownię danych, jezioro danych i lakehouse: rodzaje danych, format, transakcje ACID i zastosowania
Hurtownia, jezioro danych i lakehouse porównane punkt po punkcie. Lakehouse trzyma dane tanio w otwartym formacie, a tabelom daje transakcje i uprawnienia jak w hurtowni.

Lakehouse bierze z jeziora tanie przechowywanie i otwarte pliki, a z hurtowni transakcje, schemat i uprawnienia. Kluczowy element to format tabel z dziennikiem transakcji: obok plików Parquet leży dziennik, który zapisuje każdą zmianę tabeli jako osobną wersję. Dzięki niemu dwa zapisy naraz nie zostawią bałaganu, a zapytanie zawsze czyta spójny stan tabeli. W Databricks tym formatem jest Delta Lake, a platforma czyta i zapisuje też tabele Apache Iceberg.

Transakcje ACID, o których mowa w tabeli, to cztery gwarancje znane z baz danych: zmiana wykonuje się w całości albo wcale (atomowość), tabela zawsze spełnia swoje reguły (spójność), równoległe zmiany sobie nie przeszkadzają (izolacja), a zatwierdzona zmiana nie znika (trwałość).

W praktyce lakehouse porządkuje się w warstwy. Najpopularniejszy wzorzec to architektura medalionowa: surowe dane w warstwie bronze, oczyszczone w silver i biznesowe zestawienia w gold. Zbudujemy ją na danych Nordvelli w sekcji o potokach Lakeflow.

Animacja architektury medalionowej w Databricks: dane Nordvelli przechodzą przez warstwy bronze, silver i gold do raportów
Architektura medalionowa na przykładzie sprzedaży Nordvelli: każda warstwa ma jedno zadanie, a obiekty sales_bronze, sales_silver i sales_gold_monthly powstaną w potoku pokazanym dalej w artykule.

Jak działa Databricks: architektura i rodzaje obliczeń

Databricks dzieli się na dwie części, które warto rozróżniać, bo od nich zależą koszty, bezpieczeństwo i to, co widzisz w interfejsie.

Płaszczyzna sterowania (ang. control plane) działa po stronie Databricks. To aplikacja, którą otwierasz w przeglądarce, harmonogram zadań, metadane katalogu i usługi zarządzające. Płaszczyzna obliczeń (ang. compute plane) to maszyny, które faktycznie przetwarzają dane. Występuje w dwóch odmianach:

  • Obliczenia klasyczne działają w koncie chmury Twojej firmy. Ty wybierasz typ i liczbę maszyn wirtualnych, a rachunek dostajesz w dwóch częściach: od Databricks za jednostki DBU i od dostawcy chmury za maszyny.
  • Obliczenia serverless działają w koncie Databricks, w tym samym regionie chmury. Nie konfigurujesz klastra, maszyny startują w kilka sekund, a za obliczenia płacisz tylko Databricks, w jednostkach DBU.
Schemat architektury Databricks: płaszczyzna sterowania, obliczenia klasyczne i serverless oraz dane w pamięci chmury
Płaszczyzna sterowania wydaje polecenia, obliczenia klasyczne albo serverless przetwarzają dane, a pliki tabel leżą w pamięci obiektowej chmury.

Dane w obu przypadkach leżą jako pliki w pamięci obiektowej chmury. To ważna różnica wobec klasycznej hurtowni: możesz wyłączyć wszystkie obliczenia, a tabele zostają na miejscu i nic nie kosztują poza samym przechowywaniem.

Obliczenia wybierasz zależnie od zadania. Notebook z Pythonem uruchomisz na serverless albo na klastrze ogólnego przeznaczenia (ang. all-purpose cluster), który dzieli kilka osób. Zaplanowane zadanie dostaje klaster zadania (ang. job compute), który powstaje na czas przebiegu i znika po nim. Zapytania SQL, dashboardy i Genie korzystają z SQL warehouse, czyli silnika do zapytań SQL, który w wersji serverless sam dobiera moc do obciążenia.

Tabela rodzajów obliczeń Databricks: serverless, klaster ogólnego przeznaczenia, klaster zadania i SQL warehouse
Cztery rodzaje obliczeń w Databricks, do czego służą, kto zarządza maszynami i co z tego dostajesz w darmowej Free Edition.
Zakładka SQL warehouses na stronie Compute w Databricks Free Edition z hurtownią Serverless Starter Warehouse 2X-Small
Strona Compute w Free Edition, zakładka SQL warehouses: gotowa hurtownia Serverless Starter Warehouse w rozmiarze 2X-Small. Klastrów nie zakładasz, bo notebooki i zadania działają na serverless.

Zapytania w SQL warehouse przyspiesza Photon, silnik wykonawczy Databricks napisany w C++ i zgodny z interfejsami Sparka. Jest włączony domyślnie we wszystkich SQL warehouse'ach, a z kodem nic nie musisz robić. Serverless SQL warehouse startuje w kilka sekund, wersje pro i classic potrzebują na start kilku minut.

Pierwsze kroki: darmowe konto Databricks Free Edition

Co chcemy osiągnąć. Założymy bezpłatne konto Databricks Free Edition, na którym przećwiczysz wszystkie przykłady z tego artykułu, bez karty płatniczej i bez konta w AWS, Azure czy Google Cloud. Na końcu tej sekcji będziesz w swoim workspace'ie i będziesz wiedzieć, gdzie w nim co jest.

Free Edition zastąpiła starszą Community Edition. Ma prawie wszystkie narzędzia z płatnych planów, ale działa tylko na obliczeniach serverless i ma limity, które wystarczą do nauki i małych projektów. Regulamin wyklucza jej użycie komercyjne, więc do pracy na danych firmy potrzebujesz płatnego konta.

Infografika Databricks Free Edition: co jest dostępne za darmo i jakie są ograniczenia konta
Co dostajesz w Databricks Free Edition, a czego w niej nie ma. Pełna lista limitów jest w dokumentacji Databricks.

Rejestracja krok po kroku

Krok 1. Otwórz stronę databricks.com/learn/free-edition i kliknij Sign up for Free Edition. Zobaczysz formularz rejestracji. Możesz zalogować się kontem Google albo Microsoft, a my pokazujemy wariant z samym adresem e-mail: wpisz go w polu Email i kliknij Continue with email.

Formularz rejestracji Databricks Free Edition z przyciskami Continue with Google, Continue with Microsoft i polem Email
Formularz rejestracji Databricks Free Edition. Zaznaczyliśmy pole adresu e-mail i przycisk Continue with email, którym przechodzisz dalej bez konta Google czy Microsoft.

Krok 2. Databricks wyśle na podany adres wiadomość z tematem Databricks - Your verification code is ... i jednorazowym kodem w postaci trzech znaków, myślnika i kolejnych trzech znaków. Wpisz kod w okienkach na stronie Enter verification code. Okienek jest sześć, a myślnik między nimi strona wstawia sama. Kod szybko wygasa: gdy licznik na przycisku Resend code in dojdzie do zera, przyciskiem Resend code poprosisz o nowy.

Ekran Enter verification code w Databricks Free Edition z sześcioma polami na kod z wiadomości e-mail
Ekran wpisywania kodu z wiadomości e-mail: sześć pól na kod i licznik, po którym można poprosić o nowy kod. Adres, na który przyszedł kod, rozmyliśmy.

Krok 3. Na ekranie Set up your account nadaj kontu nazwę w polu Name your account (domyślnie to początek adresu e-mail z dopiskiem Free Edition), w polu Where are you located? wybierz kraj i kliknij Continue. Pole zgody na wiadomości marketingowe możesz zostawić puste.

Ekran Set up your account w Databricks Free Edition z nazwą konta, wyborem kraju Poland i przyciskiem Continue
Konfiguracja konta: nazwa konta, kraj i zgoda na wiadomości marketingowe, która jest opcjonalna. Nazwę konta i adres e-mail rozmyliśmy.

Krok 4. Po kliknięciu Continue Databricks może poprosić o rozwiązanie krótkiej zagadki, która potwierdza, że rejestruje się człowiek. Rozwiąż ją, a po chwili zobaczysz swój workspace.

Co widzisz po zalogowaniu

Po założeniu konta trafiasz na stronę startową workspace'u. Na środku są kursy (Courses) i interaktywne pokazy (Interactive demos), a po lewej pasek boczny, z którego korzystasz przez cały czas pracy. Warto od razu wiedzieć, gdzie co leży:

  • Workspace to drzewo folderów z notebookami, zapytaniami i plikami, z prywatnym folderem każdego użytkownika.
  • Catalog otwiera Catalog Explorer, czyli przeglądarkę katalogów, schematów, tabel i wolumenów w Unity Catalog.
  • Jobs & Pipelines to zadania uruchamiane z harmonogramu i potoki danych Lakeflow.
  • Compute pokazuje obliczenia: serverless dla notebooków i zadań oraz SQL warehouse.
  • Grupa SQL zbiera narzędzia analityka, między innymi SQL Editor, Queries, Dashboards, Genie Agents i Alerts.
  • Grupa AI/ML to między innymi Playground do testowania modeli językowych, Agents i Experiments, czyli eksperymenty MLflow.

Przycisk New na górze paska tworzy nowe elementy, między innymi notebook (Notebook), zapytanie (Query), dashboard, agenta Genie (Genie Agent), zadanie (Job), potok (ETL pipeline) i eksperyment MLflow (Experiment).

Strona startowa Databricks Free Edition z paskiem bocznym: Workspace, Catalog, Jobs & Pipelines, Compute, SQL i AI/ML
Pierwszy ekran po zalogowaniu do Databricks Free Edition: na środku kursy i interaktywne pokazy, po lewej pasek boczny z grupami SQL, Data Engineering i AI/ML.

Dane w Unity Catalog: katalog, schemat i wolumen

Co chcemy osiągnąć. Dział analiz sieci Nordvella dostał trzy pliki CSV: sprzedaż z kas i sklepu internetowego za lata 2022-2026, listę 15 sklepów i katalog 30 produktów, a do tego czwarty plik ze zmianami w sklepach, potrzebny w sekcji o Delta Lake. Chcemy je mieć w jednym miejscu w Databricks, z porządnymi nazwami i uprawnieniami, żeby w kolejnych sekcjach zrobić z nich tabele, raport i potok. Na końcu tej sekcji pliki będą leżeć w wolumenie workspace.nordvella_lakehouse.raw_files.

Unity Catalog porządkuje wszystko w trzech poziomach: katalog, schemat i obiekt. Nad katalogami jest jeszcze metastore, czyli kontener na wszystkie katalogi w danym regionie chmury, ale w nazwach obiektów go nie podajesz. Pełna nazwa tabeli ma więc trzy części, na przykład workspace.nordvella_lakehouse.sales. Pliki, które nie są tabelami (CSV, obrazy, PDF), trzymasz w wolumenach (ang. volumes), a nie luzem w pamięci chmury, dzięki czemu obowiązują je te same uprawnienia co tabele.

Infografika hierarchii Unity Catalog: metastore, katalog, schemat oraz tabela, widok, wolumen, funkcja i model
Hierarchia obiektów w Unity Catalog. Każdy obiekt ma trzyczęściową nazwę katalog.schemat.obiekt, a uprawnienia nadajesz na dowolnym poziomie.

Krok 1. Kliknij Catalog w pasku bocznym. W Free Edition zobaczysz w sekcji My organization katalogi workspace (na Twoje dane) i system (tabele systemowe z informacjami o użyciu platformy), a w Shares received katalog samples z przykładowymi danymi od Databricks.

Catalog Explorer w Databricks z katalogami workspace, system i samples oraz podpowiedziami tabel z przykładowych danych
Catalog Explorer zaraz po założeniu konta: katalogi workspace i system, katalog samples udostępniony przez Databricks i podpowiedzi przykładowych tabel.

Krok 2. Schemat i wolumen założymy poleceniami SQL. Kliknij SQL Editor w pasku bocznym, a w edytorze przycisk + (Create new) i pozycję Query. W nowej karcie zapytania wpisz:

CREATE SCHEMA IF NOT EXISTS workspace.nordvella_lakehouse;
CREATE VOLUME IF NOT EXISTS workspace.nordvella_lakehouse.raw_files;

Kliknij Run all. Przy pierwszym uruchomieniu Databricks zapyta, na jakich obliczeniach wykonać zapytanie. Zostaw SQL Warehouse i Serverless Starter Warehouse i kliknij Start, attach and run. Hurtownia serverless startuje w kilka sekund.

Okno Attach to an existing compute resource w edytorze SQL Databricks z wyborem Serverless Starter Warehouse 2X-Small
Wybór obliczeń przy pierwszym zapytaniu: SQL warehouse Serverless Starter Warehouse, rozmiar 2X-Small, typ Serverless.
Edytor SQL Databricks z poleceniami CREATE SCHEMA i CREATE VOLUME oraz wynikiem OK
Oba polecenia wykonały się w 7 sekund, łącznie ze startem hurtowni. Wynik OK oznacza, że schemat nordvella_lakehouse i wolumen raw_files już istnieją.

Krok 3. Wróć do Catalog, rozwiń workspace, potem nordvella_lakehouse i Volumes, i kliknij raw_files. Na stronie wolumenu kliknij Upload to this volume, a w oknie Upload files to a volume in Unity Catalog kliknij browse i wskaż cztery pobrane pliki: nordvella_sales.csv, nordvella_stores.csv, nordvella_products.csv i nordvella_stores_changes.csv. Piąty plik, z dostawą z czerwca 2026, dołożymy później, w sekcji o potokach. Komunikat No conflicts detected mówi, że w wolumenie nie ma jeszcze plików o tych nazwach. Kliknij Upload.

Okno Upload files to a volume in Unity Catalog z plikami CSV Nordvella i ścieżką wolumenu raw_files
Okno wgrywania plików do wolumenu: wybrane pliki CSV (czwarty widać po przewinięciu listy) i docelowa ścieżka /Volumes/workspace/nordvella_lakehouse/raw_files.

Po kilku sekundach pliki pojawią się w zakładce Files. Każdy ma teraz ścieżkę zaczynającą się od /Volumes/, której użyjemy w notebooku.

Zakładka Files wolumenu raw_files w Unity Catalog z czterema plikami CSV Nordvella i ich rozmiarami
Wolumen raw_files z czterema plikami. Największy, nordvella_sales.csv, zawiera 108 675 wierszy sprzedaży.

Notebook: PySpark i SQL w jednym miejscu

Co chcemy osiągnąć. Kierownik działu analiz pyta, jak sprzedaż rozkłada się na regiony i kategorie produktów. Zamiast kopiować CSV do arkusza wczytamy pliki z wolumenu do Sparka, zapiszemy je jako tabele Delta i policzymy zestawienia, raz w Pythonie, raz w SQL. Efektem będą trzy tabele w Unity Catalog, wykres sprzedaży w regionach i ranking kategorii.

Notebook to dokument złożony z komórek z kodem i opisem, jak w Jupyterze. W Databricks każda komórka może mieć własny język: domyślny jest Python, a komórka zaczynająca się od %sql wykonuje SQL. Wszystkie komórki pracują na tych samych danych w Unity Catalog.

Krok 1. Pobierz plik 01_nordvella_pierwsze_kroki.py. W Workspace otwórz swój folder użytkownika, kliknij Create i Folder, nazwij folder databricks_guide i otwórz go. Obok nazwy folderu jest przycisk z trzema kropkami (Folder actions): kliknij go i wybierz Import. W oknie Import zostaw File, kliknij browse, wskaż plik i kliknij Import. Tak samo zaimportujesz pozostałe notebooki z artykułu.

Okno Import w workspace Databricks z wybranym plikiem notebooka 01_nordvella_pierwsze_kroki.py
Import notebooka z pliku do folderu databricks_guide. Ścieżkę folderu z adresem e-mail użytkownika rozmyliśmy.

Krok 2. Otwórz zaimportowany notebook. W prawym górnym rogu jest wybór obliczeń. W Free Edition to zawsze Serverless, więc nie musisz niczego konfigurować. Kliknij Run all, a notebook wykona komórki po kolei. Numer komórki widać na jej górnym pasku. Komórka 1 to opis, a komórka 2 zakłada schemat i wolumen poleceniami CREATE ... IF NOT EXISTS, więc nic nie zepsuje, jeśli zrobiłeś to już w edytorze SQL.

Komórka 3 wczytuje plik sprzedaży do obiektu DataFrame, czyli rozproszonej tabeli Sparka, liczy wiersze i wypisuje schemat:

path = "/Volumes/workspace/nordvella_lakehouse/raw_files/"

sales = (spark.read
         .option("header", True)
         .option("inferSchema", True)
         .csv(path + "nordvella_sales.csv"))

print(f"Liczba wierszy: {sales.count()}")
sales.printSchema()

Opcja header mówi, że pierwszy wiersz to nagłówki, a inferSchema każe Sparkowi rozpoznać typy kolumn. Wynik: 108 675 wierszy, data sprzedaży jako date, identyfikatory i ilość jako integer, ceny i kwoty netto jako double. Kolumna cost_amount dostała typ integer, bo w pliku wszystkie koszty są liczbami całkowitymi. Przy danych produkcyjnych lepiej podać schemat jawnie, żeby typ kolumny nie zależał od tego, co akurat jest w pliku.

Komórka notebooka Databricks z kodem PySpark wczytującym nordvella_sales.csv, liczbą 108675 wierszy i schematem kolumn
Wczytanie pliku z wolumenu w PySpark: 108 675 wierszy i schemat z typami rozpoznanymi przez Sparka.

Komórka 4 korzysta z funkcji display(), która pokazuje dane jako interaktywną tabelę do sortowania, filtrowania i pobrania:

display(sales.limit(10))
Wynik funkcji display w notebooku Databricks: pierwsze 10 wierszy sprzedaży Nordvella w interaktywnej tabeli
Pierwsze 10 wierszy sprzedaży w tabeli wyników notebooka.

Krok 3. Komórka 5 zapisuje wszystkie trzy pliki jako tabele zarządzane w Unity Catalog. Tabela zarządzana (ang. managed table) to taka, której pliki trzyma i porządkuje Databricks, a domyślnym formatem jest Delta Lake:

# Zapis trzech plików jako tabele Delta w Unity Catalog
for name in ["sales", "stores", "products"]:
    df = (spark.read
          .option("header", True)
          .option("inferSchema", True)
          .csv(f"{path}nordvella_{name}.csv"))
    df.write.mode("overwrite").saveAsTable(f"workspace.nordvella_lakehouse.{name}")
    print(name, df.count())
Komórka notebooka zapisująca pliki CSV jako tabele Delta sales, stores i products z liczbą wierszy 108675, 15 i 30
Zapis trzech tabel Delta: sales ma 108 675 wierszy, stores 15, a products 30.

Krok 4. Teraz zestawienie w SQL. Komórka 6, zaczynająca się od %sql, liczy sprzedaż netto w tysiącach złotych, miesiąc po miesiącu, w każdym regionie, z pominięciem zwrotów:

-- Sprzedaż netto w tysiącach zł, miesięcznie, w podziale na regiony
SELECT CAST(date_trunc('MONTH', s.sale_date) AS DATE) AS month,
       st.region,
       ROUND(SUM(s.net_amount) / 1000, 1) AS net_sales_k_pln
FROM workspace.nordvella_lakehouse.sales AS s
JOIN workspace.nordvella_lakehouse.stores AS st USING (store_id)
WHERE s.is_returned = 0
GROUP BY ALL
ORDER BY month, st.region

Nad tabelą wyników kliknij + obok zakładki Table i wybierz Visualization. W edytorze wykresu ustaw typ Line, w polu X column kolumnę month, w Y columns kolumnę net_sales_k_pln z sumą, a w Group by kolumnę region, i kliknij Save.

Wykres liniowy w notebooku Databricks: sprzedaż netto Nordvella miesięcznie w sześciu regionach od 2022 do 2026 roku
Wykres zbudowany na wyniku zapytania SQL. Co roku sprzedaż rośnie w grudniu we wszystkich regionach, a najwyżej leży linia regionu Online.

Krok 5. Zestawienia da się liczyć także w Pythonie, przez API DataFrame. Komórka 7 łączy sprzedaż z produktami i liczy sprzedaż netto w milionach złotych oraz marżę procentową dla każdej kategorii:

from pyspark.sql import functions as F

sales = spark.table("workspace.nordvella_lakehouse.sales")
products = spark.table("workspace.nordvella_lakehouse.products").select("product_id", "category")

by_category = (sales.where("is_returned = 0")
               .join(products, "product_id")
               .groupBy("category")
               .agg(F.round(F.sum("net_amount") / 1e6, 2).alias("net_sales_m_pln"),
                    F.round(F.sum("net_margin") / F.sum("net_amount") * 100, 1).alias("margin_pct"))
               .orderBy(F.desc("net_sales_m_pln")))

display(by_category)
Wynik PySpark w notebooku Databricks: sprzedaż netto i marża w kategoriach AGD/RTV, Komputery, Telefony i Akcesoria
Ranking kategorii za cały okres: AGD/RTV 188,25 mln zł przy marży 21,6%, a Akcesoria tylko 36,44 mln zł, ale z marżą 40,6%.

Wynik dobrze pokazuje, po co łączyć dane: kategoria z najmniejszą sprzedażą ma najwyższą marżę, a komputery i telefony dają dużą sprzedaż przy marży 10,1% i 6,6%.

Genie Code: asystent AI, który pisze kod

Co chcemy osiągnąć. Zarząd prosi o listę pięciu produktów, które w 2025 roku przyniosły najwięcej sprzedaży netto. Zamiast pisać kod samodzielnie poprosimy o niego asystenta AI wbudowanego w notebook i sprawdzimy, co dostaniemy.

W 2026 roku asystent Databricks Assistant zmienił nazwę na Genie Code. Otwierasz go przyciskiem Genie Code (fioletowa ikona) w górnym pasku albo na prawym pasku notebooka. Rozumie polecenia po polsku i zna strukturę Twoich tabel z Unity Catalog. Wpisaliśmy polecenie:

Napisz kod PySpark, który pokaże 5 produktów o najwyższej sprzedaży netto w 2025 roku. Użyj tabel workspace.nordvella_lakehouse.sales i workspace.nordvella_lakehouse.products i pomiń zwroty (is_returned = 1).

Genie Code najpierw sprawdził dane, opisując te kroki po angielsku: ile wierszy sprzedaży jest w 2025 roku (29 545 razem ze zwrotami) i czy tabela products ma kolumnę z nazwą produktu. Potem dopisał na końcu notebooka komórkę 8, Top 5 produktów 2025 (netto), uruchomił ją i odpowiedział po polsku, z tabelą wyników i propozycjami kolejnych pytań. Na górze listy jest smartfon Zentaro Nova 5 Pro z 8,65 mln zł sprzedaży netto.

Panel Genie Code w notebooku Databricks: polecenie po polsku, kroki sprawdzania danych i początek odpowiedzi
Genie Code po prawej stronie notebooka: polecenie, kroki sprawdzania danych i początek odpowiedzi po polsku. Tabelę z wynikami widać na kolejnym zrzucie.

Komórka dopisana przez asystenta czeka na akceptację: na dole notebooka są przyciski Reject all cells i Accept all cells. Zanim ją przyjmiesz, przeczytaj kod. Tu kod filtruje rok warunkiem F.year("sale_date") == 2025, pomija zwroty i dokłada liczbę sprzedanych sztuk, o którą nie prosiliśmy. Asystent napisał o tym w odpowiedzi i podpowiedział, że wystarczy ją usunąć z .agg(...).

Komórka notebooka Databricks napisana przez Genie Code z kodem PySpark i wynikiem TOP 5 produktów Nordvella w 2025 roku
Komórka napisana przez Genie Code: filtr roku i zwrotów, złączenie z produktami, agregacja i wynik z pięcioma produktami.

Delta Lake: MERGE, historia zmian i podróż w czasie

Co chcemy osiągnąć. Dział sieci przysłał plik ze zmianami: w Lublinie jest nowy kierownik sklepu i o jedną osobę większy zespół, a we wrześniu 2026 roku rusza nowy sklep w Rzeszowie. Chcemy nanieść obie zmiany na tabelę stores jednym poleceniem, zobaczyć, co się zmieniło, i umieć wrócić do stanu sprzed zmiany. Wszystko to w drugim notebooku, 02_delta_lake_merge_time_travel.sql, który działa na pliku nordvella_stores_changes.csv wgranym wcześniej do wolumenu.

Tabela Delta to katalog plików Parquet z dziennikiem transakcji _delta_log. Każda zmiana tabeli (zapis, MERGE, usunięcie wierszy) to nowy plik JSON w dzienniku i nowa wersja tabeli. Zapytanie zawsze czyta spójną wersję, a starsze wersje zostają dostępne przez określony czas. To właśnie daje tabelom w jeziorze danych transakcje ACID.

Animacja dziennika transakcji Delta Lake: wersja 0 tabeli stores, wersja 1 po MERGE i odczyt VERSION AS OF 0
Jak działa dziennik transakcji Delta Lake na przykładzie tabeli stores: każda zmiana dopisuje wersję, a zapytanie z VERSION AS OF czyta stan z wybranej wersji.

Krok 1. Notebook zaczyna się od USE workspace.nordvella_lakehouse;, więc dalej wystarczą krótkie nazwy tabel. Polecenie MERGE INTO porównuje tabelę docelową ze źródłem po kluczu i w jednej transakcji aktualizuje pasujące wiersze, a brakujące dopisuje. Plik CSV czytamy funkcją read_files do tymczasowego widoku:

-- Zmiany z pliku: nowy kierownik sklepu w Lublinie i nowy sklep w Rzeszowie
CREATE OR REPLACE TEMP VIEW stores_changes AS
SELECT * FROM read_files(
  '/Volumes/workspace/nordvella_lakehouse/raw_files/nordvella_stores_changes.csv',
  format => 'csv', header => true);

MERGE INTO stores AS t
USING stores_changes AS s
ON t.store_id = s.store_id
WHEN MATCHED THEN UPDATE SET *
WHEN NOT MATCHED THEN INSERT *;

Wynik MERGE to jeden wiersz z licznikami: dwa wiersze zmienione, w tym jeden zaktualizowany (Lublin) i jeden wstawiony (Rzeszów), zero usuniętych.

Komórka notebooka Databricks z poleceniem MERGE INTO na tabeli stores i wynikiem: 1 wiersz zmieniony, 1 wstawiony
MERGE w notebooku SQL: num_affected_rows 2, num_updated_rows 1, num_deleted_rows 0, num_inserted_rows 1.

Krok 2. Sprawdźmy obie zmiany, a potem historię tabeli:

SELECT store_id, store_name, employees, manager
FROM stores
WHERE store_id IN (13, 16);
DESCRIBE HISTORY stores;

Sklep w Lublinie ma teraz 17 pracowników i kierownika Tomasza Mazura, a w tabeli jest nowy sklep Nordvella Rzeszów. Polecenie DESCRIBE HISTORY pokazuje dwie wersje: 0 to utworzenie tabeli z notebooka (operacja CREATE OR REPLACE TABLE AS SELECT), 1 to nasz MERGE. Każda wersja ma znacznik czasu, autora i szczegóły operacji.

Tabela stores po MERGE w Databricks: sklep w Lublinie z kierownikiem Tomasz Mazur i nowy sklep w Rzeszowie
Stan tabeli stores po MERGE i początek historii zmian z poleceniem DESCRIBE HISTORY.

Tę samą historię zobaczysz bez SQL, w Catalog Explorer: kliknij tabelę stores i zakładkę History.

Zakładka History tabeli stores w Catalog Explorer z wersją 1 MERGE i wersją 0 CREATE OR REPLACE TABLE AS SELECT
Historia tabeli w Catalog Explorer: wersja 1 to MERGE, wersja 0 to utworzenie tabeli. Adres e-mail autora zmian rozmyliśmy.

Krok 3. Podróż w czasie (ang. time travel) to zapytanie o tabelę w starszej wersji. Wystarczy dopisać VERSION AS OF z numerem wersji albo TIMESTAMP AS OF z datą i godziną:

-- Time travel: ta sama tabela w wersji sprzed MERGE
SELECT store_id, store_name, employees, manager
FROM stores VERSION AS OF 0
WHERE store_id IN (13, 16);
Zapytanie VERSION AS OF 0 w Databricks zwraca sklep w Lublinie ze starym kierownikiem Ewa Woźniak i bez sklepu w Rzeszowie
Tabela stores w wersji 0, sprzed MERGE: w Lublinie 16 pracowników i kierowniczka Ewa Woźniak, sklepu w Rzeszowie jeszcze nie ma.

Do starej wersji da się też wrócić na stałe poleceniem RESTORE TABLE stores TO VERSION AS OF 0, które zapisuje przywrócenie jako kolejną wersję. Historia nie jest jednak wieczna: dziennik transakcji domyślnie trzyma wpisy przez 30 dni, a pliki z danymi usuniętych wersji polecenie VACUUM kasuje po 7 dniach. Dokumentacja Databricks zaleca więc korzystać z podróży w czasie dla ostatnich 7 dni, chyba że wydłużysz oba ustawienia.

W szczegółach tabeli (zakładka Details, tu dla tabeli sales) widać, że tabele w Free Edition są zarządzane (MANAGED), leżą w pamięci Default Storage i mają włączone między innymi wektory usuwania (enableDeletionVectors). Dzięki nim UPDATE, DELETE i MERGE oznaczają zmienione wiersze w metadanych zamiast przepisywać całe pliki Parquet. Według szczegółów operacji w historii nasz MERGE na tabeli stores dodał jeden taki wektor i jeden nowy plik Parquet.

Zakładka Details tabeli sales w Databricks: typ MANAGED, Default Storage i właściwości Delta z enableDeletionVectors
Szczegóły tabeli Delta w Catalog Explorer: typ, miejsce przechowywania i właściwości formatu, w tym wektory usuwania i kompresja zstd.

Chcesz przećwiczyć pracę z tabelami Delta i PySpark na dużych danych pod okiem praktyka? Szkolenie Przetwarzanie danych Big Data z Apache Spark --> to czterodniowy warsztat na platformie Databricks: PySpark i Spark SQL, Unity Catalog, jezioro danych w formacie Delta w architekturze medalionowej i orkiestracja przepływów danych. To szkolenie ma terminy gwarantowane.

SQL, dashboardy AI/BI i Genie: Databricks dla analityka

Co chcemy osiągnąć. Analityk sieci ma przygotować dla zarządu zestawienie za 2025 rok: sprzedaż i marżę w regionach, trend miesięczny i podział na kanały. Zbudujemy widok raportowy w SQL, sprawdzimy liczby w edytorze, złożymy z nich dashboard i udostępnimy dane w Genie, żeby kierownicy mogli pytać o sprzedaż po polsku, bez SQL.

Edytor SQL i widok raportowy

Zamiast za każdym razem łączyć trzy tabele, zapisujemy złączenie jako widok sales_report: sprzedaż bez zwrotów, z regionem, miastem, nazwą sklepu i kategorią produktu. Poniżej drugie zapytanie korzysta już z widoku i liczy sprzedaż oraz marżę w regionach w 2025 roku:

-- Widok do raportów: sprzedaż bez zwrotów, z regionem, sklepem i kategorią produktu
CREATE OR REPLACE VIEW workspace.nordvella_lakehouse.sales_report AS
SELECT s.sale_id, s.sale_date, st.region, st.city, st.store_name,
       p.category, p.product_name, s.channel, s.payment_method,
       s.quantity, s.net_amount, s.net_margin
FROM workspace.nordvella_lakehouse.sales AS s
JOIN workspace.nordvella_lakehouse.stores AS st USING (store_id)
JOIN workspace.nordvella_lakehouse.products AS p USING (product_id)
WHERE s.is_returned = 0;

-- Sprzedaż netto i marża w regionach w 2025 roku
SELECT region,
       ROUND(SUM(net_amount) / 1e6, 2) AS net_sales_m_pln,
       ROUND(SUM(net_margin) / SUM(net_amount) * 100, 1) AS margin_pct
FROM workspace.nordvella_lakehouse.sales_report
WHERE year(sale_date) = 2025
GROUP BY region
ORDER BY net_sales_m_pln DESC;

W SQL Editor wklej oba polecenia i kliknij Run all. Pod spodem pojawi się wynik ostatniego zapytania (Results 2 of 2). Region Online sprzedał najwięcej, 37,12 mln zł, ale ma najniższą marżę, 13,8%. Pozostałe regiony mieszczą się między 16% a 18%.

Edytor SQL Databricks z widokiem sales_report i zapytaniem o sprzedaż i marżę w regionach Nordvella w 2025 roku
Zapytanie w edytorze SQL: widok raportowy i wynik dla sześciu regionów w 2025 roku. Online prowadzi sprzedażą, ale ma najniższą marżę.

Wykres dodasz tak samo jak w notebooku: + obok zakładki Table, potem Visualization. Dla tego wyniku Databricks zaproponował wykres punktowy (Scatter) ze sprzedażą na osi X i marżą na osi Y. Dobrze widać na nim, że Online odstaje od reszty.

Wykres punktowy w edytorze SQL Databricks: sprzedaż netto i marża procentowa sześciu regionów Nordvella w 2025 roku
Wykres punktowy z edytora SQL: każdy punkt to region. Online leży daleko w prawo (najwyższa sprzedaż) i najniżej (najniższa marża).

Dashboard AI/BI

Dashboard AI/BI składa się ze zbiorów danych, czyli zapytań SQL, i widżetów na płótnie: kafelków z liczbami, wykresów i tabel. Nasz dashboard „Nordvella - sprzedaż sieci” korzysta z czterech zapytań do widoku sales_report i ma sześć widżetów: trzy wskaźniki za 2025 rok, trend miesięczny w regionach, sprzedaż w kategoriach i udział kanałów sprzedaży. Liczba transakcji na dashboardzie (28 785) jest mniejsza od liczby wierszy z 2025 roku (29 545), bo widok pomija 760 zwrotów. Taki dashboard to także zrzut otwierający ten artykuł.

Nowy dashboard zakładasz przyciskiem New i pozycją Dashboard, a zbiory danych dodajesz w zakładce Data. Nasz dashboard możesz też zaimportować z pliku nordvella_dashboard.lvdash.json: w Dashboards kliknij strzałkę obok przycisku Create dashboard i wybierz Import dashboard from file. Zadziała od razu, jeśli masz widok workspace.nordvella_lakehouse.sales_report z tej sekcji. Po kliknięciu Publish dashboard dostaje wersję do oglądania, którą udostępniasz przyciskiem Share.

Dashboard AI/BI w Databricks: sprzedaż netto 2025 według kategorii i udział kanałów sprzedaży na wykresie pierścieniowym
Dolna część dashboardu: sprzedaż w kategoriach w 2025 roku (AGD/RTV 50,5 mln zł) i udział kanałów, w którym sklepy stacjonarne mają 64,71% sprzedaży netto.

Genie: pytania o dane w języku naturalnym

Genie odpowiada na pytania zadane zwykłym językiem. Pod spodem zamienia je na zapytania SQL do wskazanych tabel, wykonuje je na SQL warehouse i pokazuje wynik, często z wykresem. W 2026 roku przestrzenie Genie zmieniły nazwę na Genie Agents.

Krok 1. Kliknij New i Genie Agent. W oknie Connect your data przejdź do zakładki All, wyszukaj sales_report, zaznacz widok i kliknij Create. Do jednego agenta możesz podpiąć kilka tabel, a w zakładce Configure dopisać instrukcje, na przykład jak liczyć marżę.

Okno Connect your data przy tworzeniu Genie Agent w Databricks z wybranym widokiem sales_report
Wybór danych dla nowego agenta Genie: widok sales_report ze schematu nordvella_lakehouse.

Krok 2. Genie sam nadał agentowi nazwę „Retail Sales Analysis” i podpowiedział pierwsze pytania. Zadaliśmy własne, po polsku:

Który region miał najwyższą sprzedaż netto w 2025 roku i jaką miał marżę?

Odpowiedź przyszła po polsku po kilkunastu sekundach: region Online, sprzedaż netto 37 120 708,19 zł. Słowo „marża” Genie zrozumiał jako kwotę marży (5 128 244,13 zł), a nie procent. To typowa sytuacja: pytanie było dwuznaczne, więc dostaliśmy poprawną odpowiedź na jedną z interpretacji. Gdy chodzi o procent, napisz „marża procentowa”, a przy wynikach zawsze rozwiń Show code i sprawdź, jakie zapytanie powstało.

Odpowiedź Genie po polsku w Databricks: region Online z najwyższą sprzedażą netto w 2025 roku i kwotą marży netto
Odpowiedź agenta Genie z tabelą wyniku. Liczba sprzedaży zgadza się z zapytaniem z edytora SQL (37,12 mln zł).

Krok 3. Drugie pytanie prosiło o wykres:

Pokaż sprzedaż netto miesięcznie w 2025 roku w podziale na kanały sprzedaży jako wykres.
Genie w Databricks: pytanie o sprzedaż miesięczną 2025 według kanałów, opis wyniku po polsku i tabela 36 wierszy
Genie opisał wynik po polsku (szczyt w grudniu, kanał stacjonarny najsilniejszy w każdym miesiącu) i zwrócił tabelę 36 wierszy: 12 miesięcy razy 3 kanały.
Wykres liniowy wygenerowany przez Genie: miesięczna sprzedaż netto 2025 według kanału sprzedaży z polskim tytułem i osiami
Wykres od Genie, z polskim tytułem i opisami osi. Pod nim kolejne pytania podpowiedziane po polsku.

Genie najlepiej działa na dobrze opisanych tabelach. Opisy kolumn w Unity Catalog, wspomniane wcześniej instrukcje i przykładowe zapytania w zakładce Configure mają większy wpływ na trafność odpowiedzi niż samo sformułowanie pytania. O tym, jak AI pomaga w pisaniu SQL poza Databricks, piszemy w przewodniku AI w SQL: tworzenie zapytań, wyszukiwanie błędów i optymalizacja SQL z pomocą AI.

Lakeflow: potok bronze, silver, gold z kontrolą jakości

Co chcemy osiągnąć. Sklepy Nordvelli co miesiąc przysyłają nowy plik sprzedaży, a w plikach zdarzają się błędy kas: ujemna ilość, brak numeru sklepu, zdublowane paragony. Chcemy, żeby nowe pliki same trafiały do tabel, błędne wiersze były odrzucane i liczone, a zestawienie miesięczne dla zarządu odświeżało się bez ręcznej pracy. Zbudujemy to jako potok Lakeflow w architekturze medalionowej, którą opisaliśmy w sekcji o lakehouse.

Lakeflow to rodzina narzędzi Databricks do inżynierii danych: Lakeflow Connect pobiera dane z baz i aplikacji, potoki deklaratywne (dawniej Delta Live Tables, dziś Lakeflow Spark Declarative Pipelines) przetwarzają je, a Lakeflow Jobs uruchamia całość z harmonogramu. Potok deklaratywny opisujesz jako zestaw tabel i zapytań. Kolejność kroków, ponowienia po błędzie i przyrostowe przetwarzanie Databricks układa sam.

Krok 1. Cały potok to jeden plik SQL, 03_pipeline_sprzedaz.sql:

-- Potok Lakeflow Declarative Pipelines: sprzedaż Nordvella w warstwach bronze, silver, gold
-- Artykuł „Czym jest Databricks - kompletny przewodnik” (blog JSystems).
-- Potok czyta z wolumenu raw_files pliki o nazwach nordvella_sales*.csv

-- BRONZE: każdy nowy plik CSV z folderu trafia do tabeli dokładnie tak, jak przyszedł
CREATE OR REFRESH STREAMING TABLE sales_bronze
COMMENT "Surowe pliki sprzedaży z kas i sklepu online"
AS SELECT *, _metadata.file_name AS source_file
FROM STREAM read_files(
  '/Volumes/workspace/nordvella_lakehouse/raw_files/',
  format => 'csv', header => true,
  fileNamePattern => 'nordvella_sales*.csv');

-- SILVER: typy, bez duplikatów, wiersze z błędami odrzucone przez oczekiwania (expectations)
CREATE OR REFRESH MATERIALIZED VIEW sales_silver (
  CONSTRAINT positive_quantity EXPECT (quantity > 0) ON VIOLATION DROP ROW,
  CONSTRAINT store_present EXPECT (store_id IS NOT NULL) ON VIOLATION DROP ROW
)
COMMENT "Sprzedaż po kontroli jakości"
AS SELECT DISTINCT
  CAST(sale_id AS BIGINT) AS sale_id,
  CAST(sale_date AS DATE) AS sale_date,
  CAST(product_id AS INT) AS product_id,
  CAST(store_id AS INT) AS store_id,
  CAST(quantity AS INT) AS quantity,
  CAST(net_amount AS DECIMAL(12,2)) AS net_amount,
  CAST(net_margin AS DECIMAL(12,2)) AS net_margin,
  channel,
  payment_method,
  CAST(is_returned AS INT) AS is_returned
FROM sales_bronze;

-- GOLD: sprzedaż miesięczna w regionach, gotowa pod raport
CREATE OR REFRESH MATERIALIZED VIEW sales_gold_monthly
COMMENT "Sprzedaż netto i marża miesięcznie wg regionu"
AS SELECT
  date_trunc('MONTH', s.sale_date) AS month,
  st.region,
  SUM(s.net_amount) AS net_sales,
  SUM(s.net_margin) AS net_margin,
  COUNT(*) AS transactions
FROM sales_silver AS s
JOIN workspace.nordvella_lakehouse.stores AS st USING (store_id)
WHERE s.is_returned = 0
GROUP BY ALL;

Trzy elementy, które warto zrozumieć:

  • Tabela strumieniowa sales_bronze (STREAMING TABLE) czyta pliki przez Auto Loader. Pamięta, które pliki już przetworzyła, więc kolejne uruchomienie wczyta tylko nowe. Kolumna source_file zapisuje nazwę pliku, z którego przyszedł wiersz.
  • Oczekiwania (ang. expectations) w sales_silver to reguły jakości danych. EXPECT (quantity > 0) ON VIOLATION DROP ROW odrzuca wiersze z ilością zero lub ujemną, a potok liczy, ile ich było. Zamiast DROP ROW możesz zatrzymać cały potok (FAIL UPDATE) albo tylko zapisać ostrzeżenie.
  • Widok zmaterializowany (MATERIALIZED VIEW) przechowuje wynik zapytania jak tabelę i odświeża go przy każdym uruchomieniu potoku, w miarę możliwości przyrostowo.

Krok 2. Kliknij New i ETL pipeline. Databricks od razu tworzy potok o nazwie New Pipeline z datą i godziną i otwiera edytor potoków. Po lewej jest drzewo plików z folderem transformations i pustym plikiem my_transformation.py, a na górnym pasku domyślny katalog i schemat potoku (na start workspace.default) oraz przyciski Dry run i Run pipeline.

W ustawieniach potoku (ikona koła zębatego, Settings) zmień nazwę na nordvella_sales_pipeline i schemat na nordvella_lakehouse. Potem przyciskiem + nad drzewem plików dodaj w folderze transformations plik SQL, wklej do niego kod potoku, a przykładowy plik w Pythonie usuń. Na koniec kliknij Run pipeline. Przycisk Dry run sprawdza sam kod i graf zależności, bez przetwarzania danych.

Pierwszy przebieg trwał 1 minutę i 35 sekund. Graf pokazuje cały przepływ: Auto Loader czyta pliki z wolumenu do sales_bronze (109 tys. wierszy), z niej powstaje sales_silver z dwoma oczekiwaniami, a sales_gold_monthly łączy ją z tabelą sklepów i daje 318 wierszy: miesiące razy regiony.

Graf potoku Lakeflow w Databricks: Auto Loader, tabela sales_bronze oraz widoki sales_silver i sales_gold_monthly
Graf potoku nordvella_sales_pipeline po pierwszym przebiegu: od plików w wolumenie, przez bronze i silver, do zestawienia gold.

Krok 3. Teraz najciekawsza część. Wgrywamy do wolumenu plik nordvella_sales_2026_06.csv z czerwcową sprzedażą: 2 026 wierszy, w tym celowo wpisane błędy, czyli 4 wiersze z ilością 0 lub -1, 3 wiersze bez numeru sklepu i 2 zdublowane paragony. Uruchamiamy potok jeszcze raz.

Tym razem sales_bronze wczytała tylko nowy plik (2 tys. wierszy), a widoki silver i gold odświeżyły się przyrostowo (Incremental). W kolumnie Expectations przy sales_silver pojawiło się 2 unmet i liczba 7: tyle wierszy odrzuciły reguły jakości.

Drugi przebieg potoku Lakeflow: 2 tys. nowych wierszy w sales_bronze i 7 wierszy odrzuconych przez oczekiwania
Drugi przebieg: przyrostowe wczytanie jednego pliku i odświeżenie widoków, z 7 wierszami odrzuconymi przez oczekiwania.

Po kliknięciu 2 unmet widać szczegóły: zapisano 110 692 wiersze, odrzucono 7, z czego 4 przez regułę positive_quantity, a 3 przez store_present. Dokładnie tyle błędów wpisaliśmy do pliku. Dwa zdublowane paragony usunęło SELECT DISTINCT: 108 675 starych wierszy plus 2 026 nowych, minus 7 odrzuconych i 2 duplikaty, daje właśnie 110 692.

Panel oczekiwań jakości danych w Lakeflow: zapisano 110 692 wiersze, odrzucono 7, positive_quantity 4 i store_present 3
Statystyki oczekiwań dla sales_silver: dwie reguły z akcją DROP, 4 i 3 odrzucone wiersze.

Lakeflow Jobs: odświeżanie z harmonogramu

Co chcemy osiągnąć. Zarząd chce mieć dashboard z aktualnymi danymi każdego ranka. Ustawimy zadanie, które o 6:00 uruchomi potok, a po nim odświeży dashboard.

Zadanie (ang. job) w Lakeflow Jobs składa się z kroków (ang. tasks), które mogą od siebie zależeć. Krokiem może być potok, notebook, zapytanie SQL, odświeżenie dashboardu, skrypt Pythona i kilka innych rodzajów pracy. Nasze zadanie nordvella_codzienne_odswiezanie ma dwa kroki: odswiez_potok uruchamia potok, a odswiez_dashboard rusza dopiero po nim i odświeża dashboard „Nordvella - sprzedaż sieci”. Harmonogram ustawiliśmy na 6:00 czasu warszawskiego (Schedules & Triggers).

Zadanie Lakeflow Jobs w Databricks z krokami odswiez_potok i odswiez_dashboard oraz harmonogramem 6:00 Europe/Warsaw
Zadanie z dwoma krokami połączonymi zależnością i harmonogramem na 6:00 (Europe/Warsaw). Adres e-mail twórcy rozmyliśmy.

Przycisk Run now uruchamia zadanie od razu. Nasz przebieg trwał 54 sekundy i zakończył się statusem Succeeded, a zakładka Runs pokazuje czas każdego kroku. Na koncie Free Edition, po zrobieniu zrzutów, wstrzymaliśmy harmonogram, żeby codzienny przebieg nie zużywał dziennego limitu obliczeń.

Zakładka Runs zadania Lakeflow Jobs w Databricks: przebieg 54 sekundy ze statusem Succeeded i czasami kroków
Historia przebiegów zadania: przebieg uruchomiony ręcznie, 54 sekundy, zakończony powodzeniem (zielony znacznik).

Na koncie Free Edition trafiliśmy przy tym na limit: potok nie chciał wystartować i zgłosił błąd RESOURCE_EXHAUSTED z informacją o wyczerpaniu limitu obliczeń serverless, bo na koncie działały w tym czasie inne obliczenia, między innymi SQL warehouse. Wystarczyło zatrzymać hurtownię i odczekać kilka minut. Darmowe konto ma limity obliczeń, między innymi najwyżej 5 równocześnie działających kroków zadań i jeden aktywny potok danego typu, więc uruchamiaj na nim jedno cięższe zadanie naraz.

Uczenie maszynowe i AI: MLflow na danych Nordvelli

Co chcemy osiągnąć. Dział planowania chce prognozować miesięczną sprzedaż regionów, żeby lepiej rozkładać zamówienia i grafiki pracy. Wytrenujemy prosty model na tabeli sales_gold_monthly z potoku i zobaczymy, jak Databricks zapisuje eksperyment: parametry, metryki i sam model.

MLflow to otwarta platforma do śledzenia eksperymentów z modelami, stworzona przez Databricks i wbudowana w workspace. Każde uruchomienie treningu zapisuje się jako przebieg (ang. run) z parametrami, metrykami i plikami modelu, więc po tygodniu wiesz, który wariant dał najlepszy wynik i na jakich danych powstał. Funkcja mlflow.sklearn.autolog() zapisuje to wszystko sama, bez dopisywania kodu do każdej metryki.

Notebook 04_mlflow_prognoza.py zamienia miesiąc i region na cechy liczbowe, dzieli dane na część treningową i testową i trenuje las losowy (ang. random forest) z biblioteki scikit-learn:

import mlflow
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_percentage_error
from sklearn.model_selection import train_test_split

df = spark.table("workspace.nordvella_lakehouse.sales_gold_monthly").toPandas()
df["year"] = pd.to_datetime(df["month"]).dt.year
df["month_no"] = pd.to_datetime(df["month"]).dt.month

X = pd.get_dummies(df[["year", "month_no", "region"]], columns=["region"], dtype=int)
y = df["net_sales"].astype(float)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

mlflow.sklearn.autolog()
with mlflow.start_run(run_name="prognoza_sprzedazy_rf"):
    model = RandomForestRegressor(n_estimators=200, random_state=42).fit(X_train, y_train)
    mape = mean_absolute_percentage_error(y_test, model.predict(X_test))
    mlflow.log_metric("test_mape", mape)

print(f"Średni błąd procentowy prognozy (MAPE): {mape:.1%}")
Notebook Databricks z kodem scikit-learn i MLflow: autolog, start_run i komunikat o zapisaniu przebiegu w eksperymencie
Komórka z treningiem modelu. Pod kodem Databricks informuje, że zapisał jeden przebieg w eksperymencie MLflow (Logged 1 run to an experiment).

Eksperyment pojawia się w Experiments w pasku bocznym, pod nazwą notebooka. Na liście przebiegów widać nazwę prognoza_sprzedazy_rf, czas treningu, zbiory danych użyte w przebiegu i zapisany model.

Eksperyment MLflow w Databricks z przebiegiem prognoza_sprzedazy_rf, zbiorem danych Train i zapisanym modelem
Lista przebiegów eksperymentu MLflow: jeden przebieg, zbiór danych z etykietą Train i zapisany model.

Po kliknięciu przebiegu widać szczegóły: 6 metryk i 18 parametrów modelu zapisanych automatycznie. Na danych testowych średni błąd procentowy prognozy (MAPE, ang. mean absolute percentage error) wyniósł 0,1296, czyli prognoza myli się średnio o 13%. Jak na model bez cech pogodowych, promocji i kalendarza świąt to dobry punkt wyjścia do porównań z kolejnymi wersjami.

Szczegóły przebiegu MLflow w Databricks: metryka test_mape 0,1296, metryki treningowe i parametry RandomForestRegressor
Szczegóły przebiegu: metryki (w tym test_mape), parametry lasu losowego i artefakty z zapisanym modelem. Ścieżkę z adresem e-mail rozmyliśmy.

Model z przebiegu można zarejestrować w Unity Catalog (przycisk Register model) i wystawić jako punkt dostępowy przez API (Serving), żeby inne systemy pobierały prognozy. Do aplikacji z modelami językowymi Databricks ma platformę Agent Bricks, wyszukiwanie wektorowe AI Search (dawniej Vector Search) i Playground do testowania modeli. Darmowe konto ma tu ograniczenia: Model Serving bez GPU i jeden punkt AI Search. Jeśli chcesz zrozumieć, jak działają systemy odpowiadające na pytania na podstawie firmowych dokumentów, zajrzyj do naszego przewodnika Co to jest agent AI - kompletny przewodnik dla firm.

Unity Catalog w praktyce: opisy, pochodzenie danych i uprawnienia

Co chcemy osiągnąć. Po kilku tygodniach w workspace'ie jest dużo tabel, a zarząd pyta, skąd się biorą liczby w dashboardzie i kto ma do nich dostęp. Sprawdzimy, co Unity Catalog wie o naszym widoku sales_report: jak go opisać, z czego powstaje, kto z niego korzysta i jak nadać do niego uprawnienia.

Opisy. Na stronie tabeli w Catalog Explorer, w zakładce Overview, Databricks od razu proponuje opis wygenerowany przez AI (AI Suggested Description), który zatwierdzasz przyciskiem Accept albo poprawiasz przez Edit. Przycisk AI generate nad listą kolumn robi to samo dla opisów kolumn. Opisy przydają się ludziom, a do tego korzysta z nich Genie przy odpowiadaniu na pytania.

Tabela sales w Catalog Explorer Databricks z opisem zaproponowanym przez AI i listą kolumn z typami
Strona tabeli sales w Catalog Explorer: opis zaproponowany przez AI do zatwierdzenia, kolumny z typami i zakładki History, Lineage oraz Permissions.

Pochodzenie danych. Zakładka Lineage pokazuje, z jakich tabel powstaje obiekt i co z niego korzysta. Unity Catalog zbiera te informacje sam, z wykonywanych zapytań, notebooków i potoków. Dla widoku sales_report widać trzy tabele źródłowe (sales, stores, products) i zapisane zapytanie, które tworzy widok (Upstream), a po stronie odbiorców (Downstream) dashboard „Nordvella - sprzedaż sieci”, agenta Genie „Retail Sales Analysis” i zapytanie o regiony. Na liście jest też zadanie nordvella_codzienne_odswiezanie, które odświeża dashboard oparty na tym widoku.

Zakładka Lineage widoku sales_report w Databricks: tabele źródłowe oraz dashboard i agent Genie jako odbiorcy
Lista pochodzenia danych dla widoku sales_report: tabele i zapytania po stronie źródeł (Upstream) oraz dashboard, agent Genie, zadanie i zapytanie po stronie odbiorców (Downstream).

Przycisk See lineage graph pokazuje to samo na grafie, aż do pojedynczych kolumn. Gdy ktoś zapyta, dlaczego sprzedaż w raporcie się zmieniła, idziesz po grafie od dashboardu do źródła, zamiast szukać po notebookach.

Graf pochodzenia danych w Unity Catalog: tabele products, stores i sales łączą się w widok sales_report
Graf lineage dla widoku sales_report: trzy tabele źródłowe z listą kolumn i widok, który je łączy. Adresy właściciela tabel rozmyliśmy.

Uprawnienia. W zakładce Permissions przycisk Grant otwiera okno nadawania uprawnień. Wybierasz użytkownika lub grupę (Principals) i uprawnienia: SELECT do odczytu, MANAGE do zarządzania obiektem, ALL PRIVILEGES do wszystkiego, a także APPLY TAG i READ METADATA.

Okno Grant on workspace.nordvella_lakehouse.sales_report w Unity Catalog z listą uprawnień SELECT, MANAGE, ALL PRIVILEGES
Nadawanie uprawnień do widoku sales_report w Catalog Explorer. Te same uprawnienia nadasz poleceniem GRANT w SQL.

To samo zapiszesz w SQL. Na przykład analitycy z grupy analitycy dostają odczyt widoku, ale nie tabel źródłowych, więc widzą tylko sprzedaż bez zwrotów i bez kosztów:

GRANT USE CATALOG ON CATALOG workspace TO `analitycy`;
GRANT USE SCHEMA ON SCHEMA workspace.nordvella_lakehouse TO `analitycy`;
GRANT SELECT ON TABLE workspace.nordvella_lakehouse.sales_report TO `analitycy`;

Nazwa grupy jest przykładowa: w firmie podajesz grupę z konsoli konta Databricks albo z Microsoft Entra ID. Free Edition nie ma konsoli konta ani logowania SSO, więc grup z firmowego katalogu użytkowników tam nie podepniesz. Unity Catalog pozwala też filtrować wiersze i maskować kolumny, na przykład pokazywać kierownikowi regionu tylko sprzedaż jego regionu. Te reguły ustawiasz w zakładce Policies.

Ile kosztuje Databricks: DBU i plany

Databricks nie sprzedaje licencji na użytkownika. Płacisz za zużyte obliczenia, mierzone w DBU (ang. Databricks Unit). DBU to znormalizowana jednostka mocy obliczeniowej: każdy rodzaj i rozmiar obliczeń zużywa określoną liczbę DBU na godzinę, a Databricks rozlicza je co sekundę. Notebook, który liczy przez dwie minuty, zapłaci za dwie minuty, a wyłączony SQL warehouse nie zużywa nic.

Infografika kosztów Databricks: zużyte DBU razy stawka, maszyny u dostawcy chmury i przechowywanie danych
Z czego składa się rachunek za Databricks: DBU razy stawka, przy obliczeniach klasycznych także maszyny u dostawcy chmury, a do tego przechowywanie danych.

Stawka za DBU zależy od czterech rzeczy: rodzaju obliczeń (zadania, SQL, serverless, praca interaktywna), planu, chmury i regionu. Przykład z oficjalnego cennika Azure Databricks: serverless SQL warehouse w rozmiarze 2X-Small, czyli ten sam rozmiar, który dostajesz we Free Edition, zużywa 4 DBU na godzinę, a rozmiar Small 12 DBU. Kwoty w złotych sprawdzasz w kalkulatorze swojej chmury, bo różnią się między regionami i umowami. W obliczeniach klasycznych do rachunku dochodzi koszt maszyn wirtualnych u dostawcy chmury, a zawsze także przechowywanie plików.

Plan Standard Databricks wycofał. Na AWS i Google Cloud konta przeszły na plan Premium 1 października 2025 roku i są tam dwa plany: Premium i Enterprise. Na Azure plan Standard zniknął 1 października 2026 roku. Najtańszy sposób na naukę to Free Edition, która nic nie kosztuje, a w zamian ma limity.

Kilka nawyków, które utrzymują rachunek w ryzach: ustaw automatyczne zatrzymanie SQL warehouse'u po kilku minutach bezczynności, zadania uruchamiaj na obliczeniach zadań zamiast na klastrze do pracy interaktywnej, a koszty sprawdzaj w tabelach systemowych (ang. system tables), gdzie Databricks zapisuje zużycie DBU z podziałem na zadania i użytkowników.

Databricks a Snowflake, Microsoft Fabric i BigQuery

Databricks najczęściej porównuje się z trzema platformami. Wszystkie przechowują dane w chmurze i odpowiadają na zapytania SQL, a różnią się tym, od czego wyszły i w czym są najwygodniejsze.

Tabela porównawcza Databricks, Snowflake, Microsoft Fabric i BigQuery: chmury, przechowywanie danych i mocne strony
Databricks, Snowflake, Microsoft Fabric i BigQuery porównane w pięciu wymiarach: od tego, czym są, po sposób rozliczenia.

Databricks wyróżnia się tam, gdzie oprócz SQL potrzebny jest Python, przetwarzanie dużych i różnorodnych danych, uczenie maszynowe i aplikacje AI na tych samych tabelach. Granice się jednak zacierają: Snowflake ma Pythona i funkcje AI, Databricks ma pełną hurtownię SQL, a wszystkie cztery platformy czytają otwarte formaty tabel. Przy wyborze liczą się umiejętności zespołu, chmura, w której firma już jest, i sposób rozliczania, który pasuje do budżetu.

Kiedy Databricks ma sens, a kiedy wybrać coś innego

Databricks najwięcej daje tam, gdzie spotykają się trzy rzeczy: dużo danych, różne rodzaje danych i kilka ról, które chcą na nich pracować naraz. Jeśli raporty sprzedażowe, prognozy popytu i asystent AI dla działu obsługi klienta mają korzystać z tych samych tabel, jedna platforma oszczędza kopiowania i sporów o to, która liczba jest prawdziwa.

Infografika: kiedy Databricks pasuje do firmy, a kiedy lepiej rozważyć bazę danych, Microsoft Fabric, Snowflake albo BigQuery
Szybki test przed wyborem platformy danych: po lewej sytuacje, w których Databricks się sprawdza, po prawej te, w których prostsze bywa inne narzędzie.

Są też sytuacje, w których Databricks będzie nadmiarem. Gdy dane mieszczą się w jednej bazie PostgreSQL czy SQL Server, a firmie wystarczą raporty w Power BI, platforma lakehouse doda pracy i kosztów, a nie rozwiąże żadnego problemu. Gdy firma potrzebuje bazy transakcyjnej dla aplikacji (zamówienia, koszyk, magazyn), Databricks nie zastąpi PostgreSQL ani SQL Servera, choć od niedawna ma usługę Lakebase z bazą PostgreSQL obok lakehouse'u.

Pytanie, od którego warto zacząć, brzmi: kto w firmie będzie pisał kod. Databricks zakłada zespół, który pracuje w SQL i Pythonie. Analityk znający tylko Excela szybko odnajdzie się w dashboardach i w Genie, ale potoki, jakość danych i koszty ktoś musi utrzymywać.

Jak nauczyć się Databricks: ścieżka i certyfikaty

Do Databricks najłatwiej wejść od SQL, bo na nim opierają się zapytania, dashboardy i duża część potoków. Kolejny krok to Python i PySpark, czyli interfejs Sparka dla Pythona, a dalej Delta Lake, Unity Catalog i potoki Lakeflow. Wszystko, co pokazaliśmy w tym artykule, przećwiczysz na darmowym koncie Free Edition.

Animacja ścieżki nauki Databricks: SQL, Python i PySpark, Delta Lake i Unity Catalog, Lakeflow, raporty i AI, certyfikat
Ścieżka nauki Databricks w sześciu krokach, od pierwszego zapytania SQL do certyfikatu.

Databricks prowadzi własny program certyfikacji. Każdy egzamin kosztuje 200 USD, a certyfikat jest ważny dwa lata. Najczęściej wybierane ścieżki to:

  • Databricks Certified Data Engineer Associate i Professional dla inżynierów danych (potoki, Delta Lake, Unity Catalog),
  • Databricks Certified Data Analyst Associate dla analityków (SQL, dashboardy, Genie),
  • Databricks Certified Machine Learning Associate i Professional dla osób trenujących modele,
  • Databricks Certified Generative AI Engineer Associate dla twórców aplikacji z modelami językowymi,
  • Databricks Certified Associate Developer for Apache Spark dla programistów Sparka.

Aktualną listę egzaminów, liczbę pytań i czas trwania znajdziesz na stronie Databricks Certification. Darmowe kursy wideo do nauki samodzielnej udostępnia Databricks Academy.

Podsumowanie

Databricks to platforma, na której dane, przetwarzanie, raporty i AI korzystają z jednej kopii danych w Twojej chmurze. W tym przewodniku przeszliśmy całą drogę danych sieci Nordvella: od plików CSV w wolumenie Unity Catalog, przez notebook, tabele Delta, widok raportowy, dashboard i Genie, po potok Lakeflow z harmonogramem i model zapisany w MLflow.

Infografika podsumowania: osiem kroków przewodnika po Databricks na danych Nordvelli, od Unity Catalog do MLflow
Osiem kroków tego przewodnika i ich wyniki na darmowym koncie Free Edition.

Wszystkie pliki, notebooki i definicję dashboardu znajdziesz w ramce na początku artykułu. Jeśli wybierasz platformę danych dla firmy, porównaj Databricks z innymi platformami w sekcji o Snowflake, Microsoft Fabric i BigQuery i przejdź listę z sekcji kiedy Databricks ma sens.

✕Powiększony zrzut ekranu z przewodnika po Databricks

Najczęściej zadawane pytania

Czym jest Databricks w prostych słowach?
Databricks to platforma w chmurze, na której firma przechowuje dane, przetwarza je i buduje na nich raporty, modele uczenia maszynowego i aplikacje AI. Dane leżą jako pliki w pamięci chmury w otwartym formacie Delta Lake, a inżynierowie, analitycy i data scientiści pracują na tych samych tabelach w notebookach, edytorze SQL i narzędziach AI. Taki układ nazywa się lakehouse.
Czy Databricks jest darmowy?
Do nauki tak: Databricks Free Edition jest bezpłatna i nie wymaga karty płatniczej. Działa tylko na obliczeniach serverless, ma jeden SQL warehouse w rozmiarze 2X-Small i dzienny limit użycia, a regulamin wyklucza użycie komercyjne. Płatne plany rozliczają się za zużyte obliczenia w jednostkach DBU, co sekundę.
Czym Databricks różni się od Apache Spark?
Apache Spark to otwarty silnik do rozproszonego przetwarzania danych. Databricks to platforma zbudowana przez twórców Sparka, w której Spark jest jednym z silników, a obok niego są format tabel Delta Lake, katalog i uprawnienia Unity Catalog, SQL warehouse, notebooki, potoki i zadania Lakeflow oraz narzędzia AI, takie jak Genie.
Czy do pracy w Databricks trzeba umieć programować?
Do zapytań, dashboardów i pytań w języku naturalnym w Genie wystarczy SQL, a czasem nawet sam język polski. Do budowy potoków danych, przetwarzania dużych zbiorów i uczenia maszynowego potrzebny jest Python z PySpark albo SQL na poziomie inżyniera danych.
Databricks czy Snowflake: co wybrać?
Snowflake wyszedł od hurtowni danych i jest najprostszy dla zespołu, który pracuje głównie w SQL. Databricks wyszedł od Sparka i sprawdza się tam, gdzie oprócz SQL potrzebny jest Python, przetwarzanie dużych i różnorodnych danych oraz uczenie maszynowe i AI na tych samych tabelach. Obie platformy działają na AWS, Azure i Google Cloud.
Na jakiej chmurze działa Databricks?
Databricks działa na Amazon Web Services, Microsoft Azure i Google Cloud. Na Azure występuje jako Azure Databricks, usługa pierwszej strony Microsoft, kupowana i rozliczana przez Azure. Dane zawsze leżą w pamięci obiektowej wybranej chmury.

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...