1. Wprowadzenie
BigQuery to ekonomiczna, w pełni zarządzana analityczna baza danych Google typu NoOps. Z BigQuery możesz przeszukiwać terabajty danych bez konieczności zarządzania infrastrukturą czy wyznaczania administratora bazy danych. BigQuery korzysta ze znanego języka SQL i 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 tym module dowiesz się, jak za pomocą narzędzia wiersza poleceń bq wczytać lokalny plik CSV do nowej tabeli BigQuery.
Czego się nauczysz
- Jak korzystać z narzędzia wiersza poleceń bq w BigQuery
- Wczytywanie lokalnych plików danych do tabeli BigQuery
Czego potrzebujesz
- projekt Google Cloud,
- przeglądarka, np. Google Chrome;
2. Konfiguracja
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ć internetowy interfejs BigQuery bezpośrednio, wpisując w przeglądarce ten adres URL:
https://console.cloud.google.com/bigquery
- Zaakceptuj Warunki korzystania z usługi.
- Zanim zaczniesz korzystać z BigQuery, musisz utworzyć projekt. Postępuj zgodnie z instrukcjami, aby utworzyć nowy projekt.
Wybierz nazwę projektu i zanotuj identyfikator projektu. 
Identyfikator projektu to unikalna nazwa w ramach wszystkich projektów Google Cloud. W dalszej części tego laboratorium będzie on nazywany PROJECT_ID.
W tym module wykorzystywane są zasoby BigQuery w ramach limitów piaskownicy BigQuery. Konto rozliczeniowe nie jest wymagane. Jeśli później zechcesz usunąć limity piaskownicy, możesz dodać konto rozliczeniowe, rejestrując się w bezpłatnym okresie próbnym Google Cloud.
Cloud Shell
Będziesz używać Cloud Shell, czyli środowiska wiersza poleceń działającego w Google Cloud.
Aktywowanie Cloud Shell
- W konsoli Cloud kliknij Aktywuj Cloud Shell
.

Jeśli uruchamiasz Cloud Shell po raz pierwszy, zobaczysz ekran pośredni (część strony widoczna po przewinięciu) z opisem tego środowiska. W takim przypadku kliknij Dalej, a ten ekran nie będzie się już wyświetlać. Ten wyświetlany jednorazowo ekran wygląda tak:

Uzyskanie dostępu do środowiska Cloud Shell i połączenie się z nim powinno zająć tylko kilka chwil.

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. Większość zadań w tym module, a być może wszystkie, możesz wykonać w przeglądarce lub na Chromebooku.
Po połączeniu z Cloud Shell zobaczysz, że uwierzytelnianie zostało już przeprowadzone, a projekt jest już ustawiony na Twój identyfikator projektu.
- Aby potwierdzić, że uwierzytelnianie zostało przeprowadzone, uruchom w Cloud Shell to polecenie:
gcloud auth list
Wynik polecenia
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Aby potwierdzić, że polecenie gcloud zna Twój projekt, uruchom w Cloud Shell to polecenie:
gcloud config list project
Wynik polecenia
[core] project = <PROJECT_ID>
Jeśli nie, możesz go ustawić za pomocą tego polecenia:
gcloud config set project <PROJECT_ID>
Wynik polecenia
Updated property [core/project].
3. Tworzenie zbioru danych
Utwórz zbiór danych, który będzie zawierać tabele.
Co to jest zbiór danych?
Zbiór danych BigQuery to zbiór tabel. Wszystkie tabele w zbiorze danych są przechowywane w tej samej lokalizacji danych. Możesz też dołączyć niestandardowe ustawienia kontroli dostępu, aby ograniczyć dostęp do zbioru danych i jego tabel.
Tworzenie zbioru danych
W Cloud Shell użyj polecenia bq mk, aby utworzyć zbiór danych o nazwie „bq_load_codelab”.
bq mk bq_load_codelab
Wyświetlanie właściwości zbioru danych
Sprawdź, czy zbiór danych został utworzony, wyświetlając jego właściwości za pomocą polecenia bq show.
bq show bq_load_codelab
Zostaną wyświetlone dane wyjściowe podobne do tych:
Dataset my-project:bq_load_codelab
Last modified ACLs Labels
----------------- -------------------- --------
15 Jun 14:12:49 Owners:
projectOwners,
your-email@example.com
Writers:
projectWriters
Readers:
projectReaders
4. Tworzenie pliku danych
BigQuery może wczytywać dane w kilku formatach, w tym JSON rozdzielany znakiem nowej linii, Avro i CSV. Dla uproszczenia użyjesz pliku CSV.
Tworzenie pliku CSV
W Cloud Shell utwórz pusty plik CSV.
touch customer_transactions.csv
Otwórz plik CSV w edytorze kodu w Cloud Shell, uruchamiając polecenie cloudshell edit. Spowoduje to otwarcie nowego okna przeglądarki z edytorem kodu i panelem Cloud Shell.
cloudshell edit customer_transactions.csv
W edytorze kodu wpisz wartości rozdzielone przecinkami, które chcesz wczytać do BigQuery.
ID,Zipcode,Timestamp,Amount,Feedback,SKU c123,78757,2018-02-14 17:01:39Z,1.20,4.7,he4rt5 c456,10012,2018-03-14 15:09:26Z,53.60,3.1,ppiieee c123,78741,2018-04-01 05:59:47Z,5.98,2.0,ch0c0
Aby zapisać plik CSV, kliknij Plik > Edytuj.
5. Wczytaj dane
Użyj polecenia bq load, aby wczytać plik CSV do tabeli BigQuery.
bq load \
--source_format=CSV \
--skip_leading_rows=1 \
bq_load_codelab.customer_transactions \
./customer_transactions.csv \
id:string,zip:string,ttime:timestamp,amount:numeric,fdbk:float,sku:string
Użyto tych opcji:
--source_format=CSVpodczas analizowania pliku danych używa formatu danych CSV.--skip_leading_rows=1pomija pierwszy wiersz w pliku CSV, ponieważ jest to wiersz nagłówka.Bq_load_codelab.customer_transactions—the first positional argument—określa, do której tabeli mają zostać wczytane dane../customer_transactions.csv– drugi argument pozycyjny – określa, który plik ma zostać wczytany. Oprócz plików lokalnych polecenie bq load może wczytywać pliki z Cloud Storage za pomocągs://my_bucket/path/to/file URIs.- Schemat, który można zdefiniować w pliku schematu JSON lub jako listę rozdzieloną przecinkami. (Dla uproszczenia użyto listy rozdzielonej przecinkami).
W tabeli customer_transactions używasz tego schematu:
Id:string: identyfikator klientaZip:string: kod pocztowy w Stanach Zjednoczonych.Ttime:timestamp: data i godzina transakcji.Amount:numeric: kwota transakcji (kolumna liczbowa przechowuje dane w formie dziesiętnej, co jest przydatne w przypadku wartości pieniężnych).Fdbk:float: ocena z ankiety opinii o transakcji.Sku:string: identyfikator kupionego produktu
Sprawdzanie szczegółów tabeli
Sprawdź, czy tabela została wczytana, wyświetlając jej właściwości.
bq show bq_load_codelab.customer_transactions
Dane wyjściowe:
Table my-project:bq_load_codelab.customer_transactions
Last modified Schema Total Rows Total Bytes
----------------- --------------------- ------------ -------------
15 Jun 15:13:55 |- id: string 3 159
|- zip: string
|- ttime: timestamp
|- amount: numeric
|- fdbk: float
|- sku: string
6. Wysyłanie zapytania dotyczącego danych
Po wczytaniu danych możesz wysyłać do nich zapytania za pomocą interfejsu internetowego BigQuery, polecenia bq lub interfejsu API. Zapytania mogą łączyć Twoje dane z dowolnym zbiorem danych (lub zbiorami danych, o ile znajdują się w tej samej lokalizacji), do którego masz uprawnienia do odczytu.
Uruchom standardową wersję zapytania SQL, które złącza Twój zbiór danych ze zbiorem danych kodów pocztowych w USA i sumuje transakcje według stanu w USA. Aby wykonać zapytanie, użyj polecenia bq query.
bq query --nouse_legacy_sql ' SELECT SUM(c.amount) AS amount_total, z.state_code AS state_code FROM `bq_load_codelab.customer_transactions` c JOIN `bigquery-public-data.utility_us.zipcode_area` z ON c.zip = z.zipcode GROUP BY state_code '
To polecenie powinno wyświetlić dane wyjściowe podobne do tych:
Waiting on bqjob_r26...05a15b38_1 ... (1s) Current status: DONE +--------------+------------+ | amount_total | state_code | +--------------+------------+ | 53.6 | NY | | 7.18 | TX | +--------------+------------+
Wykonane zapytanie korzystało z publicznego i prywatnego zbioru danych. Więcej informacji znajdziesz w tej wersji zapytania z komentarzami:
#standardSQL SELECT /* Total of all transactions in the state. */ SUM(c.amount) AS amount_total, /* State corresponding to the transaction's zipcode. */ z.state_code AS state_code /* Query the table you just constructed. * Note: If you omit the project from the table ID, * the dataset is read from your project. */ FROM `bq_load_codelab.customer_transactions` c /* Join the table to the zipcode public dataset. */ JOIN `bigquery-public-data.utility_us.zipcode_area` z /* Find the state corresponding to the transaction's zipcode. */ ON c.zip = z.zipcode /* Group over all transactions by state. */ GROUP BY state_code
7. Czyszczenie danych
Usuń zbiór danych utworzony za pomocą polecenia bq rm. Użyj flagi -r, aby usunąć wszystkie tabele, które zawiera.
bq rm -r bq_load_codelab
8. Gratulacje!
Przesłaliśmy tabelę do BigQuery i wykonaliśmy na niej zapytanie.
Omówione tematy
- Korzystanie z narzędzia wiersza poleceń
bqdo interakcji z BigQuery. - łączenie danych i publicznego zbioru danych za pomocą zapytania BigQuery;
Co dalej?
Więcej informacji:
bqnarzędzie wiersza poleceń,- Inne sposoby wczytywania danych do BigQuery.
- Inne publiczne zbiory danych dostępne w BigQuery.
- Dane pogodowe, dane o przestępczości i inne typy danych w TIL z BigQuery.