Tables imbriquées (Analysis Services - Exploration de données)Nested Tables (Analysis Services - Data Mining)

S’APPLIQUE À :ouiSQL Server Analysis ServicesnonAzure Analysis ServicesAPPLIES TO:yesSQL Server Analysis ServicesnoAzure Analysis Services

Dans SQL ServerSQL Server Analysis ServicesAnalysis Services, les données doivent être fournies à un algorithme d’exploration de données sous la forme d’une série de cas inclus dans une table de cas.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. Toutefois, tous les cas ne peuvent pas être décrits par une ligne de données unique.However, not all cases can be described by a single row of data. Par exemple, un cas peut être dérivé de deux tables : une qui contient des informations sur les clients et une autre qui contient les achats des clients.For example, a case might be derived from two tables: one table that contains customer information, and another table that contains customer purchases. Un client unique présent dans la table des informations sur les clients peut avoir plusieurs articles dans la table des achats des clients, ce qui rend difficile la description des données à l'aide d'une seule ligne.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 ServicesFournit une méthode unique pour gérer de tels cas, à l’aide de tables imbriquées. provides a unique method for handling these cases, by using nested tables. Le concept d'une table imbriquée est illustré dans la figure ci-dessous.The concept of a nested table is demonstrated in the following illustration.

Deux tables combinées à l’aide d’une table imbriquéeTwo tables combined by using a nested table

Dans ce diagramme, la première table, qui correspond à la table parent, contient des informations sur les clients et associe un identificateur unique à chaque client.In this diagram, the first table, which is the parent table, contains information about customers, and associates a unique identifier for each customer. La deuxième table, la table enfant, contient les achats de chaque client.The second table, the child table, contains the purchases for each customer. Les achats figurant dans la table enfant sont liés à la table parent par l’identificateur unique, à savoir la colonne CustomerKey .The purchases in the child table are related to the parent table by the unique identifier, the CustomerKey column. La troisième table du diagramme montre les deux tables associées.The third table in the diagram shows the two tables combined.

Une table imbriquée est représentée dans la table de cas sous la forme d’une colonne spéciale dont le type de données est TABLE.A nested table is represented in the case table as a special column that has a data type of TABLE. Pour toute ligne de cas particulière, ce type de colonne contient des lignes sélectionnées à partir de la table enfant qui se rapportent à la table parent.For any particular case row, this kind of column contains selected rows from the child table that pertain to the parent table.

Les données d'une table imbriquée peuvent être utilisées pour les prédictions ou en entrée, ou pour les deux.The data in a nested table can be used for prediction or for input, or for both. Par exemple, vous pouvez avoir deux colonnes de table imbriquée dans un modèle : une colonne de table imbriquée peut contenir une liste des produits achetés par un client, l'autre colonne contenant des informations sur les passe-temps favoris du client, informations obtenues à partir d'une étude.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. Dans ce scénario, vous pouvez utiliser les passe-temps favoris du client comme entrée pour analyser son comportement d'achat et prédire ses achats probables.In this scenario, you could use the customer's hobbies and interests as an input for analyzing purchasing behavior, and predicting likely purchases.

Jointure de tables de cas et de tables imbriquéesJoining Case Tables and Nested Tables

Pour créer une table imbriquée, les deux tables sources doivent contenir une relation définie afin que les éléments d'une table puissent être liés à l'autre table.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. Dans Outils de données SQL Server (SSDT)SQL Server Data Tools (SSDT), vous pouvez définir cette relation dans la vue de source de données.In Outils de données SQL Server (SSDT)SQL Server Data Tools (SSDT), you can define this relationship in the data source view.

Note

Le champ CustomerKey est la clé relationnelle utilisée pour lier la table de cas et la table imbriquée dans la définition de la vue de source de données, et pour établir la relation des colonnes dans la structure d’exploration de données.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. Toutefois, il est déconseillé d'utiliser cette clé relationnelle dans les modèles d'exploration de données reposant sur cette structure.However, typically you should not use this relational key in mining models built on that structure. En général, il vaut mieux omettre la colonne clé relationnelle du modèle d'exploration de données si elle sert uniquement à joindre les tables et qu'elle ne fournit pas d'informations utiles dans le cadre de l'analyse.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.

