入れ子になったテーブル (Analysis Services - データ マイニング)Nested Tables (Analysis Services - Data Mining)

適用対象: はいSQL Server Analysis ServicesありませんAzure Analysis ServicesAPPLIES TO: yesSQL Server Analysis Services noAzure Analysis Services

SQL ServerSQL Server Analysis ServicesAnalysis Servicesでは、データを、ケース テーブル内の一連のケースとしてデータ マイニング アルゴリズムに入力する必要があります。In SQL ServerSQL Server Analysis ServicesAnalysis Services, data must be fed to a data mining algorithm as a series of cases that are contained within a case table. しかし、1 行のデータですべてのケースを表すことはできません。However, not all cases can be described by a single row of data. たとえば、1 つのテーブルに顧客情報、別のテーブルに顧客の購入記録が含まれている 2 つのテーブルから、ケースが派生している場合があります。For example, a case might be derived from two tables: one table that contains customer information, and another table that contains customer purchases. 顧客情報テーブルの 1 人の顧客が顧客購入記録テーブルに複数の項目を持っている場合、1 行でデータを表すことが難しくなります。A single customer in the customer information table might have multiple items in the customer purchases table, which makes it difficult to describe the data by using a single row. Analysis ServicesAnalysis Services では、 入れ子になったテーブルを使用して、このようなケースを扱うための独自の方法が用意されています。provides a unique method for handling these cases, by using nested tables. 次の図は、入れ子になったテーブルの概念を示しています。The concept of a nested table is demonstrated in the following illustration.

入れ子になったテーブルを使用して 2 つのテーブルが結合Two tables combined by using a nested table

この図では、親テーブルである最初のテーブルに顧客に関する情報が含まれ、各顧客の一意の識別子が付けられています。In this diagram, the first table, which is the parent table, contains information about customers, and associates a unique identifier for each customer. 子テーブルである 2 番目のテーブルには、各顧客の購入記録が含まれています。The second table, the child table, contains the purchases for each customer. 子テーブルの購入記録は、一意の識別子である CustomerKey 列によって親テーブルに関連付けられています。The purchases in the child table are related to the parent table by the unique identifier, the CustomerKey column. 図の 3 番目のテーブルは、2 つのテーブルが結合されていることを示します。The third table in the diagram shows the two tables combined.

入れ子になったテーブルは、ケース テーブル内で TABLEのデータ型を持つ特別な列として表されます。A nested table is represented in the case table as a special column that has a data type of TABLE. 特定のケース行では、この種類の列に、親テーブルに関係する子テーブルから選択された列が含まれます。For any particular case row, this kind of column contains selected rows from the child table that pertain to the parent table.

入れ子になったテーブルのデータを、予測または入力、あるいは予測と入力の両方に使用できます。The data in a nested table can be used for prediction or for input, or for both. たとえば、モデルに 2 つの入れ子になったテーブル列が含まれているとします。1 つの列には顧客が購入した製品の一覧が含まれ、もう 1 つの列には、アンケートから収集された顧客の趣味や関心に関する情報が含まれています。For example, you might have two nested table columns in a model: one nested table column might contain a list of the products that a customer has purchased, while the other nested table column contains information about the customer's hobbies and interests, possibly obtained from a survey. この場合、顧客の趣味や関心を、購入行動を分析する入力として使用し、購入の可能性がある製品を予測できます。In this scenario, you could use the customer's hobbies and interests as an input for analyzing purchasing behavior, and predicting likely purchases.

ケース テーブルと入れ子になったテーブルの結合Joining Case Tables and Nested Tables

入れ子になったテーブルを作成するには、一方のテーブル内の項目を他方のテーブルに関連付けできるように、2 つのソース テーブルに定義済みのリレーションシップを含める必要があります。In order to create a nested table, the two source tables must contain a defined relationship so that the items in one table can be related to the other table. SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT)では、データ ソース ビュー内でこのリレーションシップを定義できます。In SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT), you can define this relationship in the data source view.

注意

