16.20 - 結合インデックスおよびハッシュ インデックスのコピーについて - Teradata Data Mover

Teradata® Data Mover ユーザー ガイド

Product
Teradata Data Mover
Release Number
16.20
Published
2021年11月
Content Type
ユーザー ガイド
Publication ID
B035-4101-107K-JPN
Language
日本語 (日本)

バージョンが異なるTeradata Database間で結合インデックスおよびハッシュ インデックスをコピーする場合は、一定の制限があります。

結合インデックスまたはハッシュ インデックスをソース データベースからターゲット データベースにコピーするには、結合インデックスまたはハッシュ インデックスを定義するときに、次のコード例のように、index要素のselection="included"属性を指定します。

<indices>
	<index selection= "included">
		<name>Orders_HI</name>
		<index_database>west1000</index_database>
		<map>sparsemap4amps1</map> 
		<colocate>sparsecol2</colocate>
		<index_type>HASH_INDEX</index_type>
	</index>
</indices>

次のテーブルでは、結合インデックスとハッシュ インデックスのパラメータと使用可能な値について説明します。

パラメータ 説明
colocate スパース マップ専用のコロケーション名。
index_database 結合インデックスまたはハッシュ インデックスが存在するデータベース名。
index_type インデックスの種類。
有効な値は次のとおりです。
  • HASH_INDEX
  • JOIN_INDEX
map オブジェクト マップ名。
name 結合またはハッシュ インデックス名。
selection 結合インデックスおよびハッシュ インデックスをコピーするかどうかを示す構成要素。
有効な値は次のとおりです。
  • included: 結合インデックスまたはハッシュ インデックスがコピーされます。
  • unselected: 結合インデックスまたはハッシュ インデックスがコピーから除外されます。
MAPS機能のパラメータ、mapcolocateは、Teradata Database 16.10以降を使用するターゲット システムでしかサポートされていません。

関連付けられたテーブルと共に結合またはハッシュ インデックスをコピーし、関連付けられたテーブルの名前を変更または再配置する場合、結合またはハッシュインデックスは、ターゲットの名前を変更または再配置されたテーブルに作成されます。

次のコード例では、圧縮複数テーブル結合インデックスCust_Ord_JIを作成しています。

CREATE JOIN INDEX west1000.Cust_Ord_JI ,NO FALLBACK ,CHECKSUM = DEFAULT AS
SELECT (west1000.C.c_custid ,west1000.C.c_lname ),(west1000.O.o_orderid ,
west1000.O.o_orderstatus ,west1000.O.o_orderdate ) FROM
west1000.Customer C INNER JOIN west1000.Orders O ON west1000.C.c_custid = west1000.O.o_custid )
PRIMARY INDEX ( c_custid );

次のコード例では、非圧縮複数テーブル結合インデックスCust_Ord_J2を作成しています。

CREATE JOIN INDEX west1000.Cust_Ord_JI2 ,NO FALLBACK ,CHECKSUM = DEFAULT AS
SELECT west1000.C.c_custid ,west1000.C.c_lname,west1000.O.o_orderid ,
west1000.O.o_orderstatus ,west1000.O.o_orderdate FROM
west1000.Customer C INNER JOIN west1000.Orders O ON west1000.C.c_custid = west1000.O.o_custid )
PRIMARY INDEX ( c_custid );

次のコード例では、集約結合インデックスMonthly_Sales_JIを作成しています。

CREATE JOIN INDEX west1000.Monthly_Sales_JI ,NO FALLBACK ,CHECKSUM = DEFAULT AS
SELECT COUNT( * ) (FLOAT, NAMED CountStar ),west1000.Daily_Sales.item_id (NAMED Item ),
EXTRACT(YEAR FROM (west1000.Daily_Sales.sales_date ))(NAMED Yr ),
EXTRACT(MONTH FROM (west1000.Daily_Sales.sales_date ))(NAMED Mon ),
SUM(west1000.Daily_Sales.sales )(FLOAT, NAMED Sum_of_Sales )
FROM west1000.Daily_Sales GROUP BY west1000.Daily_Sales.item_id (NAMED Item ),
EXTRACT(YEAR FROM (west1000.Daily_Sales.sales_date ))(NAMED Yr ), 
EXTRACT(MONTH FROM (west1000.Daily_Sales.sales_date ))(NAMED Mon ) 
PRIMARY INDEX ( Item );

次のコード例では、ハッシュ インデックスOrders_HIを作成しています。

CREATE HASH INDEX west1000.Orders_HI ,NO FALLBACK ,CHECKSUM = DEFAULT
(o_custid ,o_totalprice ,o_orderdate )
ON west1000.Orders ;
結合インデックスおよびハッシュ インデックスをコピーする際は、以下を考慮する必要があります。
  • コピーするオブジェクトがターゲット データベースに存在しない場合は、ターゲット データベース上に作成されます。オブジェクトがターゲット データベースに存在する場合は、overwrite_existing_objectsプロパティがfalseに設定されていないとオブジェクトは上書きされます。 その場合、作成タイムエラーが生成されます。
  • 結合インデックスまたはハッシュ インデックスを持つテーブルがターゲットに存在する場合に、そのテーブルをコピーすると、ターゲット テーブルが上書きされ、新しくコピーされたテーブルに対して結合インデックスまたはハッシュ インデックスが再作成されます。

TeradataとHadoopシステム間で、結合インデックスとハッシュ インデックスをコピーすることはできません。