Czym jest Snowflake?
Snowflake to platforma chmurowa, która służy do przechowywania i analizowania danych. Dzięki niej firmy mogą gromadzić i przetwarzać duże ilości danych bez konieczności zarządzania własną infrastrukturą. Działa na popularnych chmurach, takich jak AWS, Microsoft Azure i Google Cloud, co zapewnia elastyczność i dostępność. Snowflake pozwala łatwo skalować zasoby i kontrolować koszty, co jest jedną z jego głównych zalet.
Jak krok po kroku poruszać się po Snowflake? Jak wyglądają podstawowe funkcjonalności? Przeczytaj artykuł!
Pierwsze kroki ze Snowflake
Na stronie Snowflake.com znajdziesz obszerną dokumentację i materiały edukacyjne, w tym kurs „Getting Started with Snowflake – Zero to Snowflake”, który zawiera też link do rejestracji - możesz skorzystać z darmowej 30-dniowej wersji próbnej, która oferuje początkową pulę kredytów.Dzięki temu można nauczyć się obsługi platformy i przetestować jej główne funkcje.
Jednym z aspektów nauki jest optymalizacja działań, która pozwala na jak najbardziej efektywne wykorzystanie puli kredytów. Twórcy Snowflake podkreślają, że platforma pomaga obniżyć koszty zarządzania danymi, oferując optymalizację i lepsze wykorzystanie zasobów, co jest korzystne dla firm przetwarzających dane z różnych źródeł.
Kredyty w Snowflake to jednostki, które mierzą zużycie zasobów obliczeniowych. Są wykorzystywane podczas uruchamiania zapytań, przetwarzania danych i skalowania magazynów danych (Virtual Warehouses). Im większy magazyn i dłuższy czas pracy, tym więcej kredytów zużywasz.
Wymagania sprzętowe i systemowe Snowflake
Najłatwiej korzystać ze Snowflake przez dowolną przeglądarkę internetową. Snowflake oferuje też:
- SnowSQL (CLI) – To specjalne narzędzie wiersza poleceń (CLI – Command Line Interface) stworzone przez Snowflake. Pozwala na wykonywanie zapytań SQL oraz zarządzanie bazami danych bezpośrednio z terminala lub konsoli w systemach Linux, macOS i Windows.
- Sterowniki JDBC i ODBC – To oprogramowanie umożliwiające połączenie Snowflake z innymi aplikacjami, np. narzędziami analitycznymi, raportowymi lub językami programowania (jak Python czy Java). Dzięki tym sterownikom zewnętrzne programy mogą komunikować się z bazą danych Snowflake, wysyłać zapytania i pobierać dane.
W tym przykładzie skorzystamy z przeglądarki, która pozwala na pracę w menu oraz pisanie zapytań SQL w specjalnym obszarze roboczym (Worksheets).
Rejestracja - Snowflake
Podczas rejestracji wybieramy region, który powinien odpowiadać lokalizacji naszych danych w chmurze. Snowflake zaleca, aby dla niższych kosztów i lepszej ochrony danych wybrać region zgodny z dostawcą naszej chmury. Na przykład, jeśli używamy Amazon Web Services (AWS), najlepiej wybrać Snowflake działający na AWS w tym samym regionie. W wersji testowej nie ma to kluczowego znaczenia, możemy wybrać region dowolnie, jednak, jeśli chcielibyśmy poćwiczyć na danych, które posiadamy w chmurze, a nie np. lokalnie na swoim komputerze, warto stosować się do powyższych zaleceń.
Interfejs
Na adres e-mail podany w czasie rejestracji otrzymujemy dane do logowania, zawierające nazwę konta w formacie xx0000 oraz przydzielony automatycznie region. Tworzy to adres: xx0000.<region>.snowflakecomputing.com który należy podać w pasku adresu przeglądarki:
Uwaga: Nasze konto jest przypisane do konkretnego regionu i nie można się zalogować do innego regionu w domenie snowflakecomputing.com. Ponadto błędem w czasie logowania poprzez klienta SQL jest dodawanie do regionu także domeny „snowflakecomputing.com”. Nie należy wpisywać domeny, logowanie się nie uda.
Po zalogowaniu w przeglądarce ujrzymy interfejs:
Od razu zwracamy uwagę, że w wersji próbnej domyślnie mamy przydzieloną rolę SYSADMIN, co jest widoczne po prawej stronie paska menu, tuż pod nazwą użytkownika (jaką nadaliśmy sobie sami podczas rejestracji). W sytuacji produkcyjnej zależeć będzie to od nadanej nam przez naszą organizację roli.
W wersji testowej możemy sami przełączyć (rozwijane menu znacznikiem „v” przy SYSADMIN) swoją rolę także na najwyższy poziom, czyli ACCOUNTADMIN, co spowoduje m.in. pojawienie się dodatkowej ikony „Account”. Omówimy to w dalszej części, a do przetwarzania danych korzystać będziemy z roli SYSADMIN.
Ikony od lewej:
- Databases – tu tworzymy i zarządzamy bazami danych
- Shares – Snowflake umożliwia udostępnianie danych pomiędzy różnymi kontami (organizacjami) poprzez Shares. Dostawcy danych udostępniają dane, które mogą być importowane przez odbiorców spoza organizacji, albo poprzez swoje własne konto Snowflake, albo poprzez konto Snowflake Reader. Odbiorcą więc może być albo ktoś spoza organizacji, albo też członek tej samej organizacji, ale innego oddziału, który musi z jakichś przyczyn mieć indywidualne, osobne konto Snowflake. W ten sposób są m.in. udostępniane dane do Snowflake Marketplace (poniżej)
Zalety bezpiecznego udostępniania danych
- Istnieje tylko jednak kopia danych, nie ma potrzeby ich powielania i pozostają one zawsze w przestrzeni konta dostawcy/udostępniającego dane;
- Udostępniane dane są zawsze Live, w czasie rzeczywistym i bezzwłocznie dostępne dla odbiorcy;
- Udostępniający może określić i w każdej chwili odwołać szczegółowy zakres dostępu do danych;
- Udostępniane danych poprzez Shares jest proste, bezpieczne i nie wymaga np. przesyłania dużych plików .csv, itd przez Internet.
- Data Markeplace – daje dostęp naukowcom, specjalistom BI, profesjonalnym analitykom oraz dowolnym osobom zainteresowanym procesem decyzyjnym opartym na danych, do ponad 500 aktywnych i gotowych do odpytywań zbiorów danych od ponad 140 zewnętrznych dostawców danych i usług.
- Warehouses – tutaj tworzymy i zarządzamy hurtowniami danych. Domyślnie utworzony mamy pierwszy Warehouse pod nazwą COMPUTE_WH. Jest on w pełni zarządzany przez Snowflake i zapewni nam poprawne funkcjonowanie. W ramach wersji próbnej proponuję upewnić się, że nasz COMPUTE_WH ma parametry minimalne, tj rozmiar X-Small oraz włączoną opcję Auto Suspend z czasem 5 min.
- Worksheet – to jest nasz główny plac zabaw z danymi. Tutaj pracujemy z danymi i posługujemy się SQL
- History – przeglądamy całą historię naszych działań. Zapisywane są tu wszystkie operacje z nadanym unikalnym ID. Historię możemy przeglądać wg użytkownika, statusu, hurtowni, czasu trwania operacji, czasu zakończenia, identyfikatora sesji, tekstu w komendzie SQL, ID zapytania, rodzaju komendy oraz określać dla tych parametrów szczegółowe kryteria.
Uwaga: Informacje tu zarejestrowane mogą posłużyć także m.in. do tzw. Time Travel, czyli np. przywrócenia tabeli do stanu sprzed dowolnego kroku, czyli nawet cofnięcia skutków „katastrofy” w wyniku błędu, itd. Standardowy okres przechowywania informacji niezbędnej dla Time Travel wynosi 1 dzień (24 godz). Dla wersji Enterprise i wyższych ten czas może wynosić do 90 dni zależnie od typu obiektów.
- Account- ikona widoczna tylko, jeśli mamy rolę ACCOUNTADMIN. Tu zarządzamy naszym kontem Snowflake oraz określamy zakresy uprawnień i przydzielamy je użytkownikom. Z tego poziomu możemy monitorować i prowadzić szczegółową analizę w zakresie efektywności wykorzystania przydzielonych zasobów i prowadzonych przez użytkowników operacji, nie tylko w zakresie bezpośrednich kosztów, ale także pod względem czasu trwania tych operacji. Pozwala to na elastyczne reagowanie i dostosowywanie hurtowni i /lub klastrów stosownie do zmieniających się potrzeb naszej organizacji, z większym lub mniejszym wykorzystaniem automatyzacji zarządzania hurtowniami zapewnianymi przez Snowflake.
- Preview App – własne rozwiązanie Snowflake do wizualizacji danych w opraciu o Worksheets (które można także importować z ww. menu Worksheets) oraz Dashboards. Nie będziemy omawiać w ramach podstawowych funkcjonalności, gdyż do wizualizacji danych wykorzystamy zewnętrzna narzędzie BI, jaki jest Tableau.
- Partner Connect – bezpośrednie połączenia do narzędzi analizy danych, Partnerów Snowflake, takich jak np. Alteryx, Fivetran i wielu innych. Lista partnerów jest wciąż powiększana.
- Help – poza panelem pomocy, zawiera linki do dokumentacji i do społeczności Snowflake. Zawiera także sekcję Download, z której korzystamy do ściągnięcia sterowników Snowflake dla aplikacji klienckich. Tu znajdziemy link m.in. do sterownika ODBC dla Tableau.
- Notifications – powiadomienia, zależne ustawień, które obejmują e-mail i/lub web.
- Ostatnią pozycją jest rozwijane menu pod nazwą użytkownika. Możemy zmienić tam hasło, wybrać rolę, w pozycji preferencje ustawić np. autentykację wieloskładnikową. Tu znajdziemy pozycję logout. W dolnej części zobaczymy szczegółowe informacje o naszym koncie (XX0000), organizacji (dla wersji próbnej to, co podamy w czasie rejestracji), wersji Snowflake (w wersji próbnej jest to Standard, dla organizacji będzie to np. Enterprise), platformy chmurowej, z której korzysta Snowflake (m.in, Amazon WS, Google CP, itd.) oraz regionie.
Przygotowanie do ładowania danych
Pełne informacje o ładowaniu danych przez interfejs Snowflake.
Operowanie danymi w Snowflake wymaga przygotowania kontekstu. W organizacji użytkownicy, stosownie do przypisanych im ról, poruszają się w kontekstach przygotowanych przez SYSADMIN-ów. W wersji próbnej to my mamy rolę SYSADMIN i będziemy tworzyć kontekst od podstaw. Obejmuje to:
- utworzenie lub wybranie roli: Pozostajemy przy domyślnym SYSADMIN
- utworzenie bazy danych: Sprowadza się do kliknięcia na ikonę Databases i na pozycję Create. W wersji próbnej mamy tu już pewne bazy przykładowe, ale utworzymy nasze własne. Po kliknięciu Create pojawia się okienko, w którym musimy nadać nazwę naszej bazie danych i ewentualnie komentarz. Trzymając się przewodnika, tworzymy bazę o nazwie „CITIBIKE”
Uwaga: W tym miejscu po raz pierwszy widzimy, że okienko zawiera w lewym dolnym rogu przycisk Show SQL. W każdym z ukazujących się okienek web GUI pod tym przyciskiem możemy podejrzeć składnię SQL, którą generuje Snowflake. Jest to przydatne, gdyż widzimy tu szczegóły składni i format SQL używanego przez Snowflake, co pozwoli na uniknięcie lub wyjaśnienie ewentualnych problemów przy wykorzystaniu czy to SnowSQL, czy też innego, ulubionego klienta CLI SQL, a także w przypadku rozwiązań klienckich czy automatyzacji działań.
- utworzenie schematu. Po utworzeniu bazy danych klikamy na jej nazwę. Pojawią się nowe zakładki. Klikamy zakładkę Schemas i ponownie pozycję Create. Nadajemy nazwę dowolną, w naszym przykładzie będzie to „PUBLIC”.
- utworzenie tabeli. Pozostając w menu Databases>CITIBIKE klikamy zakładkę Tables. W sposób analogiczny tworzymy pierwszą tabelę klikając Create. W okienku poza nazwą tabeli, musimy określić jej strukturę, czyli dodać kolejno kolumnę (Add), nadać jej nazwę (wg przykładu niech to będzie „TRIPS”) i określić typ danych, których do wyboru mamy 13.
Ponownie możemy podejrzeć składnię klikając przycisk Show SQL:
- Utworzenie hurtowni odbywa się w zakładce Warehouses. Nie będziemy tworzyć nowej, skorzystamy z domyślnej hurtowni COMPUTE_WH:
Uwaga: Operacje Data Definition Language (DDL) są bezpłatne. Wszystkie wymienione powyżej operacje nie wymagają zasobów obliczeniowych, więc możemy utworzyć wszystkie nasze obiekty bezpłatnie.
Web GUI jest przejrzyste i wygodne, ale nie daje takiej elastyczności, jak CLI, żeby wykonać od razu ciąg kroków, czy komend. Wszystkie powyższe czynności możemy wykonać w SQL komendą CREATE Database/ Schema/Table, czy to w kliencie CLI, czy też korzystając z menu Worksheets i wpisując komendy SQL w oknie poleceń.
Podpowiedź: aby snowsql wykonał sekwencję poleceń wymaga zamknięcia jej znakiem średnika. W oknie poleceń Worksheet w celu wykonania pojedynczej sekwencji SQL, tj. do znaku średnika, umieszczamy kursor w dowolnym miejscu sekwencji przed końcowym średnikiem i klikamy CTRL+ Enter. Wynik ukazuje nam się poniżej okna poleceń.