Développement d'IHM (Installation)  

Posted by Gregoire Saintenac

Quand on parle de transcodage ou de DQM, on à souvent besoin de de faire appel à quelques interfaces graphique pour gérer ces données. (histoire de pas donner la main à nos MOA sur les tables de la base de donnée, ou encore gérer des allers retour de fichiers Excel !!! LOL)


Donc installation d'un petit serveur local en quelques minutes
un petit .bat : launchwebdev.bat contenant : C:\Program Files\Common Files\microsoft shared\DevServer\10.0\WebDev.WebServer40.exe /port:8080 /path:D:\laboweb

Reste plus qu'à construire les pages ASPX !

Agile Datawarehousing. Ralph Hughes  

Posted by Gregoire Saintenac in , , ,

Après avoir testé SCRUM sur des projets BI, c'est avec conviction que je recommande ce livre de Ralph Hughes. On y trouvera des analyses, des comparatifs sur fond de méthode SCRUM. avec une remise à plat de l'ensemble des composant d'un projet AGILE.



http://www.amazon.com/exec/obidos/ASIN/0595471676/ambysoftinc

http://www.agiledata.org/essays/dataWarehousingBestPractices.html

The Kimball Group Reader  

Posted by Gregoire Saintenac in ,

Un condensé de bonnes pratiques des précédents ouvrages et de nombreuses mises à jour !
à noté:

  • une approche avec du MDM
  • 2 chapitres spécifiques Microsoft
  • Une approche des méthodes Agile...

bref tendance ! à avoir au bureau prêt du PC

sur AMAZON

SSRS - MDX : Utilisation des attributs de membre dans un rapport  

Posted by Fleid in ,

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

Post à venir  

Posted by Gregoire Saintenac

- Gestion de projet Agile et Microsoft BI
- SCD sur mesure (Type II)
- Retour d'expériences BO XI R2 et DataStage

OSQL  

Posted by Gregoire Saintenac in

Lors de l'utilisation de la commande OSQL,
vous avez la possibilité de lancer des fichiers de commandes .sql, très pratique pour mettre en production l'initialisation d'un Datawarehouse.

Ces fichiers de requêtes SQL utilisent la commande INSERT dans des champs de type varchar.
si le fichier contient des "ï,é..." il seront passés en caractères spéciaux du type "U,É...".
Cette erreur vient de l'interprétation du fichier via la commande OSQL.

la solution que j'utilise aujourd'hui, est la convertion du fichier SQL de ANSI en unicode.

Passé ce problème l'utilisation de OSQL reste très simple : depuis command ou dans un .bat la ligne suivante permet le lancement d'un fichier SQL
osql -E -S "votre serveur" -i Script.sql

SSRS - MDX : Utilisation des requètes récursives  

Posted by Fleid in ,

Afin de disposer des propriétés ParentUniqueName ou Level dans les rapports de SSRS, il peut être utile de formuler sa requête MDX comme suit.

En effet dans le cas de dimensions parent-enfant SSRS arrive à communiquer avec SSAS pour obtenir ces infos. Pour toutes les autres dimensions cela ne fonctionne pas, et l'utilisation de cette syntaxe permet de contourner ce manque et de disposer des propriétés attendues. Pour certains rapports tordus cela peut être bien utile!


WITH

MEMBER [Measures].[UniqueName] as axis(1).item(0).item(0).hierarchy.currentmember.uniquename
MEMBER [Measures].[ParentUniqueName] as axis(1).item(0).item(0).hierarchy.currentmember.parent.uniquename
MEMBER [Measures].[P2UniqueName] as axis(1).item(0).item(0).hierarchy.currentmember.parent.parent.uniquename
MEMBER [Measures].[ParentName] as axis(1).item(0).item(0).hierarchy.currentmember.parent.name
MEMBER [Measures].[Name] as axis(1).item(0).item(0).hierarchy.currentmember.name
MEMBER [Measures].[Level] as axis(1).item(0).item(0).hierarchy.currentmember.level.ordinal

SELECT

{[Measures].[UniqueName],[Measures].[ParentUniqueName], [Measures].[Name], [Measures].[ParentName], [Measures].[P2UniqueName] , [Measures].[Level], [Measures].[Nb Employés] } ON COLUMNS,

NonEmpty(
{ STRTOMEMBER(@DimOrganisationOrganisation, CONSTRAINED).CHILDREN
}) ON ROWS

FROM [CubeDWH]
WHERE (STRTOSET(@DimTempsTemps, CONSTRAINED))