1. Omówienie
BigQuery to ekonomiczna, w pełni zarządzana analityczna baza danych Google typu NoOps. Dzięki BigQuery możesz wykonywać zapytania obejmujące nawet terabajty danych bez konieczności zarządzania infrastrukturą i nie potrzebujesz administratora bazy danych. Usługa BigQuery opiera się na znanej Ci bazie SQL i jest dostępna w modelu płatności według wykorzystania. Pracując w BigQuery, możesz skoncentrować się na analizowaniu danych i wyciąganiu z nich znaczących wniosków.
W ramach tego ćwiczenia w programie zapoznasz się ze zbiorem danych Wikipedii za pomocą BigQuery.
Czego się nauczysz
- Korzystanie z BigQuery
- Jak wczytać do BigQuery rzeczywisty zbiór danych
- Jak napisać zapytanie pozwalające uzyskać wgląd w duży zbiór danych
Czego potrzebujesz
- Projekt Google Cloud
- przeglądarki, na przykład Google Chrome lub Firefox;
Ankieta
Jak wykorzystasz ten samouczek?
Jak oceniasz swoje doświadczenia z Google Cloud?
2. Konfiguracja i wymagania
Włączanie BigQuery
Jeśli nie masz jeszcze konta Google, musisz je utworzyć.
- Zaloguj się w konsoli Google Cloud i otwórz BigQuery. Możesz też otworzyć interfejs internetowy BigQuery bezpośrednio, wpisując w przeglądarce ten adres URL.
https://console.cloud.google.com/bigquery
- Zaakceptuj Warunki korzystania z usługi.
- Aby korzystać z BigQuery, musisz utworzyć projekt. Utwórz nowy projekt, postępując zgodnie z instrukcjami.
Wybierz nazwę projektu i zanotuj jego identyfikator.
Identyfikator projektu to unikalna nazwa we wszystkich projektach Google Cloud. W dalszej części tego ćwiczenia w Codelabs będzie ona określana jako PROJECT_ID
.
W tym ćwiczeniu w programowaniu wykorzystywane są zasoby BigQuery w ramach limitów piaskownicy BigQuery. Konto rozliczeniowe nie jest wymagane. Jeśli zechcesz później usunąć limity piaskownicy, możesz dodać konto rozliczeniowe, rejestrując się w bezpłatnym okresie próbnym Google Cloud.
W następnej sekcji wczytasz zbiór danych z Wikipedii.
3. Tworzenie zbioru danych
Najpierw utwórz w projekcie nowy zbiór danych. Zbiór danych składa się z wielu tabel.
- Aby utworzyć zbiór danych, kliknij nazwę projektu w panelu zasobów, a następnie kliknij Utwórz zbiór danych:
- Wpisz
lab
jako identyfikator zbioru danych:
- Aby utworzyć pusty zbiór danych, kliknij Utwórz zbiór danych.
4. Wczytywanie danych za pomocą programu wiersza poleceń bq
Aktywowanie Cloud Shell
- W konsoli Cloud kliknij Aktywuj Cloud Shell .
Jeśli dopiero zaczynasz korzystać z Cloud Shell, wyświetli się ekran pośredni (w części strony widocznej po przewinięciu) z opisem tej funkcji. W takim przypadku kliknij Dalej (nie zobaczysz go więcej). Tak wygląda ten jednorazowy ekran:
Uzyskanie dostępu do Cloud Shell i połączenie się z nim powinno zająć tylko kilka chwil.
Ta maszyna wirtualna ma wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i uwierzytelnianie. Większość czynności z tego ćwiczenia z programowania można wykonać w przeglądarce lub na Chromebooku.
Po nawiązaniu połączenia z Cloud Shell powinno pojawić się informacja, że użytkownik jest już uwierzytelniony i że projekt jest już ustawiony na identyfikator Twojego projektu.
- Uruchom to polecenie w Cloud Shell, aby potwierdzić, że jesteś uwierzytelniony:
gcloud auth list
Dane wyjściowe polecenia
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- Uruchom to polecenie w Cloud Shell, aby sprawdzić, czy polecenie gcloud zna Twój projekt:
gcloud config list project
Dane wyjściowe polecenia
[core] project = <PROJECT_ID>
Jeśli tak nie jest, możesz go ustawić za pomocą tego polecenia:
gcloud config set project <PROJECT_ID>
Dane wyjściowe polecenia
Updated property [core/project].
Wczytywanie danych do BigQuery
Dla Twojej wygody niektóre dane z 10 kwietnia 2019 r. ze zbioru danych odsłon Wikimedia są dostępne w Google Cloud Storage na stronie gs://cloud-samples-data/third-party/wikimedia/pageviews/pageviews-20190410-140000.gz
. Plik danych jest plikiem CSV w formacie GZip. Możesz wczytać ten plik bezpośrednio za pomocą narzędzia wiersza poleceń bq
. W ramach polecenia load możesz również opisać schemat pliku.
bq load \
--source_format CSV \
--field_delimiter " " \
--allow_jagged_rows \
--quote "" \
--max_bad_records 3 \
$GOOGLE_CLOUD_PROJECT:lab.pageviews_20190410_140000 \
gs://cloud-samples-data/third-party/wikimedia/pageviews/pageviews-20190410-140000.gz \
wiki,title,requests:integer,zero:integer
Używasz kilku zaawansowanych opcji do wczytania pliku page-views:
- Ustaw
--source_format CSV
, aby wskazać, że plik ma być analizowany jako plik CSV. Ten krok jest opcjonalny, ponieważ domyślnym formatem jest CSV. - Ustaw
--field_delimiter " "
, by wskazać, że do rozdzielania pól służy jedna spacja. - Ustaw
--allow_jagged_rows
, aby uwzględniać wiersze z mniejszą liczbą kolumn i ignorować błędy podczas wczytywania pliku CSV. - Ustaw
--quote ""
, by wskazać, że ciągi znaków są bez cudzysłowów. - Ustaw
--max_bad_records 3
tak, aby podczas analizowania pliku CSV ignorował maksymalnie 3 błędy.
Więcej informacji o wierszu poleceń bq znajdziesz w dokumentacji.
5. Wyświetl podgląd zbioru danych
W konsoli BigQuery otwórz jedną z właśnie wczytanych tabel.
- Rozwiń projekt.
- Rozwiń zbiór danych.
- Wybierz tabelę.
Schemat tabeli możesz zobaczyć na karcie Schemat. 4. Aby sprawdzić ilość danych w tabeli, otwórz kartę Szczegóły:
- Aby zobaczyć wybrane wiersze z tabeli, otwórz kartę Podgląd.
6. Tworzenie zapytania
- Kliknij Utwórz nowe zapytanie:
Wyświetli się Edytor zapytań:
- Uzyskaj całkowitą liczbę wyświetleń w witrynie Wikimedia między godziną 14:00 a 15:00 10 kwietnia 2019 r., wpisując zapytanie:
SELECT SUM(requests) FROM `lab.pageviews_20190410_140000`
- Kliknij Wykonaj:
Po kilku sekundach wynik będzie widoczny na dole wraz z informacją o ilości przetworzonych danych:
To zapytanie przetworzyło 123,9 MB, mimo że tabela ma rozmiar 691,4 MB. BigQuery przetwarza bajty tylko z kolumn wykorzystywanych w zapytaniu, więc łączna ilość przetworzonych danych może być znacznie mniejsza od rozmiaru tabeli. Dzięki grupowaniu i partycjonowaniu ilość przetwarzanych danych można jeszcze bardziej zmniejszyć.
7. Bardziej zaawansowane zapytania
Sprawdzanie liczby wyświetleń stron w Wikipedii
Zbiór danych Wikimedia zawiera wyświetlenia stron ze wszystkich projektów Wikimedia (w tym z Wikipedii, Wiktorii, Wikibooków i Wikiquotes). Aby zawęzić zapytanie do angielskojęzycznych stron Wikipedii, dodaj instrukcję WHERE
:
SELECT SUM(requests), wiki FROM `lab.pageviews_20190410_140000` WHERE wiki = "en" GROUP BY wiki
Zwróć uwagę, że po wysłaniu zapytania do dodatkowej kolumny wiki
ilość przetworzonych danych wzrosła z 124 MB do 204 MB.
BigQuery obsługuje wiele znanych klauzul SQL, takich jak CONTAINS
, GROUP BY,
ORDER BY
, oraz wiele funkcji agregacji. Możesz też używać wyrażeń regularnych do wysyłania zapytań dotyczących pól tekstowych. Wypróbuj jedno z tych rozwiązań:
SELECT title, SUM(requests) requests FROM `lab.pageviews_20190410_140000` WHERE wiki = "en" AND REGEXP_CONTAINS(title, 'Red.*t') GROUP BY title ORDER BY requests DESC
Wykonywanie zapytań dotyczących wielu tabel
Możesz wybrać zakres tabel, aby utworzyć połączenie za pomocą tabeli z symbolami wieloznacznymi.
- Najpierw utwórz drugą tabelę, aby przesłać do niej zapytanie, wczytując wyświetlenia strony z następnej godziny do nowej tabeli:
bq load \
--source_format CSV \
--field_delimiter " " \
--quote "" \
$GOOGLE_CLOUD_PROJECT:lab.pageviews_20190410_150000 \
gs://cloud-samples-data/third-party/wikimedia/pageviews/pageviews-20190410-150000.gz \
wiki,title,requests:integer,zero:integer
- W Edytorze zapytań utwórz zapytanie do obu wczytanych tabel, wysyłając zapytanie o tabele „
pageviews_2019
”. jako prefiks:
SELECT title, SUM(requests) requests FROM `lab.pageviews_2019*` WHERE wiki = "en" AND REGEXP_CONTAINS(title, 'Red.*t') GROUP BY title ORDER BY requests DESC
Możesz bardziej selektywnie filtrować tabele, korzystając z pseudokolumny _TABLE_SUFFIX. To zapytanie ogranicza się do tabel odpowiadających 10 kwietnia.
SELECT title, SUM(requests) requests FROM `lab.pageviews_2019*` WHERE _TABLE_SUFFIX BETWEEN '0410' AND '0410_9999999' AND wiki = "en" AND REGEXP_CONTAINS(title, 'Red.*t') GROUP BY title ORDER BY requests DESC
8. Czyszczenie
Opcjonalnie usuń zbiór danych utworzony za pomocą polecenia bq rm
. Aby usunąć wszystkie zawarte w nim tabele, użyj flagi -r
.
bq rm -r lab
9. Gratulacje!
Udało Ci się użyć BigQuery i SQL do wysyłania zapytań do rzeczywistego zbioru danych odsłon w Wikipedii. Możesz tworzyć zapytania do zbiorów danych w petabajtach.
Więcej informacji
- Zapoznaj się z subredditem BigQuery, aby dowiedzieć się, jak inni korzystają obecnie z BigQuery.
- Znajdź publiczne zbiory danych dostępne w BigQuery.
- Dowiedz się, jak wczytać dane do BigQuery.