29.3 ネストしたデータの使用
1対多の関係の表間の結合は、ネストされた列によって表されます。
Oracle Data Miningでは、各レコードが個別の行に含まれた、単一レコード・ケース形式のケース表が必要です。データの一部または全部が複数レコード・ケース形式で、各レコードが複数の行に含まれている場合はどうなるでしょうか。1つの属性で一連の値または値の集合(学生のテスト・スコアや顧客に購入された製品)を表す場合はどうなるでしょうか。
このような1対多の関係は通常、表間の結合として実装します。たとえば、顧客表を売上表と結合し、購入された製品のリストを各顧客に関連付けることができます。
Oracle Data Miningでは、ネストした列を通じてディメンション化されたデータをサポートしています。ケース表にディメンション化されたデータを含めるには、ビューを作成し、データ・マイニングのネストした表タイプの1つに結合データをキャストします。ネストした列の各行は、属性の名前と値のペアから構成されます。ネストした各行は、別個の属性として内部的に処理されます。
関連トピック
29.3.1 ネストしたオブジェクト型
ネストした表は、他のデータ型のかわりに使用できるオブジェクト・データ型です。
Oracle Databaseでは、実在するエンティティをデータベース内のオブジェクトとしてモデル化できる、ユーザー定義のデータ型がサポートされています。コレクション型は、複数値属性をモデル化するためのオブジェクト・データ型です。ネストした表はコレクション型です。ネストした表は、他のデータ型が使用できる場所であればどこでも使用できます。
Oracle Data Miningでは、次のネストしたオブジェクト型をサポートしています。
DM_NESTED_BINARY_DOUBLES
DM_NESTED_BINARY_FLOATS
DM_NESTED_NUMERICALS
DM_NESTED_CATEGORICALS
ネストした型の説明は、この例を参照してください。
例29-3 Oracle Data Miningのネストしたデータ型
describe dm_nested_binary_double Name Null? Type ----------------------------------------- -------- ---------------------------- ATTRIBUTE_NAME VARCHAR2(4000) VALUE BINARY_DOUBLE describe dm_nested_binary_doubles DM_NESTED_BINARY_DOUBLES TABLE OF SYS.DM_NESTED_BINARY_DOUBLE Name Null? Type ------------------------------------------ -------- --------------------------- ATTRIBUTE_NAME VARCHAR2(4000) VALUE BINARY_DOUBLE describedm_nested_binary_float
Name Null? Type ----------------------------------------- -------- --------------------------- ATTRIBUTE_NAME VARCHAR2(4000) VALUE BINARY_FLOAT describedm_nested_binary_floats
DM_NESTED_BINARY_FLOATS TABLE OF SYS.DM_NESTED_BINARY_FLOAT Name Null? Type ----------------------------------------- -------- ---------------------------- ATTRIBUTE_NAME VARCHAR2(4000) VALUE BINARY_FLOAT describedm_nested_numerical
Name Null? Type ----------------------------------------- -------- ---------------------------- ATTRIBUTE_NAME VARCHAR2(4000) VALUE NUMBER describedm_nested_numericals
DM_NESTED_NUMERICALS TABLE OF SYS.DM_NESTED_NUMERICAL Name Null? Type ----------------------------------------- -------- ---------------------------- ATTRIBUTE_NAME VARCHAR2(4000) VALUE NUMBER describedm_nested_categorical
Name Null? Type ----------------------------------------- -------- ---------------------------- ATTRIBUTE_NAME VARCHAR2(4000) VALUE VARCHAR2(4000) describedm_nested_categoricals
DM_NESTED_CATEGORICALS TABLE OF SYS.DM_NESTED_CATEGORICAL Name Null? Type ----------------------------------------- -------- ---------------------------- ATTRIBUTE_NAME VARCHAR2(4000) VALUE VARCHAR2(4000)
29.3.2 例: マイニング用のトランザクショナル・データの変換
例29-4は、ある売上表のビューのデータです。4つの地域で販売された製品のうちの3種類の売上が表示されています。このデータは、各ケース(製品)の売上が複数の行に格納されているため、製品レベルでのマイニングには適していません。
例29-5は、このデータがマイニング用にどのように変換されるかを示しています。ケースID列はPRODUCT
です。SALES_PER_REGION
(DM_NESTED_NUMERICALS
型のネストした列)がデータ属性です。この表は、各ケースの情報が単一行に格納されているため、製品ケース・レベルでのマイニングに適しています。
ノート:
この例は、単に概念を表したものです。実際には、処理前にデータがピボットされることはありません。
例29-4複数レコード・ケース形式の地域ごとの製品売上
PRODUCT REGION SALES ------- -------- ---------- Prod1 NE 556432 Prod2 NE 670155 Prod3 NE 3111 . . Prod1 NW 90887 Prod2 NW 100999 Prod3 NW 750437 . . Prod1 SE 82153 Prod2 SE 57322 Prod3 SE 28938 . . Prod1 SW 3297551 Prod2 SW 4972019 Prod3 SW 884923 . .
例29-5 単一レコード・ケース形式の地域ごとの製品売上
PRODUCT SALES_PER_REGION (ATTRIBUTE_NAME, VALUE) ------ -------------------------- Prod1 ('NE' , 556432) ('NW' , 90887) ('SE' , 82153) ('SW' , 3297551) Prod2 ('NE' , 670155) ('NW' , 100999) ('SE' , 57322) ('SW' , 4972019) Prod3 ('NE' , 3111) ('NW' , 750437) ('SE' , 28938) ('SW' , 884923) . .
例29-6 SALES_PER_REGIONから導出されたモデル属性
PRODUCT SALES_PER_REGION.NE SALES_PER_REGION.NW SALES_PER_REGION.SE SALES_PER_REGION.SW ------- ------------------ ------------------- ------------------ ------------------- Prod1 556432 90887 82153 3297551 Prod2 670155 100999 57322 4972019 Prod3 3111 750437 28938 884923 . .