CustomerKey フィールドはリレーショナル キーです。リレーショナル キーは、データ ソース ビュー定義内でケース テーブルと入れ子になったテーブルを関連付けたり、マイニング構造内で列のリレーションシップを確立したりするために使用されます。The CustomerKey field is the relational key that is used to link the case table and the nested table within the data source view definition, and to establish the relationship of the columns within the mining structure. ただし、このリレーショナル キーは、その構造に基づいて作成されるマイニング モデルでは通常は使用されません。However, typically you should not use this relational key in mining models built on that structure. 一般に、リレーショナル キー列がテーブルを結合するためだけに使用されていて、分析に関係する情報は何も提供していない場合は、マイニング モデルではそのリレーショナル キー列を省略することをお勧めします。Usually it is best to omit the relational key column from the mining model if it serves only to join the tables and does not provide information that is interesting for analysis.

データ マイニング拡張機能 (DMX) または分析管理オブジェクト (AMO) を使用して、入れ子になったテーブルをプログラムによって作成できます。または、 SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT)のデータ マイニング ウィザードおよびデータ マイニング デザイナーを使用できます。You can create nested tables programmatically by either using Data Mining Extensions (DMX) or Analysis Management Objects (AMO), or you can use the Data Mining Wizard and Data Mining Designer in SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT).

マイニング モデルでの入れ子になったテーブル列の使用Using Nested Table Columns in a Mining Model

ケース テーブルのキーは多くの場合、顧客 ID、製品名、連続する日付など、テーブルの行を一意に識別するデータです。In the case table, the key is often a customer ID, a product name, or date in a series: data that uniquely identifies a row in the table. を使用して、このようなケースを扱うための独自の方法が用意されています。. しかし、入れ子になったテーブルのキーは、そのリレーショナル キー (外部キー) ではなく、モデル化する属性を表す列であるのが一般的です。However, in nested tables, the key is typically not the relational key (or foreign key) but rather the column that represents the attribute that you are modeling.

たとえば、ケース テーブルに注文が含まれていて、入れ子になったテーブルに注文の品目が含まれている場合、入れ子になったテーブルに格納されている品目間の関係を (ケース テーブルに格納されている) 複数の注文にまたがってモデル化することも考えられます。For example, if the case table contains orders, and the nested table contains items in the order, you would be interested in modeling the relationship between items stored in the nested table across multiple orders, which are stored in the case table. したがって、入れ子になったテーブル Items がケース テーブル Orders にリレーショナル キー OrderIDで結合されていても、 OrderID を入れ子になったテーブルのキーとして使用するべきではありません。Therefore, although the Items nested table is joined to the Orders case table by the relational key OrderID, you should not use OrderID as the nested table key. この場合は、モデル化するデータが Items 列に含まれているため、代わりにその列を入れ子になったテーブルのキーとして選択します。Instead, you would select the Items column as the nested table key, because that column contains the data that you want to model. ケース テーブルと入れ子になったテーブルの間のリレーションシップはデータ ソース ビュー定義によって既に確立されているため、ほとんどの場合、マイニング モデルで OrderID を無視しても問題にはなりません。In most cases, you can safely ignore OrderID in the mining model, because the relationship between the case table and the nested table has already been established by the data source view definition.

入れ子になったテーブルのキーとして使用する列を選択するときには、その列の値が各ケースで一意であることを確認する必要があります。When you choose a column to use as the nested table key, you must ensure that the values in that column are unique for each case. たとえば、ケース テーブルが顧客を表し、入れ子になったテーブルが顧客が購入した品目を表す場合は、各顧客について複数回登録されている品目がないことを確認する必要があります。For example, if the case table represents customers and the nested table represents items purchased by the customer, you must ensure that no item is listed more than one time per customer. 顧客が同じ品目を複数回購入している場合は、一意の各製品の購入回数を集計する列を含む別のビューを作成することができます。If a customer has purchased the same item more than one time, you might want to create a different view that has a column that aggregates the count of purchases for each unique product.

入れ子になったテーブルの値の重複をどのように処理するかは、作成するマイニング モデルや解決するビジネス上の問題によって異なります。How you decide to handle duplicate values in a nested table depends on the mining model that you are creating and the business problem that you are solving. たとえば、顧客が特定の製品を購入した回数は問題にならず、少なくとも 1 回購入しているかどうかさえわかればよい場合もあれば、In some scenarios you might not care how many times a customer has purchased a particular product, but want to check for the existence of at least one purchase. 購入の数量と順序が重要になる場合もあります。In other scenarios, the quantity and sequence of purchases might be very important.

