# Generic

Le préfixe de chargement Generic permet la conversion des données modélisées entité-attribut-valeur (EAV) en une structure de table relationnelle normalisée standard. La modélisation EAV est également appelée « modélisation de données générique » ou « schéma ouvert ».

Exemple de données modélisées EAV et d'une table relationnelle dénormalisée équivalente

Exemple de données modélisées EAV et d'une table relationnelle dénormalisée équivalente

Exemple de données modélisées EAV et d'une table relationnelle dénormalisée équivalente ![Diagramme montrant la transformation d'un tableau à trois colonnes et cinq lignes en un tableau à quatre colonnes et deux lignes.](https://help.qlik.com/fr-FR/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-generic-EAV-denormalized.png)

Exemple de données modélisées EAV et d'ensemble équivalent de tables relationnelles normalisées

Exemple de données modélisées EAV et d'ensemble équivalent de tables relationnelles normalisées

Exemple de données modélisées EAV et d'ensemble équivalent de tables relationnelles normalisées ![Diagramme montrant la transformation d'un tableau à trois colonnes et cinq lignes en trois tableaux distincts.](https://help.qlik.com/fr-FR/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-generic-EAV-normalized.png)

Bien qu'il soit techniquement possible de charger et d'analyser des données modélisées EAV dans Qlik, il est souvent plus facile de travailler avec une structure de données relationnelle traditionnelle équivalente.

Generic( loadstatement | selectstatement )

* Pour plus d'informations sur l'utilisation des instructions LOAD, voir [Load](https://help.qlik.com/fr-FR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Load.htm).
* Pour plus d'informations sur l'utilisation des instructions SELECT, voir [Select](https://help.qlik.com/fr-FR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Select.htm).

Ces rubriques peuvent vous aider à utiliser cette fonction :

Rubriques connexes

| Rubrique | Description |
| --- | --- |
| [Crosstable](https://help.qlik.com/fr-FR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/crosstable.htm) | Le préfixe de chargement `Crosstable` transforme les données orientées à l'horizontale en données orientées à la verticale. D'un point de vue purement fonctionnel, il effectue la transformation opposée à celle du préfixe de chargement `Generic`, même si les préfixes servent généralement des cas d'usage entièrement différents. |
| [Bases de données génériques](https://help.qlik.com/fr-FR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/DataSource/generic-databases.htm) | Vous trouverez ici des modèles de données structurées EAV. |

## Exemple 1 – Transformation de données structurées EAV avec le préfixe de chargement Generic

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Generic.htm)

#### Script de chargement et expression de graphique

Vue d'ensemble

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à un nouvel onglet.

Le script de chargement contient un jeu de données qui est chargé dans une table nommée `Transactions`. Le jeu de données inclut un champ de date. La définition `MonthNames` par défaut est utilisée.

Script de chargement

```
Products:
Generic
Load * inline [
Product ID, Attribute, Value
13, Status, Discontinued
13, Color, Brown
20, Color, White
13, Size, 13-15
20, Size, 16-18
2, Status, Discontinued
5, Color, Brown
2, Color, White
44, Color, Brown
45, Size, 16-18
45, Color, Brown
];
```

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ce champ comme dimension : `Color`.

Ajoutez cette mesure :

`=Count([Product ID])`

Vous pouvez maintenant inspecter le nombre de produits par couleur.

Tableau de résultats

| Couleur | =Count([Product ID]) |
| --- | --- |
| Marron | 4 |
| Blanc | 2 |

Notez la forme du modèle de données, où chaque attribut a été divisé en une table distincte nommée en fonction de la balise de table cible d'origine `Product`. Chaque table a l'attribut comme suffixe. Par exemple, `Product.Color`. Les enregistrements de sortie Product Attribute obtenus sont associés par `Product ID`.

Représentation des résultats dans le visionneur de modèle de données

Représentation des résultats dans le visionneur de modèle de données

Représentation des résultats dans le visionneur de modèle de données ![Représentation des résultats de cet exemple tels qu'ils apparaissent dans le visionneur de modèle de données.](https://help.qlik.com/fr-FR/sense/May2026/Subsystems/Hub/Content/Resources/Images/scripting-functions-generic-results-data-model-viewer.png)

Tableau d'enregistrements obtenu : Products.Status

| ID de produit | Statut |
| --- | --- |
| 13 | Discontinué |
| 2 | Discontinué |

Tableau d'enregistrements obtenu : Products.Size

| ID de produit | Taille |
| --- | --- |
| 13 | 13-15 |
| 20 | 16-18 |
| 45 | 16-18 |

Tableau d'enregistrements obtenu : Products.Color

| ID de produit | Couleur |
| --- | --- |
| 13 | Marron |
| 5 | Marron |
| 44 | Marron |
| 45 | Marron |
| 20 | Blanc |
| 2 | Blanc |

## Exemple 2 – Analyse des données structurées EAV sans le préfixe de chargement Generic

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Generic.htm)

#### Script de chargement et expression de graphique

Vue d'ensemble

Cet exemple montre comment analyser des données structurées EAV dans leur format d'origine.

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à un nouvel onglet.

Le script de chargement contient un jeu de données qui est chargé dans une table nommée `Products` dans une structure EAV.

Dans cet exemple, nous comptons toujours les produits par attribut de couleur. Afin d'analyser des données structurées de cette manière, vous devrez appliquer un filtrage au niveau de l'expression des produits portant la valeur Attribute `Color`.

De plus, les attributs individuels ne peuvent pas être sélectionnés sous forme de dimensions ou de champs, ce qui complique la création de visualisations efficaces.

Script de chargement

```
Products:
Load * Inline
[
Product ID, Attribute, Value
13, Status, Discontinued
13, Color, Brown
20, Color, White
13, Size, 13-15
20, Size, 16-18
2, Status, Discontinued
5, Color, Brown
2, Color, White
44, Color, Brown
45, Size, 16-18
45, Color, Brown
];
```

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ce champ comme dimension : `Value`.

Créez la mesure suivante :

`=Count({<Attribute={'Color'}>} [Product ID])`

Vous pouvez maintenant inspecter le nombre de produits par couleur.

Tableau d'enregistrements obtenu : Products.Status

| Valeur | =Count({&lt;Attribute={'Color'}&gt;} [Product ID]) |
| --- | --- |
| Marron | 4 |
| Blanc | 2 |

## Exemple 3 – Dénormalisation des tableaux de sortie obtenus d'un chargement Generic (avancé)

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Generic.htm)

#### Script de chargement et expression de graphique

Vue d'ensemble

Dans cet exemple, nous montrons comment la structure des données normalisée produite par le préfixe de chargement `Generic` peut être de nouveau dénormalisée dans un tableau de dimensions `Product` consolidé. Il s'agit d'une technique de modélisation avancée qui peut être utilisée dans le cadre du réglage fin des performances d'un modèle de données.

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à un nouvel onglet.

Script de chargement

```
Products:

Generic
Load * inline [
Product ID, Attribute, Value
13, Status, Discontinued
13, Color, Brown
20, Color, White
13, Size, 13-15
20, Size, 16-18
2, Status, Discontinued
5, Color, Brown
2, Color, White
44, Color, Brown
45, Size, 16-18
45, Color, Brown
];

RENAME TABLE Products.Color TO Products;

OUTER JOIN (Products)
LOAD * RESIDENT Products.Size;
						
OUTER JOIN (Products)
LOAD * RESIDENT Products.Status;
DROP TABLES Products.Size,Products.Status;
```

Résultats

Ouvrez le visionneur de modèle de données et notez la forme du modèle de données obtenu. Un seul tableau dénormalisé est présent. Il s'agit d'une combinaison des trois tableaux de sortie intermédiaires : `Products.Size`, `Products.Status` et `Products.Color`.

Modèle de données interne obtenu

| Produits |
| --- |
| ID de produit |
| Statut |
| Couleur |
| Taille |

Tableau d'enregistrements obtenu : Products

| ID de produit | Statut | Couleur | Taille |
| --- | --- | --- | --- |
| 13 | Discontinué | Marron | 13-15 |
| 20 | - | Blanc | 16-18 |
| 2 | Discontinué | Blanc | - |
| 5 | - | Marron | - |
| 44 | - | Marron | - |
| 45 | - | Marron | 16-18 |

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ce champ comme dimension : `Color`.

Ajoutez cette mesure :

`=Count([Product ID])`

Tableau de résultats

| Couleur | =Count([Product ID]) |
| --- | --- |
| Marron | 4 |
| Blanc | 2 |

## En savoir plus

* [Load](https://help.qlik.com/fr-FR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Load.htm)
* [Select](https://help.qlik.com/fr-FR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/Select.htm)
* [Crosstable](https://help.qlik.com/fr-FR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/crosstable.htm)
* [Bases de données génériques](https://help.qlik.com/fr-FR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/DataSource/generic-databases.htm)