OVH Cloud OVH Cloud

test

1 réponse
Avatar
Damien
Hello,

J'ai quelques des difficultés avec la syntaxe de la requête MDX suivante.

Soit un Cube "Marges" avec les dimensions suivantes :

Dimension : Periode (Tous),Annee,Mois
Dimension : Clients parent-enfant
Dimension : Agences (Tous),Code agence

Mesures du cube :

- ca réel,
- ca prov,
- marge,
- taux marge (membre calculé)
-> schématiquement : marge / ( [ca réel]+[ca prov] )

L'utilisateur sélectionne dans des listes :
- un client,
- une période de début,
- une période de fin

L'idée c'est d'afficher un tableau avec :
- en lignes les agences,
- en colonnes : le détail de la marge, du CA et du taux de marge
pour chaque période mensuelle et pour l'ensemble
de la période

comme ceci :

Total période 01/2005 02/2005 03/2005 04/2005 05/2005
------------------------------------------------------
Agence1 ca | 60000 10000 10000 10000 20000 10000
marge | 600 100 100 100 200
100
taux | 1% 1% 1% 1% 1%
1%

Agence2 ca |
marge |
taux |
........ |
AgenceN ca |



WITH

/* CA = ca réel + ca provisionné */
MEMBER [Measures].[CA] AS
'Measures.[ca réel] + Measures.[ca prov]'

/* total de la marge cumulée sur la période */
MEMBER [Measures].[sum_marge] AS
'Sum(
{
[Periode].[Annee].&[2005].&[1]:[Periode].[Annee].&[2005].&[6]
},
Measures.[Marge])'

/* total du CA cumulé sur la période */
MEMBER [Measures].[sum_ca] AS
'Sum(
{[Periode].[Annee].&[2005].&[1]:[Periode].[Annee].&[2005].&[6]}
,
Measures.[CA]
)'

/* taux de marge sur la période complète */
MEMBER [Measures].[taux] AS
'Measures.[sum_marge] / Measures.[sum_ca]',
FORMAT_STRING = 'Percent'

MEMBER [Periode].[Total Periode] AS
'Iif(Measures.CurrentMember.Properties("Caption") <> "Marge",
Iif(Measures.CurrentMember.Properties("Caption")) <> "Taux marge",
[Measures].[sum_ca],
[Measures].[taux]
),
Measures.[sum_marge])'

Select
{
[Periode].[Total Periode],
[Periode].[Annee].&[2005].&[1]:[Periode].[Annee].&[2005].&[6]
}
ON Columns,

Non Empty CrossJoin(
Agences.[Code agence].Members,
{Measures.[CA], Measures.[Marge], Measures.[Taux marge]}
) On Rows
From Marges
Where {Clients.&[4098]}

Le problème, c'est que le total du CA sur la période est égal au double de
ce qu'il devrait être,
dans le tuple ([Total Periode],Measures.[CA])

Merci de votre aide

Damien

1 réponse

Avatar
Damien
No reply

Hello,

J'ai quelques des difficultés avec la syntaxe de la requête MDX suivante.

Soit un Cube "Marges" avec les dimensions suivantes :

Dimension : Periode (Tous),Annee,Mois
Dimension : Clients parent-enfant
Dimension : Agences (Tous),Code agence

Mesures du cube :

- ca réel,
- ca prov,
- marge,
- taux marge (membre calculé)
-> schématiquement : marge / ( [ca réel]+[ca prov] )

L'utilisateur sélectionne dans des listes :
- un client,
- une période de début,
- une période de fin

L'idée c'est d'afficher un tableau avec :
- en lignes les agences,
- en colonnes : le détail de la marge, du CA et du taux de marge
pour chaque période mensuelle et pour l'ensemble
de la période



comme ceci :

Total période 01/05 02/05 03/05 04/05 05/05
------------------------------------------------------
Agence1 ca | 6000 1000 1000 1000 2000 1000
marge | 600 100 100 100 200 100
taux | 10% 10% 10% 10% 10% 10%

Agence2 ca |
marge |
taux |
........ |
AgenceN ca |



WITH

/* CA = ca réel + ca provisionné */
MEMBER [Measures].[CA] AS
'Measures.[ca réel] + Measures.[ca prov]'

/* total de la marge cumulée sur la période */
MEMBER [Measures].[sum_marge] AS
'Sum(
{
[Periode].[Annee].&[2005].&[1]:[Periode].[Annee].&[2005].&[6]
},
Measures.[Marge])'

/* total du CA cumulé sur la période */
MEMBER [Measures].[sum_ca] AS
'Sum(
{[Periode].[Annee].&[2005].&[1]:[Periode].[Annee].&[2005].&[6]}
,
Measures.[CA]
)'

/* taux de marge sur la période complète */
MEMBER [Measures].[taux] AS
'Measures.[sum_marge] / Measures.[sum_ca]',
FORMAT_STRING = 'Percent'

MEMBER [Periode].[Total Periode] AS
'Iif(Measures.CurrentMember.Properties("Caption") <> "Marge",
Iif(Measures.CurrentMember.Properties("Caption")) <> "Taux marge",
[Measures].[sum_ca],
[Measures].[taux]
),
Measures.[sum_marge])'

Select
{
[Periode].[Total Periode],
[Periode].[Annee].&[2005].&[1]:[Periode].[Annee].&[2005].&[6]
}
ON Columns,

Non Empty CrossJoin(
Agences.[Code agence].Members,
{Measures.[CA], Measures.[Marge], Measures.[Taux marge]}
) On Rows
From Marges
Where {Clients.&[4098]}

Le problème, c'est que le total du CA sur la période est égal au double de
ce qu'il devrait être,
dans le tuple ([Total Periode],Measures.[CA])

Merci de votre aide

Damien