式がCASE_N関数に基づく場合、ADDオプションおよびDROPオプションを使用して、テーブルに対するパーティション式を変更することはできません。例えば、以下のテーブルを作成します。
CREATE SET TABLE hyp_prd_tbls.dps_sum, NO FALLBACK, NO BEFORE JOURNAL, NO AFTER JOURNAL,CHECKSUM = DEFAULT ( hyp_month INTEGER NOT NULL, hyp_year INTEGER NOT NULL, churn_ctgry VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, scenario VARCHAR(6) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, in_contract_term VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, promo_type VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, access_tier_lvl1 VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, arpu_tier_lvl1 VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, hrchy_segmt VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, channel_type VARCHAR(40) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, ps_mkt_cd VARCHAR(6) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, tenure VARCHAR(12) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, tot_pplan_access_amt DECIMAL(15,2), tot_feat_access_amt DECIMAL(15,2), tot_occ_amt DECIMAL(15,2), tot_airtime_call_amt DECIMAL(15,2), churn_tot_pplan_access_amt DECIMAL(15,2), churn_tot_feat_access_amt DECIMAL(15,2), churn_tot_occ_amt DECIMAL(15,2), churn_tot_airtime_call_amt DECIMAL(15,2)) PRIMARY INDEX (hyp_month, hyp_year, churn_ctgry, scenario, in_contract_term, promo_type, access_tier_lvl1, arpu_tier_lvl1, hrchy_segmt, channel_type, ps_mkt_cd, tenure) PARTITION BY CASE_N(hyp_month = 200901, hyp_month = 200902, hyp_month = 200903, hyp_month = 200904, hyp_month = 200905, hyp_month = 200906, hyp_month = 200907, hyp_month = 200908, hyp_month = 200909, hyp_month = 200910, hyp_month = 200911, hyp_month = 200912, NO CASE);
DROPオプションおよびADDオプションは、RANGE関数に基づく行パーティション式にだけ使用できます。CASE_N関数に基づくパーティション式を変更するには、PARTITION BY句を指定する必要があります。
例えば、CASE_Nオプション(hyp_month = 201001、hyp_month = 201002、hyp_month = 201003、hyp_month = 201004)を表hyp_prd_tbls.dps_sumに追加するには、PARTITION BY句を使用して次のALTER TABLEリクエストを使用します。
ALTER TABLE hyp_prd_tbls.dps_sum PARTITION BY CASE_N(hyp_month = 200901, hyp_month = 200902, hyp_month = 200903, hyp_month = 200904, hyp_month = 200905, hyp_month = 200906, hyp_month = 200907, hyp_month = 200908, hyp_month = 200909, hyp_month = 200910, hyp_month = 200911, hyp_month = 200912, hyp_month = 201001, hyp_month = 201002, hyp_month = 201003, hyp_month = 201004, NO CASE);
このメソッドを使用してパーティションを変更する場合、テーブルには行が含まれていてはなりません。例えば、CREATE TABLE…AS…WITH DATAリクエストを使用して、そのテーブルを新しい テーブル定義にコピーするか、新しいテーブルを作成してからINSERT…SELECTまたはMERGEリクエストを使用して古いテーブルの行を新しいテーブルにコピーすることが必要になります。<Teradata Vantage™ - SQLデータ定義言語 - 詳細トピック、B035-1184>の「CREATE TABLE (AS句)」を参照してください。
次の列パーティション テーブルとしてhyp_prd_tbls_sumを作成したとします。
CREATE SET TABLE hyp_prd_tbls.dps_sum, NO FALLBACK, NO BEFORE JOURNAL, NO AFTER JOURNAL, CHECKSUM=DEFAULT ( hyp_month INTEGER NOT NULL, hyp_year INTEGER NOT NULL, churn_ctgry VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, scenario VARCHAR(6) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, in_contract_term VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, promo_type VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, access_tier_lvl1 VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, arpu_tier_lvl1 VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, hrchy_segmt VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, channel_type VARCHAR(40) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, ps_mkt_cd VARCHAR(6) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, tenure VARCHAR(12) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, tot_pplan_access_amt DECIMAL(15,2), tot_feat_access_amt DECIMAL(15,2), tot_occ_amt DECIMAL(15,2), tot_airtime_call_amt DECIMAL(15,2), churn_tot_pplan_access_amt DECIMAL(15,2), churn_tot_feat_access_amt DECIMAL(15,2), churn_tot_occ_amt DECIMAL(15,2), churn_tot_airtime_call_amt DECIMAL(15,2)) NO PRIMARY INDEX PARTITION BY (COLUMN, CASE_N(hyp_month = 200801, hyp_month = 200802, hyp_month = 200803, hyp_month = 200804, hyp_month = 200805, hyp_month = 200806, hyp_month = 200807, hyp_month = 200808, hyp_month = 200809, hyp_month = 200810, hyp_month = 200811, hyp_month = 200812, NO CASE);
RANGE_NまたはCASE_N関数に基づき、行パーティションに対してDROPオプションとADDオプションを使用する同じルールが適用されます。
例えば、CASE_N関数に基づき、2番目のレベルの行パーティションを使用して、列パーティションのバージョンのhyp_prd_tbls.dps_sum内の既存の行パーティション式を変更し、CASE_Nパーティション(hyp_month = 201001、hyp_month = 201002、hyp_month = 201003、hyp_month = 201004)を表hyp_prd_tbls.dps_sumに追加するには、次のALTER TABLEリクエストを使用します。
ALTER TABLE hyp_prd_tbls.dps_sum MODIFY PARTITION BY (COLUMN, CASE_N(hyp_month = 200901, hyp_month = 200902, hyp_month = 200903, hyp_month = 200904, hyp_month = 200905, hyp_month = 200906, hyp_month = 200907, hyp_month = 200908, hyp_month = 200909, hyp_month = 200910, hyp_month = 200911, hyp_month = 200912, hyp_month = 201001, hyp_month = 201002, hyp_month = 201003, hyp_month = 201004, NO CASE));