Vous pouvez créer des tables imbriquées par programmation en utilisant le langage DMX (Data Mining Extensions) ou des objets AMO (Analysis Management Objects), ou en utilisant l'Assistant Exploration de données et le Concepteur d'exploration de données dans Outils de données SQL Server (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 Outils de données SQL Server (SSDT)SQL Server Data Tools (SSDT).

Utilisation de colonnes de table imbriquée dans un modèle d'exploration de donnéesUsing Nested Table Columns in a Mining Model

Dans la table de cas, la clé est souvent un ID de client, un nom de produit ou une date dans une série, c'est-à-dire des données qui identifient de façon unique une ligne dans la table.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. .. Toutefois, dans les tables imbriquées, la clé n'est pas en général la clé relationnelle (ou clé étrangère), mais plutôt la colonne qui représente l'attribut que vous modélisez.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.

Par exemple, si la table de cas contient des commandes et que la table imbriquée contient les articles de la commande, vous voudrez sans doute modéliser la relation entre les articles stockés dans la table imbriquée sur plusieurs commandes, qui sont stockées dans la table de cas.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. Par conséquent, bien que la table imbriquée Items soit jointe à la table de cas Orders par la clé relationnelle OrderID, vous ne devez pas utiliser OrderID comme clé de table imbriquée.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. Au lieu de cela, sélectionnez la colonne Items comme clé de table imbriquée, car cette colonne contient les données à modéliser.Instead, you would select the Items column as the nested table key, because that column contains the data that you want to model. Dans la plupart des cas, vous pouvez ignorer en toute sécurité OrderID dans le modèle d’exploration de données, car la relation entre la table de cas et la table imbriquée a déjà été établie par la définition de la vue de source de données.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.

Lorsque vous choisissez une colonne à utiliser comme clé de table imbriquée, vous devez vous assurer que les valeurs dans cette colonne sont uniques pour chaque cas.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. Par exemple, si la table de cas représente des clients et que la table imbriquée représente des articles achetés par le client, vous devez vérifier qu'aucun article n'est répertorié plus d'une fois par client.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. Si un client a acheté le même article plusieurs fois, vous pouvez créer une vue différente avec une colonne qui agrège le nombre d'achats pour chaque produit unique.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.

La manière dont vous décidez de gérer les valeurs en double dans une table imbriquée dépend du modèle d'exploration de données que vous créez et du problème d'entreprise que vous tentez de résoudre.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. Dans certains scénarios, vous pouvez ne pas vous préoccuper du nombre de fois où un client a acheté un produit particulier mais plutôt de l'existence d'au moins un achat.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. Dans d'autres scénarios, la quantité et la séquence des achats peuvent être très importantes.In other scenarios, the quantity and sequence of purchases might be very important.

Si l'ordre des articles est important, vous pouvez avoir besoin d'une colonne supplémentaire qui indique la séquence.If the order of items is important, you might need an additional column that indicates the sequence. Quand vous utilisez l’algorithme Sequence Clustering pour créer un modèle, vous devez choisir une colonne séquence clé supplémentaire pour représenter l’ordre des articles.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. La colonne de séquence clé est un type spécial de clé imbriquée qui est utilisée uniquement dans les modèles Sequence Clustering et qui nécessite un type de données numérique unique.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. Par exemple, des entiers et des dates peuvent être utilisés comme colonne de séquence clé, mais toutes les valeurs de séquence doivent être uniques.For example, integers and dates can both be used as a key sequence column, but all sequence values must be unique. Outre la colonne de séquence clé, un modèle Sequence Clustering possède également une clé de table imbriquée qui représente l'attribut modélisé, par exemple les produits achetés.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.

Utilisation de colonnes imbriquées non-clés à partir d'une table imbriquéeUsing Non-Key Nested Columns from a Nested Table

Après avoir défini la jointure entre la table de cas et la table imbriquée, puis choisi une colonne contenant des attributs intéressants et uniques à utiliser comme clé de table imbriquée, vous pouvez inclure d'autres colonnes de la table imbriquée à utiliser comme entrée au modèle.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. Toutes les colonnes de la table imbriquée peuvent être utilisées pour l'entrée, la prédiction et l'entrée, ou uniquement la prédiction.All columns from the nested table can be used for input, prediction and input, or for prediction only.

Par exemple, si la table imbriquée contient les colonnes Product, ProductQuantityet ProductPrice, vous pouvez choisir Product comme clé de table imbriquée et ajouter ProductQuantity à la structure d’exploration de données pour une utilisation comme entrée.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.

Filtrage de données de table imbriquéeFiltering Nested Table Data

Dans SQL Server 2017SQL Server 2017, vous pouvez créer des filtres sur les données utilisées pour effectuer l'apprentissage d'un modèle d'exploration de données ou le tester.In SQL Server 2017SQL Server 2017, you can create filters on the data that is used to train or test a data mining model. Un filtre peut être utilisé pour affecter la composition du modèle, ou pour tester le modèle sur un sous-ensemble de cas.A filter can be used to affect the composition of the model, or to test the model on a subset of cases. Des filtres peuvent également être appliqués aux tables imbriquées.Filters can also be applied to nested tables. Toutefois, la syntaxe pouvant être utilisée avec les tables imbriquées présente certaines limites.However, there are limitations on the syntax that can be used with nested tables.

Souvent, lorsque vous appliquez un filtre à une table imbriquée, vous testez l'existence ou la non-existence d'un attribut.Often when you apply a filter to a nested table you are testing for the existence or nonexistence of an attribute. Par exemple, vous pouvez appliquer un filtre qui restreint les cas utilisés dans le modèle à ceux ayant une valeur spécifiée dans la table imbriquée.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. Ou, vous pouvez restreindre les cas utilisés dans le modèle aux clients qui n'ont pas acheté un article particulier.Or, you could restrict the cases used in the model to customers who have not purchased a particular item.

Lorsque vous créez des filtres sur une table imbriquée, vous pouvez également utiliser des opérateurs tels que « supérieur à » et « inférieur à ».When you create filters on a nested table, you can also use operators such as greater than or less than. Par exemple, vous pouvez restreindre les cas utilisés dans le modèle aux clients qui ont acheté au moins n unités du produit cible.For example, you could restrict the cases used in the model to customers who had purchased at least n units of the target product. La capacité de filtrer les attributs de table imbriquée offre une grande souplesse dans la personnalisation des modèles.The ability to filter on nested table attributes provides great flexibility for customizing models.

Pour plus d’informations sur la création et l’utilisation de filtres de modèle, consultez Filtres pour les modèles d’exploration de données (Analysis Services - Exploration de données).For more information about how to create and use model filters, see Filters for Mining Models (Analysis Services - Data Mining).

Voir aussiSee Also

Algorithmes d’exploration de données ( Analysis Services - Exploration de données ) Data Mining Algorithms (Analysis Services - Data Mining)
Les Structures d’exploration de données & #40 ; Analysis Services - Exploration de données & #41 ;Mining Structures (Analysis Services - Data Mining)