Created
January 14, 2020 03:55
-
-
Save polleyg/d79a5c928b201cb67a999c47d2c30049 to your computer and use it in GitHub Desktop.
Load ~1TB (~4.5B rows) from GCS into BigQuery (24 tables)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Load into BQ using the Fivetran public bucket with TPC data (approx 1TB and 4B rows). | |
# It creates 24 tables in BigQuery. Plug in your details to run. If "LOAD_SYNC" is changed | |
# to 'true', then each load job (24 of them) will be fired off synchronously and be polled | |
# for completion before firing off the next one. Leaving it 'false' will fire of all 24 load | |
# jobs to execute in paralell. You can monitor the status of the jobs from the BigQuery UI or | |
# via the bq command line tool. It takes 6m-8m to load all 24 tables. | |
# | |
# more info: https://fivetran.com/blog/warehouse-benchmark && https://github.com/fivetran/benchmark | |
export GCP_PROJECT_ID=<YOUR_GCP_PROJECT_ID> | |
export GCS_BUCKET=fivetran-benchmark/tpcds_1000_dat | |
export BQ_DATASET=<YOUR_BQ_DATASET_ID> | |
export LOAD_SYNC=false | |
set -e | |
echo project id: $GCP_PROJECT_ID load path: $GCS_BUCKET >&2 | |
bq --dataset_id=${BQ_DATASET} load --sync=${LOAD_SYNC} --field_delimiter '|' --null_marker '' --ignore_unknown_values ${BQ_DATASET}.call_center gs://${GCS_BUCKET}/call_center/* \ | |
cc_call_center_sk:integer,\ | |
cc_call_center_id:string,\ | |
cc_rec_start_date:string,\ | |
cc_rec_end_date:string,\ | |
cc_closed_date_sk:integer,\ | |
cc_open_date_sk:integer,\ | |
cc_name:string,\ | |
cc_class:string,\ | |
cc_employees:integer,\ | |
cc_sq_ft:integer,\ | |
cc_hours:string,\ | |
cc_manager:string,\ | |
cc_mkt_id:integer,\ | |
cc_mkt_class:string,\ | |
cc_mkt_desc:string,\ | |
cc_market_manager:string,\ | |
cc_division:integer,\ | |
cc_division_name:string,\ | |
cc_company:integer,\ | |
cc_company_name:string,\ | |
cc_street_number:string,\ | |
cc_street_name:string,\ | |
cc_street_type:string,\ | |
cc_suite_number:string,\ | |
cc_city:string,\ | |
cc_county:string,\ | |
cc_state:string,\ | |
cc_zip:string,\ | |
cc_country:string,\ | |
cc_gmt_offset:float,\ | |
cc_tax_percentage:float | |
bq --dataset_id=${BQ_DATASET} load --sync=${LOAD_SYNC} --field_delimiter '|' --null_marker '' --ignore_unknown_values ${BQ_DATASET}.catalog_page gs://${GCS_BUCKET}/catalog_page/* \ | |
cp_catalog_page_sk:integer,\ | |
cp_catalog_page_id:string,\ | |
cp_start_date_sk:integer,\ | |
cp_end_date_sk:integer,\ | |
cp_department:string,\ | |
cp_catalog_number:integer,\ | |
cp_catalog_page_number:integer,\ | |
cp_description:string,\ | |
cp_type:string | |
bq --dataset_id=${BQ_DATASET} load --sync=${LOAD_SYNC} --field_delimiter '|' --null_marker '' --ignore_unknown_values ${BQ_DATASET}.catalog_returns gs://${GCS_BUCKET}/catalog_returns/* \ | |
cr_returned_date_sk:integer,\ | |
cr_returned_time_sk:integer,\ | |
cr_item_sk:integer,\ | |
cr_refunded_customer_sk:integer,\ | |
cr_refunded_cdemo_sk:integer,\ | |
cr_refunded_hdemo_sk:integer,\ | |
cr_refunded_addr_sk:integer,\ | |
cr_returning_customer_sk:integer,\ | |
cr_returning_cdemo_sk:integer,\ | |
cr_returning_hdemo_sk:integer,\ | |
cr_returning_addr_sk:integer,\ | |
cr_call_center_sk:integer,\ | |
cr_catalog_page_sk:integer,\ | |
cr_ship_mode_sk:integer,\ | |
cr_warehouse_sk:integer,\ | |
cr_reason_sk:integer,\ | |
cr_order_number:integer,\ | |
cr_return_quantity:integer,\ | |
cr_return_amount:float,\ | |
cr_return_tax:float,\ | |
cr_return_amt_inc_tax:float,\ | |
cr_fee:float,\ | |
cr_return_ship_cost:float,\ | |
cr_refunded_cash:float,\ | |
cr_reversed_charge:float,\ | |
cr_store_credit:float,\ | |
cr_net_loss:float | |
bq --dataset_id=${BQ_DATASET} load --sync=${LOAD_SYNC} --field_delimiter '|' --null_marker '' --ignore_unknown_values ${BQ_DATASET}.catalog_sales gs://${GCS_BUCKET}/catalog_sales/* \ | |
cs_sold_date_sk:integer,\ | |
cs_sold_time_sk:integer,\ | |
cs_ship_date_sk:integer,\ | |
cs_bill_customer_sk:integer,\ | |
cs_bill_cdemo_sk:integer,\ | |
cs_bill_hdemo_sk:integer,\ | |
cs_bill_addr_sk:integer,\ | |
cs_ship_customer_sk:integer,\ | |
cs_ship_cdemo_sk:integer,\ | |
cs_ship_hdemo_sk:integer,\ | |
cs_ship_addr_sk:integer,\ | |
cs_call_center_sk:integer,\ | |
cs_catalog_page_sk:integer,\ | |
cs_ship_mode_sk:integer,\ | |
cs_warehouse_sk:integer,\ | |
cs_item_sk:integer,\ | |
cs_promo_sk:integer,\ | |
cs_order_number:integer,\ | |
cs_quantity:integer,\ | |
cs_wholesale_cost:float,\ | |
cs_list_price:float,\ | |
cs_sales_price:float,\ | |
cs_ext_discount_amt:float,\ | |
cs_ext_sales_price:float,\ | |
cs_ext_wholesale_cost:float,\ | |
cs_ext_list_price:float,\ | |
cs_ext_tax:float,\ | |
cs_coupon_amt:float,\ | |
cs_ext_ship_cost:float,\ | |
cs_net_paid:float,\ | |
cs_net_paid_inc_tax:float,\ | |
cs_net_paid_inc_ship:float,\ | |
cs_net_paid_inc_ship_tax:float,\ | |
cs_net_profit:float | |
bq --dataset_id=${BQ_DATASET} load --sync=${LOAD_SYNC} --field_delimiter '|' --null_marker '' --ignore_unknown_values ${BQ_DATASET}.customer_address gs://${GCS_BUCKET}/customer_address/* \ | |
ca_address_sk:integer,\ | |
ca_address_id:string,\ | |
ca_street_number:string,\ | |
ca_street_name:string,\ | |
ca_street_type:string,\ | |
ca_suite_number:string,\ | |
ca_city:string,\ | |
ca_county:string,\ | |
ca_state:string,\ | |
ca_zip:string,\ | |
ca_country:string,\ | |
ca_gmt_offset:float,\ | |
ca_location_type:string | |
bq --dataset_id=${BQ_DATASET} load --sync=${LOAD_SYNC} --field_delimiter '|' --null_marker '' --ignore_unknown_values ${BQ_DATASET}.customer_demographics gs://${GCS_BUCKET}/customer_demographics/* \ | |
cd_demo_sk:integer,\ | |
cd_gender:string,\ | |
cd_marital_status:string,\ | |
cd_education_status:string,\ | |
cd_purchase_estimate:integer,\ | |
cd_credit_rating:string,\ | |
cd_dep_count:integer,\ | |
cd_dep_employed_count:integer,\ | |
cd_dep_college_count:integer | |
bq --dataset_id=${BQ_DATASET} load --sync=${LOAD_SYNC} --field_delimiter '|' --null_marker '' --ignore_unknown_values ${BQ_DATASET}.customer gs://${GCS_BUCKET}/customer/* \ | |
c_customer_sk:integer,\ | |
c_customer_id:string,\ | |
c_current_cdemo_sk:integer,\ | |
c_current_hdemo_sk:integer,\ | |
c_current_addr_sk:integer,\ | |
c_first_shipto_date_sk:integer,\ | |
c_first_sales_date_sk:integer,\ | |
c_salutation:string,\ | |
c_first_name:string,\ | |
c_last_name:string,\ | |
c_preferred_cust_flag:string,\ | |
c_birth_day:integer,\ | |
c_birth_month:integer,\ | |
c_birth_year:integer,\ | |
c_birth_country:string,\ | |
c_login:string,\ | |
c_email_address:string,\ | |
c_last_review_date:string | |
bq --dataset_id=${BQ_DATASET} load --sync=${LOAD_SYNC} --field_delimiter '|' --null_marker '' --ignore_unknown_values ${BQ_DATASET}.date_dim gs://${GCS_BUCKET}/date_dim/* \ | |
d_date_sk:integer,\ | |
d_date_id:string,\ | |
d_date:string,\ | |
d_month_seq:integer,\ | |
d_week_seq:integer,\ | |
d_quarter_seq:integer,\ | |
d_year:integer,\ | |
d_dow:integer,\ | |
d_moy:integer,\ | |
d_dom:integer,\ | |
d_qoy:integer,\ | |
d_fy_year:integer,\ | |
d_fy_quarter_seq:integer,\ | |
d_fy_week_seq:integer,\ | |
d_day_name:string,\ | |
d_quarter_name:string,\ | |
d_holiday:string,\ | |
d_weekend:string,\ | |
d_following_holiday:string,\ | |
d_first_dom:integer,\ | |
d_last_dom:integer,\ | |
d_same_day_ly:integer,\ | |
d_same_day_lq:integer,\ | |
d_current_day:string,\ | |
d_current_week:string,\ | |
d_current_month:string,\ | |
d_current_quarter:string,\ | |
d_current_year:string | |
bq --dataset_id=${BQ_DATASET} load --sync=${LOAD_SYNC} --field_delimiter '|' --null_marker '' --ignore_unknown_values ${BQ_DATASET}.household_demographics gs://${GCS_BUCKET}/household_demographics/* \ | |
hd_demo_sk:integer,\ | |
hd_income_band_sk:integer,\ | |
hd_buy_potential:string,\ | |
hd_dep_count:integer,\ | |
hd_vehicle_count:integer | |
bq --dataset_id=${BQ_DATASET} load --sync=${LOAD_SYNC} --field_delimiter '|' --null_marker '' --ignore_unknown_values ${BQ_DATASET}.income_band gs://${GCS_BUCKET}/income_band/* \ | |
ib_income_band_sk:integer,\ | |
ib_lower_bound:integer,\ | |
ib_upper_bound:integer | |
bq --dataset_id=${BQ_DATASET} load --sync=${LOAD_SYNC} --field_delimiter '|' --null_marker '' --ignore_unknown_values ${BQ_DATASET}.inventory gs://${GCS_BUCKET}/inventory/* \ | |
inv_date_sk:integer,\ | |
inv_item_sk:integer,\ | |
inv_warehouse_sk:integer,\ | |
inv_quantity_on_hand:integer | |
bq --dataset_id=${BQ_DATASET} load --sync=${LOAD_SYNC} --field_delimiter '|' --null_marker '' --ignore_unknown_values ${BQ_DATASET}.item gs://${GCS_BUCKET}/item/* \ | |
i_item_sk:integer,\ | |
i_item_id:string,\ | |
i_rec_start_date:string,\ | |
i_rec_end_date:string,\ | |
i_item_desc:string,\ | |
i_current_price:float,\ | |
i_wholesale_cost:float,\ | |
i_brand_id:integer,\ | |
i_brand:string,\ | |
i_class_id:integer,\ | |
i_class:string,\ | |
i_category_id:integer,\ | |
i_category:string,\ | |
i_manufact_id:integer,\ | |
i_manufact:string,\ | |
i_size:string,\ | |
i_formulation:string,\ | |
i_color:string,\ | |
i_units:string,\ | |
i_container:string,\ | |
i_manager_id:integer,\ | |
i_product_name:string | |
bq --dataset_id=${BQ_DATASET} load --sync=${LOAD_SYNC} --field_delimiter '|' --null_marker '' --ignore_unknown_values ${BQ_DATASET}.promotion gs://${GCS_BUCKET}/promotion/* \ | |
p_promo_sk:integer,\ | |
p_promo_id:string,\ | |
p_start_date_sk:integer,\ | |
p_end_date_sk:integer,\ | |
p_item_sk:integer,\ | |
p_cost:float,\ | |
p_response_target:integer,\ | |
p_promo_name:string,\ | |
p_channel_dmail:string,\ | |
p_channel_email:string,\ | |
p_channel_catalog:string,\ | |
p_channel_tv:string,\ | |
p_channel_radio:string,\ | |
p_channel_press:string,\ | |
p_channel_event:string,\ | |
p_channel_demo:string,\ | |
p_channel_details:string,\ | |
p_purpose:string,\ | |
p_discount_active:string | |
bq --dataset_id=${BQ_DATASET} load --sync=${LOAD_SYNC} --field_delimiter '|' --null_marker '' --ignore_unknown_values ${BQ_DATASET}.reason gs://${GCS_BUCKET}/reason/* \ | |
r_reason_sk:integer,\ | |
r_reason_id:string,\ | |
r_reason_desc:string | |
bq --dataset_id=${BQ_DATASET} load --sync=${LOAD_SYNC} --field_delimiter '|' --null_marker '' --ignore_unknown_values ${BQ_DATASET}.ship_mode gs://${GCS_BUCKET}/ship_mode/* \ | |
sm_ship_mode_sk:integer,\ | |
sm_ship_mode_id:string,\ | |
sm_type:string,\ | |
sm_code:string,\ | |
sm_carrier:string,\ | |
sm_contract:string | |
bq --dataset_id=${BQ_DATASET} load --sync=${LOAD_SYNC} --field_delimiter '|' --null_marker '' --ignore_unknown_values ${BQ_DATASET}.store_returns gs://${GCS_BUCKET}/store_returns/* \ | |
sr_returned_date_sk:integer,\ | |
sr_return_time_sk:integer,\ | |
sr_item_sk:integer,\ | |
sr_customer_sk:integer,\ | |
sr_cdemo_sk:integer,\ | |
sr_hdemo_sk:integer,\ | |
sr_addr_sk:integer,\ | |
sr_store_sk:integer,\ | |
sr_reason_sk:integer,\ | |
sr_ticket_number:integer,\ | |
sr_return_quantity:integer,\ | |
sr_return_amt:float,\ | |
sr_return_tax:float,\ | |
sr_return_amt_inc_tax:float,\ | |
sr_fee:float,\ | |
sr_return_ship_cost:float,\ | |
sr_refunded_cash:float,\ | |
sr_reversed_charge:float,\ | |
sr_store_credit:float,\ | |
sr_net_loss:float | |
bq --dataset_id=${BQ_DATASET} load --sync=${LOAD_SYNC} --field_delimiter '|' --null_marker '' --ignore_unknown_values ${BQ_DATASET}.store_sales gs://${GCS_BUCKET}/store_sales/* \ | |
ss_sold_date_sk:integer,\ | |
ss_sold_time_sk:integer,\ | |
ss_item_sk:integer,\ | |
ss_customer_sk:integer,\ | |
ss_cdemo_sk:integer,\ | |
ss_hdemo_sk:integer,\ | |
ss_addr_sk:integer,\ | |
ss_store_sk:integer,\ | |
ss_promo_sk:integer,\ | |
ss_ticket_number:integer,\ | |
ss_quantity:integer,\ | |
ss_wholesale_cost:float,\ | |
ss_list_price:float,\ | |
ss_sales_price:float,\ | |
ss_ext_discount_amt:float,\ | |
ss_ext_sales_price:float,\ | |
ss_ext_wholesale_cost:float,\ | |
ss_ext_list_price:float,\ | |
ss_ext_tax:float,\ | |
ss_coupon_amt:float,\ | |
ss_net_paid:float,\ | |
ss_net_paid_inc_tax:float,\ | |
ss_net_profit:float | |
bq --dataset_id=${BQ_DATASET} load --sync=${LOAD_SYNC} --field_delimiter '|' --null_marker '' --ignore_unknown_values ${BQ_DATASET}.store gs://${GCS_BUCKET}/store/* \ | |
s_store_sk:integer,\ | |
s_store_id:string,\ | |
s_rec_start_date:string,\ | |
s_rec_end_date:string,\ | |
s_closed_date_sk:integer,\ | |
s_store_name:string,\ | |
s_number_employees:integer,\ | |
s_floor_space:integer,\ | |
s_hours:string,\ | |
s_manager:string,\ | |
s_market_id:integer,\ | |
s_geography_class:string,\ | |
s_market_desc:string,\ | |
s_market_manager:string,\ | |
s_division_id:integer,\ | |
s_division_name:string,\ | |
s_company_id:integer,\ | |
s_company_name:string,\ | |
s_street_number:string,\ | |
s_street_name:string,\ | |
s_street_type:string,\ | |
s_suite_number:string,\ | |
s_city:string,\ | |
s_county:string,\ | |
s_state:string,\ | |
s_zip:string,\ | |
s_country:string,\ | |
s_gmt_offset:float,\ | |
s_tax_precentage:float | |
bq --dataset_id=${BQ_DATASET} load --sync=${LOAD_SYNC} --field_delimiter '|' --null_marker '' --ignore_unknown_values ${BQ_DATASET}.time_dim gs://${GCS_BUCKET}/time_dim/* \ | |
t_time_sk:integer,\ | |
t_time_id:string,\ | |
t_time:integer,\ | |
t_hour:integer,\ | |
t_minute:integer,\ | |
t_second:integer,\ | |
t_am_pm:string,\ | |
t_shift:string,\ | |
t_sub_shift:string,\ | |
t_meal_time:string | |
bq --dataset_id=${BQ_DATASET} load --sync=${LOAD_SYNC} --field_delimiter '|' --null_marker '' --ignore_unknown_values ${BQ_DATASET}.warehouse gs://${GCS_BUCKET}/warehouse/* \ | |
w_warehouse_sk:integer,\ | |
w_warehouse_id:string,\ | |
w_warehouse_name:string,\ | |
w_warehouse_sq_ft:integer,\ | |
w_street_number:string,\ | |
w_street_name:string,\ | |
w_street_type:string,\ | |
w_suite_number:string,\ | |
w_city:string,\ | |
w_county:string,\ | |
w_state:string,\ | |
w_zip:string,\ | |
w_country:string,\ | |
w_gmt_offset:float | |
bq --dataset_id=${BQ_DATASET} load --sync=${LOAD_SYNC} --field_delimiter '|' --null_marker '' --ignore_unknown_values ${BQ_DATASET}.web_page gs://${GCS_BUCKET}/web_page/* \ | |
wp_web_page_sk:integer,\ | |
wp_web_page_id:string,\ | |
wp_rec_start_date:string,\ | |
wp_rec_end_date:string,\ | |
wp_creation_date_sk:integer,\ | |
wp_access_date_sk:integer,\ | |
wp_autogen_flag:string,\ | |
wp_customer_sk:integer,\ | |
wp_url:string,\ | |
wp_type:string,\ | |
wp_char_count:integer,\ | |
wp_link_count:integer,\ | |
wp_image_count:integer,\ | |
wp_max_ad_count:integer | |
bq --dataset_id=${BQ_DATASET} load --sync=${LOAD_SYNC} --field_delimiter '|' --null_marker '' --ignore_unknown_values ${BQ_DATASET}.web_returns gs://${GCS_BUCKET}/web_returns/* \ | |
wr_returned_date_sk:integer,\ | |
wr_returned_time_sk:integer,\ | |
wr_item_sk:integer,\ | |
wr_refunded_customer_sk:integer,\ | |
wr_refunded_cdemo_sk:integer,\ | |
wr_refunded_hdemo_sk:integer,\ | |
wr_refunded_addr_sk:integer,\ | |
wr_returning_customer_sk:integer,\ | |
wr_returning_cdemo_sk:integer,\ | |
wr_returning_hdemo_sk:integer,\ | |
wr_returning_addr_sk:integer,\ | |
wr_web_page_sk:integer,\ | |
wr_reason_sk:integer,\ | |
wr_order_number:integer,\ | |
wr_return_quantity:integer,\ | |
wr_return_amt:float,\ | |
wr_return_tax:float,\ | |
wr_return_amt_inc_tax:float,\ | |
wr_fee:float,\ | |
wr_return_ship_cost:float,\ | |
wr_refunded_cash:float,\ | |
wr_reversed_charge:float,\ | |
wr_GCP_PROJECT_ID_credit:float,\ | |
wr_net_loss:float | |
bq --dataset_id=${BQ_DATASET} load --sync=${LOAD_SYNC} --field_delimiter '|' --null_marker '' --ignore_unknown_values ${BQ_DATASET}.web_sales gs://${GCS_BUCKET}/web_sales/* \ | |
ws_sold_date_sk:integer,\ | |
ws_sold_time_sk:integer,\ | |
ws_ship_date_sk:integer,\ | |
ws_item_sk:integer,\ | |
ws_bill_customer_sk:integer,\ | |
ws_bill_cdemo_sk:integer,\ | |
ws_bill_hdemo_sk:integer,\ | |
ws_bill_addr_sk:integer,\ | |
ws_ship_customer_sk:integer,\ | |
ws_ship_cdemo_sk:integer,\ | |
ws_ship_hdemo_sk:integer,\ | |
ws_ship_addr_sk:integer,\ | |
ws_web_page_sk:integer,\ | |
ws_web_site_sk:integer,\ | |
ws_ship_mode_sk:integer,\ | |
ws_warehouse_sk:integer,\ | |
ws_promo_sk:integer,\ | |
ws_order_number:integer,\ | |
ws_quantity:integer,\ | |
ws_wholesale_cost:float,\ | |
ws_list_price:float,\ | |
ws_sales_price:float,\ | |
ws_ext_discount_amt:float,\ | |
ws_ext_sales_price:float,\ | |
ws_ext_wholesale_cost:float,\ | |
ws_ext_list_price:float,\ | |
ws_ext_tax:float,\ | |
ws_coupon_amt:float,\ | |
ws_ext_ship_cost:float,\ | |
ws_net_paid:float,\ | |
ws_net_paid_inc_tax:float,\ | |
ws_net_paid_inc_ship:float,\ | |
ws_net_paid_inc_ship_tax:float,\ | |
ws_net_profit:float | |
bq --dataset_id=${BQ_DATASET} load --sync=${LOAD_SYNC} --field_delimiter '|' --null_marker '' --ignore_unknown_values ${BQ_DATASET}.web_site gs://${GCS_BUCKET}/web_site/* \ | |
web_site_sk:integer,\ | |
web_site_id:string,\ | |
web_rec_start_date:string,\ | |
web_rec_end_date:string,\ | |
web_name:string,\ | |
web_open_date_sk:integer,\ | |
web_close_date_sk:integer,\ | |
web_class:string,\ | |
web_manager:string,\ | |
web_mkt_id:integer,\ | |
web_mkt_class:string,\ | |
web_mkt_desc:string,\ | |
web_market_manager:string,\ | |
web_company_id:integer,\ | |
web_company_name:string,\ | |
web_street_number:string,\ | |
web_street_name:string,\ | |
web_street_type:string,\ | |
web_suite_number:string,\ | |
web_city:string,\ | |
web_county:string,\ | |
web_state:string,\ | |
web_zip:string,\ | |
web_country:string,\ | |
web_gmt_offset:float,\ | |
web_tax_percentage:float |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment