Console 창
- gcloud: GCP를 위한 command-line tool . Cloud Shell에 설치되어 있다.
- 명령
gcloud auth list
- 현재 active 한 account name을 출력한다.
gcloud config list project
- project Id를 list 출력할 수 있다.
- 명령
- gsutil: 각종 util 명령을 위한 tool이다.
- 명령
gsutil cp gs://.../.../ .
- 특정 경로에서 데이터를 복사 후 현재 경로에 저장한다.
- 명령
-
bq: bigquery 내 있는 Dataset, Table, 데이터를 조회하기 위한 명령어 (DML, DDL 등)
-
명령
-
bq show bigquery-public-data:samples.shakespeare
- bigquery-public-data Dataset의 samples.shakespear Table에 대한 스키마 정보를 볼 수 있다.
-
bq help query
- query를 하는데 필요한 명령어들을 볼 수 있다.
- 아래는 query의 예시이다.
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'
- SQL문을 사용해 질의를 날릴 수 있다.
-
bq ls
- 현재 내 Project에 있는 dataset을 볼 수 있다.
bq ls bigquery-public-data:
- 이처럼 뒤에 Project Id를 쓰면 특정 Project Id의 dataset들을 볼 수 있다.
- 뿐만 아니라, 뒤에 dataset의 이름을 쓰면 dataset 내 있는 Table들을 볼수도 있다.
-
bq mk babynames
- babynames 라는 dataset을 만든다.
-
bq load babynames.names2010 yob2010.txt name:string,gender:string,count:integer
- babynames에 특정 데이터를 load 할 수 있다. 사용법은 아래와 같다.
bq load <dataset.table> <file> <schema>
-
bq rm -r babynames
- table 이나 dataset을 지울 수 있다.
-
-
Date-partitioned Table
-
partitiononed table은 table을 여러 segments들로 나누며 이를 partition이라 부른다.
- 파티션은 쉽게 관리할 수 있으며, 쿼리를 효율적으로 수행하며 비용을 낮출 수 있다.
- 보통은 날짜를 기준으로 partition을 많이 한다.
-
파티션이 없다면…
#standardSQL SELECT DISTINCT fullVisitorId, date, city, pageTitle FROM `data-to-insights.ecommerce.all_sessions_raw` WHERE date = '20180708' LIMIT 5
- 단순 위와같은 Query를 수행했을 때, date 중 20180708이 없더라도
data-to-insights.ecommerce.all_sessions_raw
에 있는 모든 데이터를 Scan 한다.
- 단순 위와같은 Query를 수행했을 때, date 중 20180708이 없더라도
-
Date-partitioned Table 만드는 방법
-
#standardSQL CREATE OR REPLACE TABLE ecommerce.partition_by_day PARTITION BY date_formatted OPTIONS( description="a table partitioned by date" ) AS SELECT DISTINCT PARSE_DATE("%Y%m%d", date) AS date_formatted, fullvisitorId FROM `data-to-insights.ecommerce.all_sessions_raw`
-
data-to-insights.ecommerce.all_sessions_raw
에 데이터를 partition_by_day 이름을 가진 Table로 만든다. -
Table을 만들 때 PARTITION By 를 통해 날짜 정보를 기반으로 Partition 한다.
- partition 된 테이블은 Detail에 들어가 어떤 Field를 기준으로 Partition 되었는지 볼 수 있다.
-
자동 만료되는 partitioned table
#standardSQL
CREATE OR REPLACE TABLE ecommerce.days_with_rain
PARTITION BY date
OPTIONS (
partition_expiration_days=60,
description="weather stations with precipitation, partitioned by day"
) AS
SELECT
DATE(CAST(year AS INT64), CAST(mo AS INT64), CAST(da AS INT64)) AS date,
(SELECT ANY_VALUE(name) FROM `bigquery-public-data.noaa_gsod.stations` AS stations
WHERE stations.usaf = stn) AS station_name, -- Stations may have multiple names
prcp
FROM `bigquery-public-data.noaa_gsod.gsod*` AS weather
WHERE prcp < 99.9 -- Filter unknown values
AND prcp > 0 -- Filter
AND CAST(_TABLE_SUFFIX AS int64) >= 2018
- Option에
partition_expiration_days
을 기록한다. - 위 예제는 60이므로, 60일 까지만 Date Partition을 유지한다.
Comments