Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :
SQL Server Analysis Services
Azure Analysis Services
Fabric/Power BI Premium
Le concept de autoexistence limite l’espace du cube aux cellules qui existent réellement dans le cube, par opposition à celles qui pourraient exister en raison de la création de toutes les combinaisons possibles des membres de la hiérarchie d’attributs issue de la même hiérarchie. Cela est dû au fait que les membres d’une hiérarchie d’attributs ne peuvent pas exister avec les membres d’une autre hiérarchie d’attributs dans la même dimension. Lorsque deux hiérarchies d’attributs ou plus de la même dimension sont utilisées dans une instruction SELECT, Analysis Services évalue les expressions des attributs pour s’assurer que les membres de ces attributs sont correctement limités pour répondre aux critères de tous les autres attributs.
Par exemple, supposons que vous travaillez avec des attributs de la dimension Geography. Si vous avez une expression qui renvoie tous les membres de l’attribut City et une autre expression qui limite les membres de l’attribut Country à tous les pays/régions d’Europe, cela entraîne la limite des membres de la ville aux seules villes qui appartiennent à des pays/régions d’Europe. Cela est dû à la caractéristique "auto-existence" des services d'analyse. L'autoexistence s'applique uniquement aux attributs de la même dimension, car elle tente d'empêcher que les enregistrements de cette dimension, exclus par une expression d'attribut, soient inclus par d'autres expressions d'attribut. Le terme "Autoexists" peut également être compris comme l’intersection résultante des différentes expressions d’attributs appliquées aux lignes de dimension.
Existence de cellule
Les cellules suivantes existent toujours :
Membre (All) de chaque hiérarchie, lorsqu’il est croisé avec des membres d’autres hiérarchies dans la même dimension.
Membres calculés lorsqu’ils sont associés à leurs homologues non calculés, ou avec les parents ou descendants de leurs homologues non calculés.
Fourniture de cellules non existantes
Une cellule non existante est une cellule fournie par le système comme réponse à une requête ou un calcul qui demande une cellule qui n’existe pas dans le cube. Par exemple, si vous avez un cube qui a une hiérarchie d’attributs City et une hiérarchie d’attributs Country appartenant à la dimension Geography et une mesure Internet Sales Amount, l’espace de ce cube inclut uniquement les membres qui existent entre eux. Par exemple, si la hiérarchie d’attributs City inclut les villes de New York, Londres, Paris, Tokyo et Melbourne ; et la hiérarchie des attributs Country comprend les pays/régions États-Unis, Royaume-Uni, France, Japon et Australie ; puis l’espace du cube n’inclut pas l’espace (cellule) à l’intersection de Paris et des États-Unis.
Lors de l’interrogation de cellules qui n’existent pas, les cellules non existantes retournent des valeurs Null ; autrement dit, ils ne peuvent pas contenir de calculs et vous ne pouvez pas définir un calcul qui écrit dans cet espace. Par exemple, l’instruction suivante inclut des cellules qui n’existent pas.
SELECT [Customer].[Gender].[Gender].Members ON COLUMNS,
{[Customer].[Customer].[Aaron A. Allen]
,[Customer].[Customer].[Abigail Clark]} ON ROWS
FROM [Adventure Works]
WHERE Measures.[Internet Sales Amount]
Note
Cette requête utilise la fonction Members (Set) (MDX) pour renvoyer l’ensemble de membres de la hiérarchie d’attributs Gender sur l’axe des colonnes et croise ce jeu avec l’ensemble spécifié de membres de la hiérarchie d’attributs Customer sur l’axe des lignes.
Lorsque vous exécutez la requête précédente, la cellule située à l’intersection d’Aaron A. Allen et de Femelle affiche une valeur Null. De même, la cellule à l’intersection d’Abigail Clark et Male affiche une valeur Null. Ces cellules n’existent pas et ne peuvent pas contenir de valeur, mais les cellules qui n’existent pas peuvent apparaître dans le résultat retourné par une requête.
Lorsque vous utilisez la fonction Crossjoin (MDX) pour renvoyer le produit croisé des membres de la hiérarchie d’attributs à partir de hiérarchies d’attributs dans la même dimension, il existe automatiquement limite ces tuples retournés à l’ensemble de tuples qui existent réellement, plutôt que de retourner un produit cartésien complet. Par exemple, exécutez et examinez les résultats de l’exécution de la requête suivante.
SELECT CROSSJOIN
(
{[Customer].[Country].[United States]},
[Customer].[State-Province].Members
) ON 0
FROM [Adventure Works]
WHERE Measures.[Internet Sales Amount]
Note
Notez que 0 est utilisé pour désigner l’axe des colonnes, qui est abrégé pour l’axe(0), qui est l’axe des colonnes.
La requête précédente retourne uniquement les cellules des membres de chaque hiérarchie d’attributs dans la requête qui existent entre eux. La requête précédente peut également être écrite à l’aide de la nouvelle variante * de la fonction * (Crossjoin) (MDX).
SELECT
[Customer].[Country].[United States] *
[Customer].[State-Province].Members
ON 0
FROM [Adventure Works]
WHERE Measures.[Internet Sales Amount]
La requête précédente peut également être écrite de la manière suivante :
SELECT [Customer].[State-Province].Members
ON 0
FROM [Adventure Works]
WHERE (Measures.[Internet Sales Amount],
[Customer].[Country].[United States])
Les valeurs de cellules retournées sont identiques, bien que les métadonnées du jeu de résultats soient différentes. Par exemple, avec la requête précédente, la hiérarchie Country a été déplacée vers l’axe du segment (dans la clause WHERE) et n’apparaît donc pas explicitement dans le jeu de résultats.
Chacune de ces trois requêtes précédentes illustre l’effet du comportement d’existence automatique dans SQL Server SQL Server Analysis Services.
Autoexists profondes et superficielles
Les Autoexists peuvent s'appliquer aux expressions en mode Deep ou Shallow. Deep Autoexists signifie que toutes les expressions seront évaluées pour atteindre l’état le plus profond possible après l’application des expressions de découpage, les expressions de sous-sélection dans l’axe, et ainsi de suite. Shallow Autoexists indiquent que les expressions externes sont évaluées avant l’expression en cours, et que les résultats obtenus sont transmis à celle-ci. Le paramètre par défaut est "deep autoexists".
Le scénario et les exemples suivants faciliteront l'illustration des différents types d’Autoexistss. Dans les exemples suivants, deux ensembles sont créés : l’un en tant qu’expression calculée et l’autre comme expression constante.
//Obtain the Top 10 best reseller selling products by Name
with member [Measures].[PCT Discount] AS '[Measures].[Discount Amount]/[Measures].[Reseller Sales Amount]', FORMAT_STRING = 'Percent'
set Top10SellingProducts as 'topcount([Product].[Model Name].children, 10, [Measures].[Reseller Sales Amount])'
set Preferred10Products as '
{[Product].[Model Name].&[Mountain-200],
[Product].[Model Name].&[Road-250],
[Product].[Model Name].&[Mountain-100],
[Product].[Model Name].&[Road-650],
[Product].[Model Name].&[Touring-1000],
[Product].[Model Name].&[Road-550-W],
[Product].[Model Name].&[Road-350-W],
[Product].[Model Name].&[HL Mountain Frame],
[Product].[Model Name].&[Road-150],
[Product].[Model Name].&[Touring-3000]
}'
select {[Measures].[Reseller Sales Amount], [Measures].[Discount Amount], [Measures].[PCT Discount]} on 0,
Top10SellingProducts on 1
from [Adventure Works]
Le jeu de résultats obtenu est :
| Montant des Ventes des Revendeurs | Montant de la remise | Remise DE PCT | |
|---|---|---|---|
| Montagne-200 | 14 356 699,36 $ | 19 012,71 $ | 0.13% |
| Route 250 | 9 377 457,68 $ | 4 032,47 $ | 0,04% |
| Montagne-100 | 8 568 958,27 $ | 139 393,27 $ | 1.63% |
| Route 650 | 7 442 141,81 $ | 39 698,30 $ | 0,53% |
| Touring-1000 | 6 723 794,29 $ | 166 144,17 $ | 2.47% |
| Route-550-W | 3 668 383,88 $ | 1 901,97 $ | 0,05% |
| Route-350-W | 3 665 932,31 $ | 20 946,50 $ | 0,57% |
| HL Mountain Frame | 3 365 069,27 $ | 174,11 $ | 0.01% |
| Route 150 | 2 363 805,16 $ | 0,00 $ | 0,00% |
| Touring-3000 | 2 046 508,26 $ | 79 582,15 $ | 3.89% |
L'ensemble obtenu de produits semble être identique à Preferred10Products, vérifions donc l'ensemble Preferred10Products :
with member [Measures].[PCT Discount] AS '[Measures].[Discount Amount]/[Measures].[Reseller Sales Amount]', FORMAT_STRING = 'Percent'
set Top10SellingProducts as 'topcount([Product].[Model Name].children, 10, [Measures].[Reseller Sales Amount])'
set Preferred10Products as '
{[Product].[Model Name].&[Mountain-200],
[Product].[Model Name].&[Road-250],
[Product].[Model Name].&[Mountain-100],
[Product].[Model Name].&[Road-650],
[Product].[Model Name].&[Touring-1000],
[Product].[Model Name].&[Road-550-W],
[Product].[Model Name].&[Road-350-W],
[Product].[Model Name].&[HL Mountain Frame],
[Product].[Model Name].&[Road-150],
[Product].[Model Name].&[Touring-3000]
}'
select {[Measures].[Reseller Sales Amount], [Measures].[Discount Amount], [Measures].[PCT Discount]} on 0,
Preferred10Products on 1
from [Adventure Works]
Conformément aux résultats suivants, les deux ensembles (Top10SellingProducts, Preferred10Products) sont les mêmes.
| Montant des Ventes des Revendeurs | Montant de la remise | Remise DE PCT | |
|---|---|---|---|
| Montagne-200 | 14 356 699,36 $ | 19 012,71 $ | 0.13% |
| Route 250 | 9 377 457,68 $ | 4 032,47 $ | 0,04% |
| Montagne-100 | 8 568 958,27 $ | 139 393,27 $ | 1.63% |
| Route 650 | 7 442 141,81 $ | 39 698,30 $ | 0,53% |
| Touring-1000 | 6 723 794,29 $ | 166 144,17 $ | 2.47% |
| Route-550-W | 3 668 383,88 $ | 1 901,97 $ | 0,05% |
| Route-350-W | 3 665 932,31 $ | 20 946,50 $ | 0,57% |
| HL Mountain Frame | 3 365 069,27 $ | 174,11 $ | 0.01% |
| Route 150 | 2 363 805,16 $ | 0,00 $ | 0,00% |
| Touring-3000 | 2 046 508,26 $ | 79 582,15 $ | 3.89% |
L’exemple suivant illustrera le concept de Autoexists profond. Dans l’exemple, nous filtrons Top10SellingProducts selon l'attribut [Ligne de produit] pour ceux du groupe Mountain. Notez que les deux attributs (slicer et axe) appartiennent à la même dimension, [Product].
with member [Measures].[PCT Discount] AS '[Measures].[Discount Amount]/[Measures].[Reseller Sales Amount]', FORMAT_STRING = 'Percent'
set Top10SellingProducts as 'topcount([Product].[Model Name].children, 10, [Measures].[Reseller Sales Amount])'
// Preferred10Products set removed for clarity
select {[Measures].[Reseller Sales Amount], [Measures].[Discount Amount], [Measures].[PCT Discount]} on 0,
Top10SellingProducts on 1
from [Adventure Works]
where [Product].[Product Line].[Mountain]
Produit le jeu de résultats suivant :
| Montant des Ventes des Revendeurs | Montant de la remise | Remise DE PCT | |
|---|---|---|---|
| Montagne-200 | 14 356 699,36 $ | 19 012,71 $ | 0.13% |
| Montagne-100 | 8 568 958,27 $ | 139 393,27 $ | 1.63% |
| HL Mountain Frame | 3 365 069,27 $ | 174,11 $ | 0.01% |
| Montagne-300 | 1 907 249,38 $ | 876,95 $ | 0,05% |
| Montagne-500 | 1 067 327,31 $ | 17 266,09 $ | 1.62% |
| Mountain-400-W | 592 450,05 $ | 303,49 $ | 0,05% |
| LL Mountain Frame | 521 864,42 $ | 252,41 $ | 0,05% |
| ML Mountain Frame-W | 482 953,16 $ | 206,95 $ | 0,04% |
| ML Mountain Frame | 343 785,29 $ | 161,82 $ | 0,05% |
| Shorts de montagne féminins | 260 304,09 $ | 6 675,56 $ | 2.56% |
Dans le jeu de résultats ci-dessus, nous avons sept nouveaux arrivants dans la liste des Top10SellingProducts et Mountain-200, Mountain-100 et HL Mountain Frame ont été déplacés vers le haut de la liste. Dans le jeu de résultats précédent, ces trois valeurs ont été entrelacées.
Cela est appelé Deep Autoexists, car le jeu Top10SellingProducts est évalué pour répondre aux conditions de découpage de la requête. Les Autoexists profonds signifient que toutes les expressions seront évaluées pour atteindre l’espace le plus profond possible après l’application des expressions de découpage, des expressions de sous-sélection dans l’axe, etc.
Toutefois, on pourrait vouloir effectuer l’analyse sur les produits les plus vendus, soit les Top10SellingProducts équivalents aux Preferred10Products, comme dans l’exemple suivant :
with member [Measures].[PCT Discount] AS '[Measures].[Discount Amount]/[Measures].[Reseller Sales Amount]', FORMAT_STRING = 'Percent'
set Top10SellingProducts as 'topcount([Product].[Model Name].children, 10, [Measures].[Reseller Sales Amount])'
set Preferred10Products as '
{[Product].[Model Name].&[Mountain-200],
[Product].[Model Name].&[Road-250],
[Product].[Model Name].&[Mountain-100],
[Product].[Model Name].&[Road-650],
[Product].[Model Name].&[Touring-1000],
[Product].[Model Name].&[Road-550-W],
[Product].[Model Name].&[Road-350-W],
[Product].[Model Name].&[HL Mountain Frame],
[Product].[Model Name].&[Road-150],
[Product].[Model Name].&[Touring-3000]
}'
select {[Measures].[Reseller Sales Amount], [Measures].[Discount Amount], [Measures].[PCT Discount]} on 0,
Preferred10Products on 1
from [Adventure Works]
where [Product].[Product Line].[Mountain]
Produit le jeu de résultats suivant :
| Montant des Ventes des Revendeurs | Montant de la remise | Remise DE PCT | |
|---|---|---|---|
| Montagne-200 | 14 356 699,36 $ | 19 012,71 $ | 0.13% |
| Montagne-100 | 8 568 958,27 $ | 139 393,27 $ | 1.63% |
| HL Mountain Frame | 3 365 069,27 $ | 174,11 $ | 0.01% |
Dans les résultats ci-dessus, le découpage donne un résultat qui contient uniquement les produits de Preferred10Products qui font partie du groupe [Mountain] dans [Product]. [Ligne de produit] ; comme prévu, car Preferred10Products est une expression constante.
Ce jeu de résultats est également connu sous le nom de "Existences Automatiques Superficielles". Cela est dû au fait que l’expression est évaluée avant la clause de découpage. Dans l’exemple précédent, l’expression était une expression constante à des fins d’illustration afin d’introduire le concept.
Le comportement de l’Autoexists peut être modifié au niveau de la session à l’aide de la propriété de chaîne de connexion Autoexists. L’exemple suivant commence par ouvrir une nouvelle session et ajouter la propriété Autoexists=3 à la chaîne de connexion. Vous devez ouvrir une nouvelle connexion pour effectuer l’exemple. Une fois la connexion établie avec le paramètre Autoexist, elle restera en vigueur jusqu’à ce que cette connexion soit finie.
with member [Measures].[PCT Discount] AS '[Measures].[Discount Amount]/[Measures].[Reseller Sales Amount]', FORMAT_STRING = 'Percent'
set Top10SellingProducts as 'topcount([Product].[Model Name].children, 10, [Measures].[Reseller Sales Amount])'
//Preferred10Products set removed for clarity
select {[Measures].[Reseller Sales Amount], [Measures].[Discount Amount], [Measures].[PCT Discount]} on 0,
Top10SellingProducts on 1
from [Adventure Works]
where [Product].[Product Line].[Mountain]
Le jeu de résultats suivant montre maintenant le comportement superficiel d'Autoexists.
| Montant des Ventes des Revendeurs | Montant de la remise | Remise DE PCT | |
|---|---|---|---|
| Montagne-200 | 14 356 699,36 $ | 19 012,71 $ | 0.13% |
| Montagne-100 | 8 568 958,27 $ | 139 393,27 $ | 1.63% |
| HL Mountain Frame | 3 365 069,27 $ | 174,11 $ | 0.01% |
Le comportement Autoexists peut être modifié à l’aide du paramètre AUTOEXISTS=[1|2|3] dans la chaîne de connexion ; consultez Les propriétés XMLA prises en charge (XMLA) et ConnectionString pour l'utilisation des paramètres.
Voir aussi
Concepts clés dans MDX (Analysis Services)
Espace cube
Tuples
Utilisation des membres, des tuples et des ensembles (MDX)
Totaux visuels et totaux non visuels
Référence du langage MDX (MDX)
Informations de référence sur les expressions multidimensionnelles (MDX)