web-dev-qa-db-fra.com

MDX - Obtenir les 6 derniers mois de manière dynamique

J'ai une table sombre appelée DimAccounts. Il décrit un compte d'utilisateur et les dates créées par le compte. par exemple:

enter image description here

J'aimerais obtenir la liste des comptes créés au cours des 6 derniers mois de manière dynamique. Par exemple, aujourd'hui est le 09\01\2016. Donc, ma liste de comptes sera les comptes créés à partir du 01-08-2015 jusqu'à 09-01-2016. Notez que ce champ CreatedOn n'a pas de hiérarchie et c'est un attribut de la dimension des comptes.

3
Shmuel Milavski

En supposant que vous ayez correctement définir la propriété ValueColumn de votre attribut Createon dans votre dimension (de sorte que MemberValue revienne un type de données de date), les éléments suivants doivent alors fonctionner:

select {[Measures].[Your Measure Here]} on 0,
[DimAccounts].[AccountPK].[AccountPK].Members on 1
from [Your Cube]
where {
 Filter(
  [DimAccounts].[CreatedOn].[CreatedOn].Members
  ,[DimAccounts].[CreatedOn].CurrentMember.MemberValue > DateAdd("m",-6,Now())
 )
}

Ou si vous souhaitez créer un ensemble nommé afin que tout utilisateur puisse simplement le laisser tomber sur des lignes, mettez ceci dans l'onglet Calculs de votre concepteur Cube:

CREATE SET CurrentCube.[Accounts Created In Last 6 Months]
as
Exists(
 [DimAccounts].[AccountPK].[AccountPK].Members,
 Filter(
  [DimAccounts].[CreatedOn].[CreatedOn].Members
  ,[DimAccounts].[CreatedOn].CurrentMember.MemberValue > DateAdd("m",-6,Now())
 )
);
5
GregGalloway