Petits pièges de la colonne de texte libre en attribut de dimension dans SSAS

La petite anomalie retorde de la semaine nous vient de la colonne de texte libre montée en attribut de dimension dans SSAS.

Exemple de texte libre par David Stewart

Pour un peu de contexte sur le sujet, voir cet article de David Stewart, ou ce topic sur StackOverflow.

L’erreur usuelle dans cette situation c’est d’avoir la valeur NULL corrigée automatiquement par SSAS en chaîne vide (‘’), en conflit avec une éventuelle chaîne vide déjà existante. SSAS crie alors au loup à travers un message relativement clair (« Duplicate attribute key ») qu’on apprend vite à reconnaître.

Aujourd’hui j’ai eu droit à un bonus (« Attribute key not found »), dans le même contexte. Le conflit venait de la chaîne composée d’un espace ‘ ‘ avec la chaîne vide ‘’. En effet malgré la propriété de Key Column Trimming de l’attribut passé à « None » (indiquant en théorie à SSAS de préserver les espaces), l’attribut ‘ ’ disparaissait lors du process de la dimension.

A mon sens un trimming implicite a lieu durant l’une des opérations du process, mais pas toutes. Arrive un moment où SSAS ne retrouve plus ses petits, et c’est le drame. Si un ninja de SSAS veut nous en dire plus, c’est avec plaisir 🙂

La correction est  simple : effectuer le Trimming explicitement (Right ou LeftRight), ainsi tous les accès à la valeur se feront de la même manière et SSAS arrivera à linker tout le monde. S’il vous faut préserver la valeur espace, je vous laisse jouer avec les différentes valeurs des propriétés de colonne clef, ainsi qu’avec les différentes collations de vos serveurs, mais j’ai bien peur que ce soit un bug (j’ai la flemme de chercher sur le connect…). Si par contre c’est juste la différenciation entre les 2 valeurs que vous voulez préserver, n’hésitez pas à corriger la valeur ‘ ’ en par exemple ‘(space)’ dès l’ETL.

D’une manière générale, je vous recommande les settings suivants pour vos colonnes d’attributs en texte libre (sauf la collation, évidemment, il faut s’adapter à la source ;)) :

SSAS - Free Text Dimension Attribute Properties

N’hésitez pas à m’indiquer vos astuces, et amusez-vous bien 😉

Utilisation des attributs d’un cube dans SSRS

L’utilisation des attributs de membres d’un cube SSAS dans un rapport SSRS ne se fait pas de manière transparente.

En effet, alors que les attributs sont visibles dans l’éditeur graphique de source de données SSAS de Reporting Services, ils ne sont pas sélectionnables.

Pour y avoir accès dans un rapport, il est nécessaire de basculer en mode Requête MDX, et de modifier sa requête de la manière suivante:

SELECT

 NON EMPTY { [Measures].[...]} ON COLUMNS,
 NON EMPTY { ([Dimension].[Hierarchy].[Level].ALLMEMBERS * [Dimension].[Hierarhcy].[Level].ALLMEMBERS * ... ) }
 DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME, [Dimension].[Hierarchy].[Level].[Attribute]
 ON ROWS

FROM    [Cube]
WHERE  ...

Les mots clefs DIMENSION PROPERTIES permettent de passer les valeurs des attributs directement dans le résultat de la requête MDX, les rendant accessibles dans l’onglet mise en page de SSRS.

Ainsi, dans le rapport, la syntaxe à utiliser sera :

Fields!######("Nom de l'attribut")

Sources: Braulio Malaga (Avanade) / MSDN

Accéder aux attributs d’un cube dans SSRS

L’utilisation des attributs de membres d’un cube SSAS dans un rapport SSRS ne se fait pas de manière transparente.

En effet, alors que les attributs sont visibles dans l’éditeur graphique de source de données SSAS de Reporting Services, ils ne sont pas sélectionnables.

Pour y avoir accès dans un rapport, il est nécessaire de basculer en mode Requête MDX, et de modifier sa requête de la manière suivante:

SELECT

 NON EMPTY { [Measures].[...]} ON COLUMNS,
 NON EMPTY { ([Dimension].[Hierarchy].[Level].ALLMEMBERS * [Dimension].[Hierarhcy].[Level].ALLMEMBERS * ... ) }
 DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME, [Dimension].[Hierarchy].[Level].[Attribute]
 ON ROWS

FROM    [Cube]
WHERE  ...

Les mots clefs DIMENSION PROPERTIES permettent de passer les valeurs des attributs directement dans le résultat de la requête MDX, les rendant accessibles dans l’onglet mise en page de SSRS.

Ainsi, dans le rapport, la syntaxe à utiliser sera : Fields!######(« Nom de l’attribut »)

Sources:
Blog de Braulio Malaga (Avanade)
MSDN