BI experience

2 mai 2013
par maryam khiali
0 Commentaires

Astuce F7 analysis services

Je ne sais pas comment vous faites actuellement pour scheduler le process de vos cubes, mais voici une solution parmi d’autres :

1- Créer un lot SSIS dédié
2- Utiliser le composant : Analysis Services Execute DDL Task

3- Déclarer une connexion SSAS dans mon lot
4- dans le composant, indiquer :

  • la connexion SSAS précédement créée
  • ensuite pour mettre le bon script XMLA, c’est à ce moment précis que l’astuce F7 intervient :

il faut aller
dans management studio >sur l’instance OLAP > sur le cube que vous voulez processer>se mettre sur le dossier Dimension et appuyer sur F7.

Vos dimensions s’affichent dans l’ « Objet Explorer Details ». Il ne vous reste plus qu’à toutes les séléctionner et à faire clique droit process. Dans la fenêtre qui s’affiche à vous cliquez sur « Script » et prendre « Script action to new query window ».

Vous pouvez maintenant récupérer le script XMLA qui s’affiche et le mettre directement dans le composant SSIS :

Faire la même chose avec la partie cube, et voilà! Votre lot de process est fait…

Pour scheduler le process du cube, il ne restera qu’à créer un job avec un step pointant sur ce lot après mise à jour de votre datawarehouse, de vos datamarts.

Et vous, comment faites vous actuellement?

25 avril 2013
par maryam khiali
0 Commentaires

Astuce curseur

Dans certains cas, nous avons besoin des curseurs pour boucler sur une information afin de faire un traitement en masse.

Voici 2 cas ou j’ai eu besoin d’utiliser des curseurs avec SQL server:

CAS 1: je devais, pour répondre aux besoins d’une présentation, simuler des données. A partir d’une table ou j’avais des utilisateurs, j’ai alimenté une table répertoriant des connexions. Le but étant de voir comment les utilisateurs se connectent à une plateforme.

DECLARE db_cursor CURSOR
FOR SELECT id, userid FROM moodle_mdl_log
WHERE userid = 0  and module = ‘login’

DECLARE @id int
DECLARE @userid int

OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @id, @userid

WHILE @@FETCH_STATUS = 0
BEGIN
/*PRINT @id*/
UPDATE moodle_mdl_log
SET userid = (SELECT TOP 1 id FROM dbo.randuser order by NEWID())
WHERE CURRENT of db_cursor
FETCH NEXT FROM db_cursor INTO @id, @userid
END

CLOSE db_cursor
DEALLOCATE db_cursor

CAS 2 : A un instant t du projet, la base de production a été copiée en recette : des données de production se sont donc retrouvées en recette. Les utilisateurs m’ont alors demandés de tout vider et de tout recharger. Pour vider les tables en masse j’ai donc utilisé un cureur.

