本次性能测试将在AnalyticDB MySQL中创建25个表。
TPC-DS测试会生成25张表,其中包括7张业务数据的事实表,17张业务数据的维度表,还有1张TPC-DS的系统表(与性能测试无关)。
说明 本文的TPC-DS的实现基于TPC-DS的基准测试,并不能与已发布的TPC-DS基准测试结果相比较,本文中的测试并不符合TPC-DS基准测试的所有要求。
表类型 | 表名称 | 说明 |
---|---|---|
事实表 | catalog_sales | 通过catalog渠道销售商品的订单信息 |
catalog_returns | 通过catalog渠道销售商品的退货信息 | |
store_sales | 通过store渠道销售商品的订单信息 | |
store_returns | 通过store渠道销售商品的退货信息 | |
web_sales | 通过Web渠道销售商品的订单信息 | |
web_returns | 通过Web渠道销售商品的退货信息 | |
inventory | 仓储相关信息 | |
维度表 | call_center | 客户服务中心相关信息 |
catalog_page | 商品目录相关信息 | |
customer | 客户相关信息 | |
customer_address | 客户地址信息 | |
customer_demographics | 客户基本信用信息 | |
date_dim | 时间维度信息 | |
household_demographics | 家庭基本信用信息 | |
income_band | 收入信息 | |
item | 商品信息 | |
promotion | 商品促销信息 | |
reason | 用户退货原因 | |
ship_mode | 商品快递信息 | |
store | 商户信息 | |
time_dim | 时间维度信息 | |
warehouse | 仓库级别信息 | |
web_page | 商品网页基本信息 | |
web_site | 商品网站基本信息 | |
系统表 | dbgen_version | TPC-DS的命令记录 |
创建表的SQL语句如下所示:
- catalog_returns表
create table catalog_returns ( cr_returned_date_sk bigint, cr_returned_time_sk bigint, cr_item_sk bigint not null, cr_refunded_customer_sk bigint, cr_refunded_cdemo_sk bigint, cr_refunded_hdemo_sk bigint, cr_refunded_addr_sk bigint, cr_returning_customer_sk bigint, cr_returning_cdemo_sk bigint, cr_returning_hdemo_sk bigint, cr_returning_addr_sk bigint, cr_call_center_sk bigint, cr_catalog_page_sk bigint , cr_ship_mode_sk bigint , cr_warehouse_sk bigint , cr_reason_sk bigint , cr_order_number bigint not null, cr_return_quantity int, cr_return_amount decimal(7,2), cr_return_tax decimal(7,2), cr_return_amt_inc_tax decimal(7,2), cr_fee decimal(7,2), cr_return_ship_cost decimal(7,2), cr_refunded_cash decimal(7,2), cr_reversed_charge decimal(7,2), cr_store_credit decimal(7,2), cr_net_loss decimal(7,2) ) DISTRIBUTE BY HASH(cr_item_sk) PARTITION BY VALUE(JULIAN_DATE_TO_YEAR_MONTH(cr_returned_date_sk)) PARTITION NUM 1000;
- catalog_sales表
create table catalog_sales ( cs_sold_date_sk bigint, cs_sold_time_sk bigint, cs_ship_date_sk bigint, cs_bill_customer_sk bigint, cs_bill_cdemo_sk bigint, cs_bill_hdemo_sk bigint, cs_bill_addr_sk bigint, cs_ship_customer_sk bigint, cs_ship_cdemo_sk bigint, cs_ship_hdemo_sk bigint, cs_ship_addr_sk bigint, cs_call_center_sk bigint, cs_catalog_page_sk bigint, cs_ship_mode_sk bigint, cs_warehouse_sk bigint, cs_item_sk bigint not null, cs_promo_sk bigint, cs_order_number bigint not null, cs_quantity int, cs_wholesale_cost decimal(7,2), cs_list_price decimal(7,2), cs_sales_price decimal(7,2), cs_ext_discount_amt decimal(7,2), cs_ext_sales_price decimal(7,2), cs_ext_wholesale_cost decimal(7,2), cs_ext_list_price decimal(7,2), cs_ext_tax decimal(7,2), cs_coupon_amt decimal(7,2), cs_ext_ship_cost decimal(7,2), cs_net_paid decimal(7,2), cs_net_paid_inc_tax decimal(7,2), cs_net_paid_inc_ship decimal(7,2), cs_net_paid_inc_ship_tax decimal(7,2), cs_net_profit decimal(7,2) ) DISTRIBUTE BY HASH(cs_item_sk) PARTITION BY VALUE(JULIAN_DATE_TO_YEAR_MONTH(cs_sold_date_sk)) PARTITION NUM 1000;
- inventory表
create table inventory ( inv_date_sk bigint not null, inv_item_sk bigint not null, inv_warehouse_sk bigint not null, inv_quantity_on_hand int ) DISTRIBUTE BY HASH(inv_item_sk) PARTITION BY VALUE(JULIAN_DATE_TO_YEAR_MONTH(inv_date_sk)) PARTITION NUM 1000 ;
- store_returns表
create table store_returns ( sr_returned_date_sk bigint, sr_return_time_sk bigint, sr_item_sk bigint not null, sr_customer_sk bigint, sr_cdemo_sk bigint, sr_hdemo_sk bigint, sr_addr_sk bigint, sr_store_sk bigint, sr_reason_sk bigint, sr_ticket_number bigint not null, sr_return_quantity int, sr_return_amt decimal(7,2), sr_return_tax decimal(7,2), sr_return_amt_inc_tax decimal(7,2), sr_fee decimal(7,2), sr_return_ship_cost decimal(7,2), sr_refunded_cash decimal(7,2), sr_reversed_charge decimal(7,2), sr_store_credit decimal(7,2), sr_net_loss decimal(7,2) ) DISTRIBUTE BY HASH(sr_item_sk) PARTITION BY VALUE(JULIAN_DATE_TO_YEAR_MONTH(sr_returned_date_sk)) PARTITION NUM 1000;
- store_sales表
create table store_sales ( ss_sold_date_sk bigint, ss_sold_time_sk bigint, ss_item_sk bigint not null, ss_customer_sk bigint, ss_cdemo_sk bigint, ss_hdemo_sk bigint, ss_addr_sk bigint, ss_store_sk bigint, ss_promo_sk bigint, ss_ticket_number bigint not null, ss_quantity int, ss_wholesale_cost decimal(7,2), ss_list_price decimal(7,2), ss_sales_price decimal(7,2), ss_ext_discount_amt decimal(7,2), ss_ext_sales_price decimal(7,2), ss_ext_wholesale_cost decimal(7,2), ss_ext_list_price decimal(7,2), ss_ext_tax decimal(7,2), ss_coupon_amt decimal(7,2), ss_net_paid decimal(7,2), ss_net_paid_inc_tax decimal(7,2), ss_net_profit decimal(7,2) ) DISTRIBUTE BY HASH(ss_item_sk) PARTITION BY VALUE(JULIAN_DATE_TO_YEAR_MONTH(ss_sold_date_sk)) PARTITION NUM 1000;
- web_returns表
create table web_returns ( wr_returned_date_sk bigint, wr_returned_time_sk bigint, wr_item_sk bigint not null, wr_refunded_customer_sk bigint, wr_refunded_cdemo_sk bigint, wr_refunded_hdemo_sk bigint, wr_refunded_addr_sk bigint, wr_returning_customer_sk bigint, wr_returning_cdemo_sk bigint, wr_returning_hdemo_sk bigint, wr_returning_addr_sk bigint, wr_web_page_sk bigint, wr_reason_sk bigint, wr_order_number bigint not null, wr_return_quantity int, wr_return_amt decimal(7,2), wr_return_tax decimal(7,2), wr_return_amt_inc_tax decimal(7,2), wr_fee decimal(7,2), wr_return_ship_cost decimal(7,2), wr_refunded_cash decimal(7,2), wr_reversed_charge decimal(7,2), wr_account_credit decimal(7,2), wr_net_loss decimal(7,2) ) DISTRIBUTE BY HASH(wr_item_sk) PARTITION BY VALUE(JULIAN_DATE_TO_YEAR_MONTH(wr_returned_date_sk)) PARTITION NUM 1000;
- web_sales表
create table web_sales ( ws_sold_date_sk bigint, ws_sold_time_sk bigint, ws_ship_date_sk bigint, ws_item_sk bigint not null, ws_bill_customer_sk bigint, ws_bill_cdemo_sk bigint, ws_bill_hdemo_sk bigint, ws_bill_addr_sk bigint, ws_ship_customer_sk bigint, ws_ship_cdemo_sk bigint, ws_ship_hdemo_sk bigint, ws_ship_addr_sk bigint, ws_web_page_sk bigint, ws_web_site_sk bigint, ws_ship_mode_sk bigint, ws_warehouse_sk bigint, ws_promo_sk bigint, ws_order_number bigint not null, ws_quantity int, ws_wholesale_cost decimal(7,2), ws_list_price decimal(7,2), ws_sales_price decimal(7,2), ws_ext_discount_amt decimal(7,2), ws_ext_sales_price decimal(7,2), ws_ext_wholesale_cost decimal(7,2), ws_ext_list_price decimal(7,2), ws_ext_tax decimal(7,2), ws_coupon_amt decimal(7,2), ws_ext_ship_cost decimal(7,2), ws_net_paid decimal(7,2), ws_net_paid_inc_tax decimal(7,2), ws_net_paid_inc_ship decimal(7,2), ws_net_paid_inc_ship_tax decimal(7,2), ws_net_profit decimal(7,2) ) DISTRIBUTE BY HASH(ws_item_sk) PARTITION BY VALUE(JULIAN_DATE_TO_YEAR_MONTH(ws_sold_date_sk)) PARTITION NUM 1000;
- call_center表
create table call_center ( cc_call_center_sk bigint not null, cc_call_center_id char(16) not null, cc_rec_start_date date, cc_rec_end_date date, cc_closed_date_sk bigint, cc_open_date_sk bigint, cc_name varchar(50), cc_class varchar(50), cc_employees int, cc_sq_ft int, cc_hours char(20), cc_manager varchar(40), cc_mkt_id int, cc_mkt_class char(50), cc_mkt_desc varchar(100), cc_market_manager varchar(40), cc_division int, cc_division_name varchar(50), cc_company int, cc_company_name char(50), cc_street_number char(10), cc_street_name varchar(60), cc_street_type char(15), cc_suite_number char(10), cc_city varchar(60), cc_county varchar(30), cc_state char(2), cc_zip char(10), cc_country varchar(20), cc_gmt_offset decimal(5,2), cc_tax_percentage decimal(5,2), PRIMARY key(cc_call_center_sk) ) DISTRIBUTED BY BROADCAST;
- catalog_page表
create table catalog_page ( cp_catalog_page_sk bigint not null, cp_catalog_page_id varchar(16) not null, cp_start_date_sk bigint, cp_end_date_sk bigint, cp_department varchar(50), cp_catalog_number int, cp_catalog_page_number int, cp_description varchar(100), cp_type varchar(100), primary key(cp_catalog_page_sk) ) DISTRIBUTE BY HASH(cp_catalog_page_sk);
- customer表
CREATE TABLE customer ( c_customer_sk bigint NOT NULL, c_customer_id char(16) NOT NULL, c_current_cdemo_sk bigint, c_current_hdemo_sk bigint, c_current_addr_sk bigint, c_first_shipto_date_sk bigint, c_first_sales_date_sk bigint, c_salutation char(10), c_first_name char(20), c_last_name char(30), c_preferred_cust_flag char(1), c_birth_day int, c_birth_month int, c_birth_year int, c_birth_country varchar(20), c_login char(13), c_email_address char(50), c_last_review_date_sk bigint, PRIMARY key(c_customer_sk) ) DISTRIBUTE BY HASH(c_customer_sk);
- customer_address表
CREATE TABLE customer_address ( ca_address_sk bigint NOT NULL, ca_address_id varchar(16) NOT NULL, ca_street_number varchar(10), ca_street_name varchar(60), ca_street_type varchar(15), ca_suite_number varchar(10), ca_city varchar(60), ca_county varchar(30), ca_state varchar(2), ca_zip varchar(10), ca_country varchar(20), ca_gmt_offset decimal(5,2), ca_location_type varchar(20), primary key(ca_address_sk) ) DISTRIBUTE BY HASH(ca_address_sk);
- customer_demographics表
create table customer_demographics ( cd_demo_sk bigint not null, cd_gender char(1), cd_marital_status char(1), cd_education_status char(20), cd_purchase_estimate int, cd_credit_rating char(10), cd_dep_count int, cd_dep_employed_count int, cd_dep_college_count int, primary key(cd_demo_sk) ) DISTRIBUTE BY HASH(cd_demo_sk);
- date_dim表
create table date_dim ( d_date_sk bigint not null, d_date_id char(16) not null, d_date date, d_month_seq int, d_week_seq int, d_quarter_seq int, d_year int, d_dow int, d_moy int, d_dom int, d_qoy int, d_fy_year int, d_fy_quarter_seq int, d_fy_week_seq int, d_day_name char(9), d_quarter_name char(6), d_holiday char(1), d_weekend char(1), d_following_holiday char(1), d_first_dom int, d_last_dom int, d_same_day_ly int, d_same_day_lq int, d_current_day char(1), d_current_week char(1), d_current_month char(1), d_current_quarter char(1), d_current_year char(1), primary key(d_date_sk) ) DISTRIBUTED BY BROADCAST;
- household_demographics表
create table household_demographics ( hd_demo_sk bigint not null, hd_income_band_sk bigint, hd_buy_potential char(15), hd_dep_count int, hd_vehicle_count int, PRIMARY key(hd_demo_sk) ) DISTRIBUTE BY HASH(hd_demo_sk);
- income_band表
create table income_band ( ib_income_band_sk bigint not null, ib_lower_bound int, ib_upper_bound int, PRIMARY key(ib_income_band_sk) ) DISTRIBUTED BY BROADCAST;
- item表
create table item ( i_item_sk bigint not null, i_item_id char(16) not null, i_rec_start_date date, i_rec_end_date date, i_item_desc varchar(200), i_current_price decimal(7,2), i_wholesale_cost decimal(7,2), i_brand_id int, i_brand char(50), i_class_id int, i_class char(50), i_category_id int, i_category char(50), i_manufact_id int, i_manufact char(50), i_size char(20), i_formulation char(20), i_color char(20), i_units char(10), i_container char(10), i_manager_id int, i_product_name char(50), PRIMARY key(i_item_sk) ) DISTRIBUTE BY HASH(i_item_sk);
- promotion表
create table promotion ( p_promo_sk bigint not null, p_promo_id char(16) not null, p_start_date_sk bigint, p_end_date_sk bigint, p_item_sk bigint, p_cost decimal(15,2), p_response_target int, p_promo_name char(50), p_channel_dmail char(1), p_channel_email char(1), p_channel_catalog char(1), p_channel_tv char(1), p_channel_radio char(1), p_channel_press char(1), p_channel_event char(1), p_channel_demo char(1), p_channel_details varchar(100), p_purpose char(15), p_discount_active char(1), PRIMARY key(p_promo_sk) ) DISTRIBUTE BY HASH(p_promo_sk);
- reason表
create table reason ( r_reason_sk bigint not null, r_reason_id char(16) not null, r_reason_desc char(100), PRIMARY key(r_reason_sk) ) DISTRIBUTED BY BROADCAST;
- ship_mode表
create table ship_mode ( sm_ship_mode_sk bigint, sm_ship_mode_id char(16) not null, sm_type char(30), sm_code char(10), sm_carrier char(20), sm_contract char(20), primary key(sm_ship_mode_sk) ) DISTRIBUTED BY BROADCAST;
- store表
create table store ( s_store_sk bigint not null, s_store_id char(16) not null, s_rec_start_date date, s_rec_end_date date, s_closed_date_sk bigint, s_store_name varchar(50), s_number_employees int, s_floor_space int, s_hours char(20), s_manager varchar(40), s_market_id int, s_geography_class varchar(100), s_market_desc varchar(100), s_market_manager varchar(40), s_division_id int, s_division_name varchar(50), s_company_id int, s_company_name varchar(50), s_street_number varchar(10), s_street_name varchar(60), s_street_type char(15), s_suite_number char(10), s_city varchar(60), s_county varchar(30), s_state char(2), s_zip char(10), s_country varchar(20), s_gmt_offset decimal(5,2), s_tax_percentage decimal(5,2), PRIMARY key(s_store_sk) ) DISTRIBUTED BY BROADCAST;
- time_dim表
create table time_dim ( t_time_sk bigint not null, t_time_id char(16) not null, t_time int, t_hour int, t_minute int, t_second int, t_am_pm char(2), t_shift char(20), t_sub_shift char(20), t_meal_time char(20), primary key(t_time_sk) ) DISTRIBUTE BY HASH(t_time_sk);
- warehouse表
create table warehouse ( w_warehouse_sk bigint not null, w_warehouse_id char(16) not null, w_warehouse_name varchar(20), w_warehouse_sq_ft int, w_street_number char(10), w_street_name varchar(60), w_street_type char(15), w_suite_number char(10), w_city varchar(60), w_county varchar(30), w_state char(2), w_zip char(10), w_country varchar(20), w_gmt_offset decimal(5,2), primary key(w_warehouse_sk) ) DISTRIBUTED BY BROADCAST;
- web_page表
create table web_page ( wp_web_page_sk bigint not null, wp_web_page_id char(16) not null, wp_rec_start_date date, wp_rec_end_date date, wp_creation_date_sk bigint, wp_access_date_sk bigint, wp_autogen_flag char(1), wp_customer_sk bigint, wp_url varchar(100), wp_type char(50), wp_char_count int, wp_link_count int, wp_image_count int, wp_max_ad_count int, PRIMARY key(wp_web_page_sk) ) DISTRIBUTE BY HASH(wp_web_page_sk);
- web_site表
create table web_site ( web_site_sk bigint not null, web_site_id char(16) not null, web_rec_start_date date, web_rec_end_date date, web_name varchar(50), web_open_date_sk bigint, web_close_date_sk bigint, web_class varchar(50), web_manager varchar(40), web_mkt_id int, web_mkt_class varchar(50), web_mkt_desc varchar(100), web_market_manager varchar(40), web_company_id int, web_company_name char(50), web_street_number char(10), web_street_name varchar(60), web_street_type char(15), web_suite_number char(10), web_city varchar(60), web_county varchar(30), web_state char(2), web_zip char(10), web_country varchar(20), web_gmt_offset decimal(5,2), web_tax_percentage decimal(5,2), PRIMARY key(web_site_sk) ) DISTRIBUTED BY BROADCAST;