bq ๋ช ๋ น์ค ๋๊ตฌ ์ดํด๋ณด๊ธฐ
bq ๋ช ๋ น์ค ๋๊ตฌ๋ BigQuery์ฉ Python ๊ธฐ๋ฐ ๋ช ๋ น์ค ๋๊ตฌ์ ๋๋ค. ์ด ํ์ด์ง์๋ bq ๋ช ๋ น์ค ๋๊ตฌ ์ฌ์ฉ์ ๋ํ ์ผ๋ฐ์ ์ธ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
๋ชจ๋ bq
๋ช
๋ น์ด ๋ฐ ํ๋๊ทธ์ ๋ํ ์์ธํ ๋ด์ฉ์ bq ๋ช
๋ น์ค ๋๊ตฌ ์ฐธ์กฐ๋ฅผ ํ์ธํ์ธ์.
์์ํ๊ธฐ ์ ์
bq ๋ช ๋ น์ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋จผ์ Google Cloud ์ฝ์์ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ฑฐ๋ ์ ํํด์ผ ํฉ๋๋ค.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
- BigQuery๋ ์ ํ๋ก์ ํธ์์ ์๋์ผ๋ก ์ฌ์ฉ ์ค์ ๋ฉ๋๋ค. ๊ธฐ์กด ํ๋ก์ ํธ์์ BigQuery๋ฅผ ํ์ฑํํ๋ ค๋ฉด ๋ค์์ผ๋ก ์ด๋ํฉ๋๋ค.
-
Enable the BigQuery API.
- (์ ํ์ฌํญ) ํ๋ก์ ํธ์ ๋ํ ๊ฒฐ์ ๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค. ๊ฒฐ์ ๋ฅผ ์ฌ์ฉ ์ค์ ํ๊ฑฐ๋ ์ ์ฉ์นด๋๋ฅผ ์ ๊ณตํ์ง ์๋ ๊ฒฝ์ฐ ์ด ๋ฌธ์์ ๋จ๊ณ๊ฐ ๊ณ์ ์๋ํฉ๋๋ค. BigQuery์์๋ ๋จ๊ณ๋ฅผ ์ํํ๊ธฐ ์ํ ์๋๋ฐ์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ BigQuery ์๋๋ฐ์ค ์ฌ์ฉ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Google Cloud ์ฝ์์์ bq ๋ช ๋ น์ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด Cloud Shell์ ํ์ฑํํฉ๋๋ค.
gcloud CLI์์ bq ๋ช ๋ น์ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด gcloud CLI ์ค์น ๋ฐ ๊ตฌ์ฑ์ ์ํํฉ๋๋ค.
- ์ ์ญ ํ๋๊ทธ๋ ๋ชจ๋ ๋ช ๋ น์ด์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๋ช ๋ น์ด๋ณ ํ๋๊ทธ๋ ํน์ ๋ช ๋ น์ด์ ์ ์ฉ๋ฉ๋๋ค.
--FLAG ARGUMENT
(์ด์ ์์์ ๊ฐ์ด)--FLAG=ARGUMENT
--FLAG='ARGUMENT'
--FLAG="ARGUMENT"
--FLAG 'ARGUMENT'
--FLAG "ARGUMENT"
FLAG
: ์ ์ญ ํ๋๊ทธ ๋๋ ๋ช ๋ น์ด๋ณ ํ๋๊ทธARGUMENT
: ํ๋๊ทธ ์ธ์bq query --use_legacy_sql=false 'QUERY'
๊ฐ์ดbq query
๋ช ๋ น์ด์ ์ฟผ๋ฆฌ๋ฅผ ํฌํจํฉ๋๋ค.QUERY
๋ฅผ ์ฟผ๋ฆฌ๋ก ๋ฐ๊ฟ๋๋ค.์ฟผ๋ฆฌ ๋ฌธ์์ด์ ํ์์ ์ง์ ํฉ๋๋ค.
์ฟผ๋ฆฌ ๋ด์ ์ถ๊ฐ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ ์ค์ธ ์ ธ(์: Bash ๋๋ PowerShell)์ ๋ฐ์ดํ ๊ท์น์ ๋ฐ๋ผ์ผ ํฉ๋๋ค.
๋ค์ ์์๋ Bash์ ์ผ๋ฐ์ ์ธ ์ ๊ทผ๋ฐฉ์์ ๋ณด์ฌ์ค๋๋ค. ์ฆ, ํฐ๋ฐ์ดํ๋ฅผ ์ฌ์ฉํ์ฌ ์ฟผ๋ฆฌ์์ ๋ฌธ์์ด ๋ฆฌํฐ๋ด์ ๋ํ๋ธ ๋ค์ ์ฟผ๋ฆฌ ์์ฒด๋ฅผ ์์๋ฐ์ดํ๋ก ๋ฌถ์ต๋๋ค.
'SELECT * FROM mydataset.mytable WHERE column1 = "value";'
๋ค๋ฅธ ์์น์์ ์ฟผ๋ฆฌ๋ฅผ ๋ณต์ฌํ๋ ๊ฒฝ์ฐ ์ฟผ๋ฆฌ์ ์ฃผ์๋ ์ญ์ ํด์ผ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์ Google Cloud ์ฝ์ ์ฟผ๋ฆฌ๋ฅผ ๋ณํํฉ๋๋ค.
-- count Shakespeare's use of the string "raisin" SELECT word, SUM(word_count) AS count FROM `bigquery-public-data`.samples.shakespeare WHERE word LIKE '%raisin%' GROUP BY word
๋ค์๊ณผ ๊ฐ์ด bq ๋ช ๋ น์ค ๋๊ตฌ ์ฟผ๋ฆฌ๋ก ๋ณํํฉ๋๋ค.
bq query --use_legacy_sql=false \ 'SELECT word, SUM(word_count) AS count FROM `bigquery-public-data`.samples.shakespeare WHERE word LIKE "%raisin%" GROUP BY word'
- ์ค์น๋ bq ๋ช
๋ น์ค ๋๊ตฌ ๋ฒ์ ์ ํ์ธํ๋ ค๋ฉด
bq version
์ ์ ๋ ฅํฉ๋๋ค. - ์ ์ฒด ๋ช
๋ น์ด ๋ชฉ๋ก์ ํ์ธํ๋ ค๋ฉด
bq help
๋ฅผ ์ ๋ ฅํฉ๋๋ค. - ์ ์ญ ํ๋๊ทธ ๋ชฉ๋ก์ ํ์ธํ๋ ค๋ฉด
bq --help
๋ฅผ ์ ๋ ฅํฉ๋๋ค. - ํน์ ๋ช
๋ น์ด์ ๋์๋ง์ ํ์ธํ๋ ค๋ฉด
bq help COMMAND
๋ฅผ ์ ๋ ฅํฉ๋๋ค. - ํน์ ๋ช
๋ น์ด ๋ฐ ์ ์ญ ํ๋๊ทธ ๋ชฉ๋ก์ ๋ํ ๋์๋ง์
bq COMMAND --help
๋ฅผ ์ ๋ ฅํฉ๋๋ค. - ํ์ผ ๋งจ ์์ ํค๋ ์์ด ์ ์ญ ํ๋๊ทธ๋ฅผ ๋ฐฐ์นํฉ๋๋ค.
- ๋ช ๋ น์ด๋ณ ํ๋๊ทธ์ ๊ฒฝ์ฐ ๋๊ดํธ ์์ ๋ช ๋ น์ด ์ด๋ฆ์ ์ ๋ ฅํ๊ณ ๊ทธ ์๋์ ๋ช ๋ น์ด๋ณ ํ๋๊ทธ๋ฅผ ํ ํ์ ํ๋์ฉ ์ถ๊ฐํฉ๋๋ค.
- ์ ์ญ ํ๋๊ทธ
--apilog
๋ฅผstdout
๋ก ์ค์ ํ์ฌ ๋๋ฒ๊น ์ถ๋ ฅ์Google Cloud ์ฝ์์ ์ธ์ํฉ๋๋ค. - ์ ์ญ ํ๋๊ทธ
--format
์prettyjson
์ผ๋ก ์ค์ ํ์ฌ ์ฌ๋์ด ์ฝ์ ์ ์๋ JSON ํ์์ผ๋ก ๋ช ๋ น์ด ๊ฒฐ๊ณผ๋ฅผ ํ์ํฉ๋๋ค. - ์ ์ญ ํ๋๊ทธ
--location
์US
๋ฉํฐ ๋ฆฌ์ ์์น๋ก ์ค์ ํฉ๋๋ค. query
๋ช ๋ น์ด๋ณ ํ๋๊ทธ--use_legacy_sql
์false
๋ก ์ค์ ํ์ฌ GoogleSQL์ ๊ธฐ๋ณธ ์ฟผ๋ฆฌ ๋ฌธ๋ฒ์ผ๋ก ์ง์ ํฉ๋๋ค.query
๋ช ๋ น์ด๋ณ ํ๋๊ทธ--max_rows
๋ฅผ100
์ผ๋ก ์ค์ ๋์ด ์ฟผ๋ฆฌ ์ถ๋ ฅ์ ํ ์๋ฅผ ์ ์ดํฉ๋๋ค.query
๋ช ๋ น์ด๋ณ ํ๋๊ทธ--maximum_bytes_billed
๋ฅผ 10,000,000๋ฐ์ดํธ(10MB)๋ก ์ค์ ํ์ฌ 10MB๊ฐ ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ์ฟผ๋ฆฌ๊ฐ ์คํจํ๋๋ก ํฉ๋๋ค.load
๋ช ๋ น์ด๋ณ ํ๋๊ทธ--destination_kms_key
๊ฐprojects/myproject/locations/mylocation/keyRings/myRing/cryptoKeys/myKey
๋ก ์ค์ ๋ฉ๋๋ค.- ๋ฐ์ดํฐ ์ธํธ ๋ง๋ค๊ธฐ
- ์คํค๋ง ์ ์๊ฐ ์๋ ๋น ํ ์ด๋ธ ๋ง๋ค๊ธฐ
- ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์์ ํ ์ด๋ธ ๋ง๋ค๊ธฐ
- ์์ง ์๊ฐ์ผ๋ก ํํฐ์ ์ ๋๋ ํ ์ด๋ธ ๋ง๋ค๊ธฐ
- ๋ทฐ ๋ง๋ค๊ธฐ
- Cloud Storage์์ Avro ๋ฐ์ดํฐ ๋ก๋
- Cloud Storage์์ JSON ๋ฐ์ดํฐ ๋ก๋
- Cloud Storage์์ CSV ๋ฐ์ดํฐ ๋ก๋
- ๋ก์ปฌ ํ์ผ์์ ๋ฐ์ดํฐ ๋ก๋
- JSON ์คํค๋ง ํ์ผ์ ์ฌ์ฉํ์ฌ ํ ์ด๋ธ ์ ์ ๋ง๋ค๊ธฐ
- Bigtable ๋ฐ์ดํฐ ์ฟผ๋ฆฌ
- Cloud Storage ๋ฐ์ดํฐ ์ฟผ๋ฆฌ
- Google Drive ๋ฐ์ดํฐ ์ฟผ๋ฆฌ
- Amazon S3 ์ ์ก ์ค์
- Campaign Manager ์ ์ก ์ค์
- Cloud Storage ์ ์ก ์ค์
- Google Ad Manager ์ ์ก ์ค์
- Google Ads ์ ์ก ์ค์
- Google ํ๋งค์ ์ผํฐ ์ ์ก ์ค์ (๋ฒ ํ)
- Google Play ์ ์ก ์ค์
- Search Ads 360 ์ ์ก ์ค์ (๋ฒ ํ)
- YouTube ์ฑ๋ ์ ์ก ์ค์
- YouTube ์ฝํ ์ธ ์์ ์ ์ ์ก ์ค์
- Amazon Redshift์์ ๋ฐ์ดํฐ ๋ง์ด๊ทธ๋ ์ด์
- Teradata์์ ๋ฐ์ดํฐ ๋ง์ด๊ทธ๋ ์ด์
๋ณด๋ด๊ณ ๋ฐ์ ์์ฒญ ํ์ธ.
--apilog=PATH_TO_FILE
ํ๋๊ทธ๋ฅผ ์ถ๊ฐํ์ฌ ์์ ๋ก๊ทธ๋ฅผ ๋ก์ปฌ ํ์ผ์ ์ ์ฅํฉ๋๋ค.PATH_TO_FILE
์ ๋ก๊ทธ๋ฅผ ์ ์ฅํ ๊ฒฝ๋ก๋ก ๋ฐ๊ฟ๋๋ค. bq ๋ช ๋ น์ค ๋๊ตฌ๋ ํ์ค REST ๊ธฐ๋ฐ API ํธ์ถ์ ์ํํ์ฌ ์๋ํ๋ฏ๋ก ๋ณด๋ ๋ฐ ์ ์ฉํฉ๋๋ค. ๋ํ ๋ฌธ์ ๋ณด๊ณ ์ ์ด ๋ก๊ทธ๋ฅผ ์ฒจ๋ถํ๋ ๊ฒ์ด ์ ์ฉํฉ๋๋ค. ๊ฒฝ๋ก ๋์-
๋๋stdout
๋ฅผ ์ฌ์ฉํ๋ฉด ๋ก๊ทธ๊ฐ Google Cloud ์ฝ์์ ์ถ๋ ฅ๋ฉ๋๋ค.--apilog
๋ฅผstderr
๋ก ์ค์ ํ๋ฉด ๋ก๊ทธ๊ฐ ํ์ค ์ค๋ฅ ํ์ผ๋ก ์ถ๋ ฅ๋ฉ๋๋ค. ๋ ๋ง์ ์์ฒญ์ ๋ก๊น ํ๋ ค๋ฉด--httplib2_debuglevel=LOG_LEVEL
ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ธ์.LOG_LEVEL
์ด ๋์์๋ก http ์์ฒญ์ ๋ํ ์ถ๊ฐ ์ ๋ณด๊ฐ ๋ก๊น ๋ฉ๋๋ค.๋ฌธ์ ํด๊ฒฐ. ์์ ์ํ๋ฅผ ํ์ธํ๊ฑฐ๋ ํ ์ด๋ธ ๋ฐ ๋ฐ์ดํฐ ์ธํธ์ ๊ฐ์ ๋ฆฌ์์ค์ ์์ธํ ์ ๋ณด๋ฅผ ๋ณด๋ ค๋ฉด
--format=prettyjson
ํ๋๊ทธ๋ฅผ ์ ๋ ฅํฉ๋๋ค. ์ด ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉดreason
์์ฑ์ ํฌํจํ์ฌ JSON ํ์์ ์๋ต์ด ์ถ๋ ฅ๋ฉ๋๋ค.reason
์์ฑ์ ์ฌ์ฉํ๋ฉด ๋ฌธ์ ํด๊ฒฐ ๋จ๊ณ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ์คํ ์ค ์ค๋ฅ์ ๊ดํ ์์ธํ ๋ด์ฉ์--debug_mode
ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ธ์.
Cloud Shell์์ bq
๋ช
๋ น์ด ์
๋ ฅ
Google Cloud ์ฝ์ ๋๋ Google Cloud CLI์์ Cloud Shell์ bq ๋ช ๋ น์ค ๋๊ตฌ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ ์ ์์ต๋๋ค.
ํ๋๊ทธ ๋ฐ ์ธ์ ์์น ์ง์
bq ๋ช ๋ น์ค ๋๊ตฌ๋ ๋ ๊ฐ์ง ์ข ๋ฅ์ ํ๋๊ทธ๋ฅผ ์ง์ํฉ๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ ์ ์ญ ํ๋๊ทธ์ ๋ช ๋ น์ด ๊ด๋ จ ํ๋๊ทธ ๋ชฉ๋ก์ bq ๋ช ๋ น์ค ๋๊ตฌ ์ฐธ์กฐ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
์ ์ญ ํ๋๊ทธ๋ฅผ bq
๋ช
๋ น์ด ์์ ๋ฐฐ์นํ ํ ๋ช
๋ น์ด๋ณ ํ๋๊ทธ๋ฅผ ํฌํจํฉ๋๋ค. ์ ์ญ ํ๋๊ทธ ๋๋ ๋ช
๋ น์ด๋ณ ํ๋๊ทธ๋ฅผ ์ฌ๋ฌ ๊ฐ ํฌํจํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
bq --location=us mk --reservation --project_id=project reservation_name
๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ช ๋ น์ด ์ธ์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
๋ค์์ ๋ฐ๊ฟ๋๋ค.
์ผ๋ถ ๋ช ๋ น์ด์์๋ ์ธ์๋ฅผ ์์ ๋ฐ์ดํ๋ ํฐ ๋ฐ์ดํ๋ก ๋ฌถ์ด์ผ ํฉ๋๋ค. ์ธ์์ ๊ณต๋ฐฑ, ์ผํ ๋๋ ๊ธฐํ ํน์ ๋ฌธ์๊ฐ ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐ๊ฐ ์ฃผ๋ก ์ฌ๊ธฐ์ ํด๋นํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
bq query --nouse_legacy_sql \ 'SELECT COUNT(*) FROM `bigquery-public-data`.samples.shakespeare'
๋ถ์ธ ๊ฐ์ด ์๋ ํ๋๊ทธ๋ ์ธ์ ์์ด ์ง์ ํ ์ ์์ต๋๋ค. true
๋๋ false
๋ฅผ ์ง์ ํ ๊ฒฝ์ฐ FLAG=ARGUMENT
ํ์์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์ ๋ช
๋ น์ด๋ ํ๋๊ทธ ์์ no
๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ถ์ธ ํ๋๊ทธ --use_legacy_sql
์ false๋ก ์ง์ ํฉ๋๋ค.
bq query --nouse_legacy_sql \ 'SELECT COUNT(*) FROM `bigquery-public-data`.samples.shakespeare'
๋๋ ํ๋๊ทธ์ ์ธ์๋ก false
๋ฅผ ์ง์ ํ๋ ค๋ฉด ๋ค์์ ์
๋ ฅํฉ๋๋ค.
bq query --use_legacy_sql=false \ 'SELECT COUNT(*) FROM `bigquery-public-data`.samples.shakespeare'
bq ๋ช ๋ น์ค ๋๊ตฌ์์ ์ฟผ๋ฆฌ ์คํ
Google Cloud ์ฝ์์์ ๊ฐ๋ฐํ ์ฟผ๋ฆฌ๋ฅผ ๊ฐ์ ธ์ bq ๋ช ๋ น์ค ๋๊ตฌ์์ ์คํํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์์ธํ ๋ด์ฉ์ ๋ํํ ๋ฐ ์ผ๊ด ์ฟผ๋ฆฌ ์์ ์คํ์ ์ฐธ์กฐํ์ธ์.
๋์๋ง ๋ณด๊ธฐ
bq ๋ช ๋ น์ค ๋๊ตฌ์ ๋ํ ๋์๋ง์ ๋ณด๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ธ์.
COMMAND
๋ฅผ ๋์์ด ํ์ํ ๋ช
๋ น์ด๋ก ๋ฐ๊ฟ๋๋ค.
๋ช ๋ น์ค ํ๋๊ทธ ๊ธฐ๋ณธ๊ฐ ์ค์
bq ๋ช
๋ น์ค ๋๊ตฌ์ ๊ตฌ์ฑ ํ์ผ์ธ .bigqueryrc
์ ๋ช
๋ น์ค ํ๋๊ทธ๋ฅผ ํฌํจํ์ฌ ๋ช
๋ น์ค ํ๋๊ทธ์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ ์ต์
์ ๊ตฌ์ฑํ๋ ค๋ฉด ๋จผ์ .bigqueryrc
ํ์ผ์ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ์ํ๋ ํ
์คํธ ํธ์ง๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ์ ๋ง๋ค ์ ์์ต๋๋ค. .bigqueryrc
ํ์ผ์ ๋ง๋ ํ --bigqueryrc
์ ์ญ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
--bigqueryrc
ํ๋๊ทธ๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด BIGQUERYRC
ํ๊ฒฝ ๋ณ์๊ฐ ์ฌ์ฉ๋๋ฉฐ ์ด๋ฅผ ์ง์ ํ์ง ์์ผ๋ฉด ๊ฒฝ๋ก ~/.bigqueryrc
๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๊ธฐ๋ณธ ๊ฒฝ๋ก๋ $HOME/.bigqueryrc
์
๋๋ค.
.bigqueryrc
์ ํ๋๊ทธ ์ถ๊ฐ
.bigqueryrc
์ ๋ช
๋ น์ค ํ๋๊ทธ์ ๊ธฐ๋ณธ๊ฐ์ ์ถ๊ฐํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
--apilog=stdout --format=prettyjson --location=US [query] --use_legacy_sql=false --max_rows=100 --maximum_bytes_billed=10000000 [load] --destination_kms_key=projects/myproject/locations/mylocation/keyRings/myRing/cryptoKeys/myKey
์์ ์์์์๋ ๋ค์ ํ๋๊ทธ์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํฉ๋๋ค.
๋ํํ ์ ธ์์ bq ๋ช ๋ น์ค ๋๊ตฌ ์คํ
๋ช
๋ น์ด์ bq
ํ๋ฆฌํฝ์ค๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๋ํํ ์
ธ์์ bq ๋ช
๋ น์ค ๋๊ตฌ๋ฅผ ์คํํ ์ ์์ต๋๋ค. ๋ํํ ๋ชจ๋๋ฅผ ์์ํ๋ ค๋ฉด bq shell
์ ์
๋ ฅํฉ๋๋ค.
์
ธ์ด ์์๋๋ฉด ํ๋กฌํํธ๊ฐ ๊ธฐ๋ณธ ํ๋ก์ ํธ์ ID๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
๋ํํ ๋ชจ๋๋ฅผ ์ข
๋ฃํ๋ ค๋ฉด exit
๋ฅผ ์
๋ ฅํฉ๋๋ค.
์คํฌ๋ฆฝํธ์์ bq ๋ช ๋ น์ค ๋๊ตฌ ์คํ
์คํฌ๋ฆฝํธ์์ Google Cloud CLI ๋ช
๋ น์ด๋ฅผ ์คํํ ์ ์๋ ๊ฒ์ฒ๋ผ ์คํฌ๋ฆฝํธ์์ bq ๋ช
๋ น์ค ๋๊ตฌ๋ฅผ ์คํํ ์ ์์ต๋๋ค. ๋ค์์ bash ์คํฌ๋ฆฝํธ์ gcloud
๋ฐ bq
๋ช
๋ น์ด ์์์
๋๋ค.
#!/bin/bash
gcloud config set project myProject
bq query --use_legacy_sql=false --destination_table=myDataset.myTable \
'SELECT
word,
SUM(word_count) AS count
FROM
`bigquery-public-data`.samples.shakespeare
WHERE
word LIKE "%raisin%"
GROUP BY
word'
์๋น์ค ๊ณ์ ์์ bq
๋ช
๋ น์ด ์คํ
์๋น์ค ๊ณ์ ์ ์ฌ์ฉํ์ฌ ์น์ธ๋ API ํธ์ถ์ ์ํํ๊ฑฐ๋ ์๋์ผ๋ก ์ฟผ๋ฆฌ ์์ ์ ์คํํ ์ ์์ต๋๋ค. bq ๋ช ๋ น์ค ๋๊ตฌ์์ ์๋น์ค ๊ณ์ ์ ์ฌ์ฉํ๋ ค๋ฉด ์๋น์ค ๊ณ์ ์์ Google Cloud ์ ๋ํ ์ก์ธ์ค๋ฅผ ์น์ธํ์ธ์. ์์ธํ ๋ด์ฉ์ gcloud auth activate-service-account๋ฅผ ์ฐธ์กฐํ์ธ์.
์๋น์ค ๊ณ์ ๊ฐ์ฅ์ ์ฌ์ฉํ์ฌ bq
๋ช
๋ น์ด ์คํ์ ์์ํ๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud config set auth/impersonate_service_account SERVICE_ACCOUNT_NAME
SERVICE_ACCOUNT_NAME
์ ์๋น์ค ๊ณ์ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.
์ด์ ์ฌ์ฉ์๊ฐ ์คํํ๋ bq
๋ช
๋ น์ด์์ ์๋น์ค ๊ณ์ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์๋น์ค ๊ณ์ ์์ bq
๋ช
๋ น์ด ์คํ์ ์ค์งํ๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
gcloud config unset auth/impersonate_service_account
์
BigQuery ๋ฌธ์์ ์๋ด ๊ฐ์ด๋ ์น์ ์ ๋ช ๋ น์ค ์์๊ฐ ์์ต๋๋ค. ์ด ์น์ ์๋ BigQuery ๋ฆฌ์์ค ๋ง๋ค๊ธฐ, ๊ฐ์ ธ์ค๊ธฐ, ๋์ด, ์ญ์ , ์์ ๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ๋ช ๋ น์ค ์์ ์ ๋ํ ๋งํฌ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
๋ฆฌ์์ค ๋ง๋ค๊ธฐ
bq ๋ช ๋ น์ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ค์ ํญ๋ชฉ์ ์ฐธ์กฐํ์ธ์.
๋ฐ์ดํฐ ํ์ผ์ ์ฌ์ฉํ์ฌ ํ ์ด๋ธ์ ๋ง๋๋ ์์ ๋ํด์๋ ๋ฐ์ดํฐ ๋ก๋๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ฆฌ์์ค ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ
bq ๋ช ๋ น์ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ๋ค์ ํญ๋ชฉ์ ์ฐธ์กฐํ์ธ์.
๋ฆฌ์์ค ๋์ด
bq ๋ช ๋ น์ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค๋ฅผ ๋์ดํ๋ ๋ฐฉ๋ฒ์ ๋ค์ ํญ๋ชฉ์ ์ฐธ์กฐํ์ธ์.
์์ ๋์ด
bq ๋ช ๋ น์ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ ๋์ดํ๋ ๋ฐฉ๋ฒ์ ๋ค์ ํญ๋ชฉ์ ์ฐธ์กฐํ์ธ์.
๋ฆฌ์์ค ์ ๋ฐ์ดํธ
bq ๋ช ๋ น์ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค๋ฅผ ์ ๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ ๋ค์ ํญ๋ชฉ์ ์ฐธ์กฐํ์ธ์.
๋ฐ์ดํฐ ๋ก๋
bq ๋ช ๋ น์ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๋ ๋ฐฉ๋ฒ์ ๋ค์ ํญ๋ชฉ์ ์ฐธ์กฐํ์ธ์.
๋ฐ์ดํฐ ์ฟผ๋ฆฌ
bq ๋ช ๋ น์ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ค์ ํญ๋ชฉ์ ์ฐธ์กฐํ์ธ์.
์ธ๋ถ ๋ฐ์ดํฐ ์์ค ์ฌ์ฉ
bq ๋ช ๋ น์ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ธ๋ถ ๋ฐ์ดํฐ ์์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ค์ ํญ๋ชฉ์ ์ฐธ์กฐํ์ธ์.
๋ฐ์ดํฐ ๋ด๋ณด๋ด๊ธฐ
bq ๋ช ๋ น์ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ๋ค์ ํญ๋ชฉ์ ์ฐธ์กฐํ์ธ์.
BigQuery Data Transfer Service ์ฌ์ฉ
BigQuery Data Transfer Service์์ bq ๋ช ๋ น์ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ค์ ํญ๋ชฉ์ ์ฐธ์กฐํ์ธ์.
bq ๋ช ๋ น์ค ๋๊ตฌ ๋ฌธ์ ํด๊ฒฐ
์ด ์น์ ์์๋ bq ๋ช ๋ น์ค ๋๊ตฌ ๊ด๋ จ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
gcloud CLI๋ฅผ ์ต์ ์ํ๋ก ์ ์ง
Google Cloud CLI์์ bq ๋ช ๋ น์ค ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ gcloud CLI ์ค์น๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ์ฌ bq ๋ช ๋ น์ค ๋๊ตฌ์ ์ต์ ๊ธฐ๋ฅ๊ณผ ์์ ์ด ์๋์ง ํ์ธํ์ธ์. ์ต์ ๋ฒ์ ์ gcloud CLI๋ฅผ ์คํ ์ค์ธ์ง ํ์ธํ๋ ค๋ฉด Cloud Shell์์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํฉ๋๋ค.
gcloud components list
์ถ๋ ฅ์ ์ฒ์ ๋ ์ค์๋ ํ์ฌ gcloud CLI ์ค์น์ ๋ฒ์ ๋ฒํธ์ ์ต์ gcloud CLI์ ๋ฒ์ ๋ฒํธ๊ฐ ํ์๋ฉ๋๋ค. ๋ฒ์ ์ด ์ต์ ์ํ๊ฐ ์๋ ๊ฒฝ์ฐ Cloud Shell์์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ gcloud CLI ์ค์น๋ฅผ ์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค.
gcloud components update
๋๋ฒ๊น
๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ bq ๋ช ๋ น์ค ๋๊ตฌ๋ฅผ ๋๋ฒ๊น ํ ์ ์์ต๋๋ค.