品目の順序が重要な場合は、順序を示す追加の列が必要になることもあります。If the order of items is important, you might need an additional column that indicates the sequence. シーケンス クラスター アルゴリズムを使用してモデルを作成する際には、品目の順序を表す追加の key sequence 列を選択する必要があります。When you use the sequence clustering algorithm to create a model, you must choose an additional key sequence column to represent the order of the items. key sequence 列は、シーケンス クラスター モデルだけで使用される特別な種類の入れ子になったキーで、一意の数値データ型を必要とします。The key sequence column is a special kind of nested key that is used only in sequence clustering models, and requires a unique numeric data type. たとえば、整数と日付はどちらも key sequence 列として使用できますが、すべてのシーケンス値が一意である必要があります。For example, integers and dates can both be used as a key sequence column, but all sequence values must be unique. シーケンス クラスター モデルには、key sequence 列のほかに、モデル化される属性 (購入された製品など) を表す入れ子になったテーブル キーもあります。In addition to the key sequence column, a sequence clustering model also has a nested table key that represents the attribute that is being modeled, such as the products that have been purchased.

入れ子になったテーブルのキー以外の入れ子になった列の使用Using Non-Key Nested Columns from a Nested Table

ケース テーブルと入れ子になったテーブルの間の結合を定義し、入れ子になったテーブルのキーとして使用する興味深い一意の属性を含む列を選択したら、入れ子になったテーブルのその他の列を追加して、モデルへの入力として使用することができます。After you have defined the join between the case table and the nested table, and you have chosen a column that contains interesting and unique attributes to use as the nested table key, you can include other columns from the nested table to use as input to the model. 入れ子になったテーブルのすべての列を、入力、予測と入力、または予測のみに使用できます。All columns from the nested table can be used for input, prediction and input, or for prediction only.

たとえば入れ子になったテーブルに、ProductProductQuantity ProductPrice の各列が含まれていて、入れ子になったテーブルのキーとして Product を選択した場合に、ProductQuantity をマイニング構造に追加して入力として使用することができます。For example, if the nested table contains the columns Product, ProductQuantity, and ProductPrice, you might choose Product as the nested table key, but add ProductQuantity to the mining structure to use as input.

入れ子になったテーブルのデータのフィルター処理Filtering Nested Table Data

SQL Server 2017SQL Server 2017では、データ マイニング モデルのトレーニング用やテスト用のデータに対するフィルターを作成できます。In SQL Server 2017SQL Server 2017, you can create filters on the data that is used to train or test a data mining model. フィルターは、モデルの構成に影響を与えるまたはケースのサブセットでモデルのテストに使用できます。A filter can be used to affect the composition of the model, or to test the model on a subset of cases. 入れ子になったテーブルにフィルターを適用することもできます。Filters can also be applied to nested tables. ただし、入れ子になったテーブルで使用できる構文には制限があります。However, there are limitations on the syntax that can be used with nested tables.

入れ子になったテーブルでは、属性の存在の有無をテストするためによくフィルターが使用されます。Often when you apply a filter to a nested table you are testing for the existence or nonexistence of an attribute. たとえば、フィルターを適用することにより、モデルで使用するケースを、入れ子になったテーブルに指定した値を持つケースのみに制限したり、For example, you can apply a filter that restricts the cases used in the model to only those cases that have a specified value in the nested table. 特定の品目を購入したことがない顧客のみに制限したりすることができます。Or, you could restrict the cases used in the model to customers who have not purchased a particular item.

入れ子になったテーブルのフィルターを作成するときには、"より大きい" や "より小さい" などの演算子を使用することもできます。When you create filters on a nested table, you can also use operators such as greater than or less than. たとえば、モデルで使用するケースを、対象の製品を n 単位以上購入した顧客だけに制限することができます。For example, you could restrict the cases used in the model to customers who had purchased at least n units of the target product. 入れ子になったテーブルの属性にフィルターを適用できることによってモデルのカスタマイズの幅が大きく広がります。The ability to filter on nested table attributes provides great flexibility for customizing models.

モデル フィルターの作成と使用の方法の詳細については、「マイニング モデルのフィルター選択 (Analysis Services - データ マイニング)」を参照してください。For more information about how to create and use model filters, see Filters for Mining Models (Analysis Services - Data Mining).

参照See Also

データ マイニング アルゴリズム (Analysis Services - データ マイニング) Data Mining Algorithms (Analysis Services - Data Mining)
マイニング構造 (Analysis Services - データ マイニング)Mining Structures (Analysis Services - Data Mining)