DECLARE db_cursor CURSOR
FOR SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE Table_Type=’BASE TABLE’ and TABLE_NAME NOT IN (‘xxx’,'yyy’) and TABLE_NAME NOT LIKE (‘Tmp%’)
DECLARE @table varchar(50)
OPEN db_cursor

FETCH NEXT FROM db_cursor INTO @table
WHILE @@FETCH_STATUS = 0
BEGIN
/*PRINT @id*/
exec(‘TRUNCATE TABLE ‘ + @table)
FETCH NEXT FROM db_cursor INTO @table
END

CLOSE db_cursor
DEALLOCATE db_cursor

Rien d’extraordinaire pour ce post mais ça pourra peut être servir…

19 février 2013
par maryam khiali
0 Commentaires

Connexion MySQL avec SSIS

Je ne sais pas si vous avez déjà essayé mais créer une connexion SSIS ça peut être laborieux…Alors comme tout le monde, j’ai suivi des procédures comme celle décrite sur ce blog.

Donc voici la configuration que j’avais :

  • SQL server 2008R2 avec le suite BI
  • MySQL server 5.5
  • installation du connecteur-net 6.6.4.msi
  • installation mysql connector odbc 5.2.3-win32.msi ( car je sais que le 64bits ne fonctionnera pas)
  • projet SSIS a pour propriété runtime64bits à false.
  • création d’une connexion ODBC à traver odbcad32.exe présent dans C:\windows\sysWOW64. Cette connexion fonctionne dans connexion system.

Dans SSIS que je créé une connexion ADO.net
-avec le provider odbc data provider
-ou avec MySQL data provider
Quand je test ma connexion, lors de la création, il me dit « connexion sucessfull ».

Tous les blogs et sites montrent que cette procédure fonctionne. Seulement, bien-sûr, je n’ai pas été dans ce cas… En effet lorsque:

  • je faisais glisser une composant d’input j’avais des erreurs (cf ci-dessous)
  • je voulais restester ma connexion j’avais des erreurs (cf ci-dessous)

Alors la solution que j’ai trouvé est :

  • de ne pas m’occuper du message d’erreur au niveau de ma connexion
  • et lorsque je faisais glisser l’input, de ne pas passer par l’interface graphique du composant habituel.

Je suis donc passée au niveau du composant d’input (ADO NET SOURCE) par

  • « show advanced editor » pour indiquer la bonne connexion

 

 

  • et pour entrer la requête je suis passée par l’onglet  « properties » (en indiquant les champs car si je fais un SELECT * FROM matable il ne me trouvait rien)

 

et lors de l’exécution ça a fonctionné… Je ne sais pas si ça aidera quelqu’un un jour mais voilà comment je m’en suis sortie!

 

18 février 2013
par maryam khiali
0 Commentaires

Big data au tech.days 2013

Comme vous avez pu le remarquer, en ce moment, je n’ai pas trop le temps de poster…

Je n’ai même pas eu l’occasion d’aller aux tech.days cette année. Cependant, une personne de mon entourage sait que je m’interesse de prêt au big data et elle m’a conseillé de regarder la plénière (rubrique « revivez l’intégralité du live ») du jeudi 14 Février qui est vraiment pas mal!

Je vous laisse apprécier les 2 premières heures de la vidéo sur le sujet!

N’hésitez pas à mettre ce que vous en pensez en commentaire!

 

20 novembre 2012
par maryam khiali
0 Commentaires

Plus d’infos sur le Big data

Alors le big data c’est quoi ? C’est quand on est confronté à ces 4V :

  • Volume de données très important (structurées ou non-structurées)
  • Vitesse à laquelle les données sont générées ou sont à traiter : très rapidement ex : data de twitter ou facebook
  • Variétés des données importantes
  • Variabilités d’interprétation d’une même donnée en fonction du contexte

Pour répondre à ces problématiques, plusieurs choses sont à envisager :

  • une bonne infrastructure
  • une autre manière de stocker les données car les bases de données relationnelles arrivent à leur limite
  • une autre manière d’interroger les données car le SQL arrive à sa limite

Dans ce post je vais vous exposer la réponse de Microsoft face au big data…Enfin de ce que j’en ai compris…

Coté Infrastructure :

Pour répondre à la sollicitation du big data Microsoft propose 2 architectures en fonction de la taille de votre futur DWH et de votre besoin de calcul :

Symetric multi-processing SMP : est une architecture qui consiste à multiplier les processeurs identiques au sein d’une même machine, de manière à augmenter la puissance de calcul, tout en conservant une unique mémoire. On prendra cette offre dans le cas suivant :

  • Petit/moyen DWH
  • limité
  • traitements que l’on ne peut pas séparer

Massively Parallele Processing MPP va être conseillé pour du grid computing * (donc du calcul intensif). C’est une architecture qui consiste à multiplier le nombre de processeur ou d’ordinateur pour faire de la parallèlisations. Il y a un nœud de contrôle qui dispache ça sur n nœud de traitement et de stockage. On prendra cette offre dans le cas suivant :

  • Gros DWH
  • Besoin de Prédictif
  • gros besoin de calculs

* Grid computing (HPC server Hight performance computing) est une architecture permettant de répartir des calculs sur une ferme de serveur pour des calculs intensifs. Cette ferme peut être mise dans le Cloud computing pour payer à la demande et pas les serveurs, etc.

Exemple pour optimiser son mode de stockage pour toujours plus de de performance avec du MPP:

 

Microsoft propose 2 appliances :

  • SQL Server 2008 Fast tracks : implémentation SMP de SQL server Enterprise 2008
  • SQL server 2008R2 Parallel datawarehouse : implémentation MPP de SQL server Enterprise 2008

Une appliance est un serveur pré-calibré. Les composants sont utilisés au mieux. On arrive à prédire l’évolution de son système. (Ex : Bull qui fait livrer des serveurs avec ces appliances déjà tous configurés). Pour en savoir plus, voir cette vidéo

Coté type de stockage:

Microsoft en propose 2 types :

  • Type blob storage : pour  des données volumineuses non structurées ex : image, vidéos…
  • Type table: clés valeurs partition et clé de ligne (Pour en savoir plus aller voir un de mes posts précédent)

Coté interrogation des données :

Microsoft a misé sur l’outil Hadoop. Dans le schéma suivant vous pouvez entrevoir le chemin des données :

 

Les données sources exemple facebook, twitter, bing… sont interrogées via Hadoop par les API streaming que ces éditeurs proposent.

Ensuite quand ces données seront stockées dans des bases de données sous format type table (clés/valeurs) ou type blog, le connecteur Hadoop/SQl server permettra d’aller requêter ces données selon 2 façons :

  • Soit en requête via du Javascript ou du dotnet grâce au framework Daytona avec la méthode MAP/REDUCE
  • Soit en utilisant l’option Hive table dans Hadoop qui permettra de construire des tables virtuelles pour ensuite les interroger avec un langage tel que Scoop ou encore Pig qui ressemble un peu plus à du SQL qui lui-même sera transformer en Javascript pour interroger la base de données clés/valeurs ou blob.

Si vous aussi, vous avez assisté à des conférences sur le big data, comment y faire face, ou si vous avez déjà participé à un projet big data n’hésitez pas à partager vos opinions

D’ailleurs ce post expose les solutions que propose Microsoft  mais les solutions d’autres outils sont les bienvenus.