lundi 30 décembre 2013

Journées SQL Server 2013 : Webcast SSIS Design Patterns

Un petit message pour vous dire que les webcasts des Journées SQL Server 2013 sont désormais disponibles.

Si vous voulez revoir, notre session avec Thomas :



Si vous voulez revoir toutes les autres sessions, c'est là que ça se passe :



samedi 7 décembre 2013

Journées SQL Server 2013 : Epilogue


Voilà, les Journées SQL Server 2013 sont finies, je ne sais pas pour vous, mais pour nous l'événement a été dans sa globalité une réussite (même s'il y a toujours des points à améliorer). Encore un grand merci à nos sponsors, nos speakers et bien évidemment à tous les participants.

Au niveau des chiffres d'ailleurs, nous étions officiellement 365 professionnels de l'informatique (beau clin d’œil à la BI chez Microsoft et +20% par rapport à l'année dernière),

A titre perso, pas mal de boulot dans l'organisation sur cette édition, mais toujours avec un staff réactif (bien joué les copains) et dans une ambiance bon enfant.

Sur le contenu de l'événement, je crois qu'il y en avait pour vraiment tous les goûts cette année (à vrai dire, on a même eu des personnes nous demandant des conseils pour choisir les sessions où aller), et on a pu compter sur une cinquantaine de speakers, ce qui, si on réfléchit est juste énorme sur une seule technologie. Et ça montre également la bonne santé de la communauté.

Au sujet de notre session sur les design patterns sur SSIS, avec Thomas, on a essayé de la faire accessible. On espère qu'elle vous aura plu et que vous aurez appris quelques petits trucs. Je vous mets en lien les slides et les packages de mes démos (Thomas fera de même pour ses demo j'imagine) :

- Slides
- Packages

En conclusion, un sentiment de travail bien fait, et une forte envie de faire encore mieux l'année prochaine.

lundi 4 novembre 2013

Journées SQL Server 2013 : Dernière ligne droite



C'est maintenant dans moins d'un mois : les 2 & 3 Décembre auront lieu les journées SQL Server 2013 au centre des conférences de Microsoft.


Les JSS qu'est-ce que c'est ? (Pour ceux qui auraient raté les précédentes éditions :p)

C'est tout simplement le plus gros événement dédié à SQL Server en France : Pendant deux jours, une cinquantaine d'experts issus de la communauté viendra présenter les nouveautés, les techniques et bonnes pratiques, ou encore une vision avancée de nos outils, tout ça à travers des sessions d’une heure.

... Et en plus c'est gratuit, donc on n'hésite pas à s'inscrire.


Le planning (quasi-définitif) est maintenant connu : il y en a pour tous les goûts, moteur SQL, BI, Cloud, infra,..., le tout animé par du beau monde.




A titre perso, j'aurai le plaisir d'animer une session SSIS avec Thomas Ricquebourg. Un retour aux fondamentaux où on essaiera de vous apprendre 2-3 trucs (en toute modestie bien sûr, et dans une ambiance détendue).

En conclusion, on met une croix sur son calendrier pour ces 2 jours.

mardi 17 septembre 2013

[GUSS] SQL Saturday Paris

Un petit message pour conclure le SQL Saturday qui avait lieu à Paris ce samedi.



En premier lieu, il me semble que l'on peut être satisfait d'avoir réussi à attirer une centaine de personnes un samedi pour une journée de conférences, sachant qu'avaient lieu en même temps les journées du patrimoine, la fête de l'huma ou la technoparade. 
C'est une preuve du développement de la communauté SQL Server autour des évènements.

Donc merci à tous d'être venus, ça nous encourage à continuer.


Sur la journée, j'ai eu l'occasion de suivre la session de nos amis Patrice, Charles-Henri et Romuald sur Analysis Services, toujours aussi à l'aise sur le sujet.




J'ai ensuite accompagné mon camarade Florian pour animer 2 sessions : Les métiers de la BI, puis Saisie de données en BI. J'espère que ces sessions vous ont plu (les slides sont disponibles sur le blog de Florian linké au-dessus), en tout cas, pour nous, c'est toujours un plaisir.

"Alors là tu vois, tu fais un Foreach"

Promis à la prochaine session, je vous montre comment charger un fichier texte dans SSIS, et comment fonctionne une boucle For (mais je demanderai un level 400 pour ça :p) 


Bref, un vrai bon moment (pour vous aussi j'espère) et en route pour les JSS...


lundi 22 juillet 2013

[GUSS] SQLSaturday Le 14 Septembre 2013 à Paris

Si vous suivez l'actualité du GUSS et de la blogosphère, vous avez déjà entendu du SQLSaturday qui aura lieu le 14 Septembre 2013 sur le campus EPITA/EPITECH.

le SQLSaturday est un format connu introduit par le PASS : c'est une journée de conférences sur SQL Serveur qui se déroule un samedi.




C'est un samedi, vous n'aurez donc pas à négocier une journée avec votre manager/client pour pouvoir venir. Ça vous évitera également d'aller faire les courses/passer une journée chez Ikea/aller déjeuner chez votre belle-mère. Donc plus d'excuse pour ne pas venir

C'est l'occasion aussi d'assister à des conférences animés par des speakers internationaux qu'on ne voit pas souvent en France :

Jen Stirrup
Hugo Kornelis
Allan Mitchell

Et bien sûr des speakers français reconnus :

David Barbarin
Christophe Laporte
Jean-Pierre Riehl
Charles-Henri Sauget
Patrice Harel
Romuald Coutaud
Philippe Geiger
Patrick Guimonet


J'aurais le plaisir enfin d'animer une conférence avec mon camarade Florian Eiden, fraîchement intronisé MVP, sur la saisie de données dans la Business Intelligence.

Le programme de la journée :




Le lien pour avoir toutes les infos et se tenir au courant :



On compte sur votre présence, cela permettra de renouveler ce type d’événements.



mardi 25 juin 2013

SQL Server 2014 : Sortie de la CTP1

SQL Server 2012 commence à se déployer tout doucement dans les entreprises que SQL Server 2014 pointe déjà le bout de son nez.

La CTP1 est disponible dès aujourd'hui en téléchargement :

http://www.microsoft.com/en-us/sqlserver/sql-server-2014.aspx

Pas de grosses nouveautés BI apparemment (hormis peut-être des nouvelles connexions ou des connexions intégrées pour Big Data, et une amélioration des performances pour l'existant), mais une grosse nouveauté pour le moteur OLTP avec l'intégration du In-Memory (le fameux projet Hekaton)

A approfondir, donc :)

vendredi 31 mai 2013

AfterWork GUSS de Juin 2013


Nous sommes fiers de vous proposer un nouvel Afterwork juste avant les vacances d’été.

Il aura lieu le mercredi 5 juin 2013 à partir de 19h00

Le thème sera très nuageux (c'est malheureusement de saison) puisque ce sera SQL Server et le Cloud. Nous discuterons bien évidemment d’Azure en mode PaaS ou IaaS mais aussi d’architectures hybrides.

Le lieu reste le Charly Birdy du 15ème arrondissement à Paris

Charly-Birdy
1 place Etienne Pernet, Paris 15ème
Métro Commerce

Note : les Afterworks vont être maintenant plus réguliers. Ils auront lieu 1 mois sur 2, tous les 1er mercredi. Bloquez d’ores et déjà vos agendas.

mercredi 13 février 2013

SSAS 2012 : Conversion entre modèles tabulaire et multidimensionnel (1ère partie)

Si vous avez suivi, lors des Techdays 2013, l'excellente session sur Analysis Services 2012 animée par Messieurs François Jehl et Romuald Coutaud, vous avez pu constater que le parser XMLA pour les modèles tabulaires et multidimensionnelles est le même.
En effet, ils ont pu intégrer des actions ou des traductions sur des modèles tabulaires, bien que ces derniers ne proposent pas de le faire. (à noter que la version de BIDS Helper pour SSAS Tabular permet de le faire de manière graphique).

L'idée de départ de cet article est donc la suivante : que va-t-il se passer si j'exécute un script XMLA de create database d'un modèle tabulaire sur un serveur Analysis Services multidimensionnel. Et surtout l'implication logique : vais-je pouvoir convertir mon modèle tabulaire en modèle multidimensionnel ? Ou que va-t-il me manquer pour convertir les modèles ?

Première partie pour l'article, car on va rester sur un modèle tabulaire simple et sur une conversion tabulaire vers multidimensionnel. Il mériterait une deuxième partie pour des modèles plus complexes et une conversion inverse.

On a posé le contexte, on peut donc partir sur notre modèle tabulaire très simple :

  • 1 table de fait (dans laquelle j'ai créé une mesure qui somme mon CA)
  • 1 dimension Client
  • 1 dimension Produit
  • 1 dimension Magasin

Si je me connecte à mon instance SSAS Tabulaire, je peux bien browser mon cube sans souci :


Générons maintenant l'XMLA de création de la database et essayons de l'exécuter sur mon instance multidimensionnelle. J'obtiens l'erreur (attendue) m'indiquant que mon serveur n'est pas un serveur tabulaire :


Et c'est ici qu'on va commencer à mettre les mains dans le XMLA (de manière assez superficielle malgré tout). J'ai en effet bon espoir que cette erreur ne soit due qu'au choix de la valeur InMemory pour le paramètre StorageEngineUsed dans le noeud Database.
Et c'est bien le cas, car en commentant cette ligne, j'obtiens une erreur différente :


L'erreur nouvellement générée est également due à un paramètre de stockage défini à "InMemory", mais cette fois au niveau dimension. On va donc commenter toutes les lignes propres au "StorageMode".
Ça a l'air de marcher car j'obtiens une nouvelle erreur qui ne dépend pas du stockage : Le paramètre UnknownMember ne peut pas être à AutomaticNull sauf pour du modèle tabulaire :


Soit, on va donc continuer sur le même principe et commenter les lignes relatives au UnknownMember. On continue d'avancer car j'obtiens une nouvelle erreur. Celle-ci est intéressante, car elle dit que je ne peux pas avoir de relation au niveau dimension quand je suis en modèle traditionnel. 

Si j'en crois la suite de l'expérience, ça fait surtout sauter les relations qu'on définit au niveau du datasource view, car on verra qu'on obtient bien un Dimension Usage au niveau du cube.

On va commenter les lignes propres aux relations de dimensions, et on continue notre expérience  Evidemment, on obtient une nouvelle erreur. C'est encore un paramètre propre au tabulaire sur le partage de stockage entre dimension et groupe de mesures. On commente et on continue. 
Et là miracle (miracle à moitié, vu qu'en fait j'ai désactivé tout ce qui était propre à du tabulaire) mon XMLA s'est exécuté sans nouvelle erreur. Et j'ai même un cube sur mon serveur multidimensionnel :


J'ai donc réussi la première étape : je vais pouvoir ouvrir mon cube dans SSDT en mode de création multidimensionnel.

Première constatation, j'ai un datasource view fonctionnel sans relation, j'ai des dimensions pour toutes mes tables (il a même gardé la hiérarchie que j'avais créée sur ma dimension Client) et j'ai un cube avec un groupe de mesures également pour toutes les tables (Si on examine le XMLA en tabulaire, on constate bien qu'il crée une dimension et un groupe de mesures par table)
Deuxième constatation, dans toutes mes dimensions il a créé un attribut RowNumber comme clé de dimension (en effet, Tabular crée ce membre par défaut sur chaque table pour garantir l'unicité des lignes, on peut le constater dans le XMLA. Cet attribut a pour KeyColumn et NameColumn RowNumberBinding qui n'est pas supporté en multidimensionnel), mais je ne l'ai pas dans mon datasource view. Les mesures (ici je n'avais créé que le total des CA dans ma table Ventes, se retrouve dans le script MDX. Le Dimension Usage de mon cube contient des relations de type Fact pour chaque groupe de mesure et des relations référencées pour ma table centrale.


A partir de là, il est difficile de continuer sans tout refaire, car 
- si l'on change de clé de dimensions, on casse le dimension usage. Et on est obligé de retoucher aux clés

Cependant le rajout de la fonctionnalité RowNumberBinding au niveau des KeyColumn dans les propriétés des attributs semblerait suffisant à le rendre fonctionnel.

Pour voir ce qui pourrait manquer encore, j'ai continué en reconstruisant les dimensions avec les Id existant dans les tables, et en redéfinissant le Dimension Usage.

La dernière erreur au process du cube vient de notre champ calculé (qui je le rappelle était une bête somme de CA). Toutes les mesures créées en Tabulaire sont en fait exécutées dans le MdxScript. J'obtiens une erreur de syntaxe, ce qui est assez paradoxale quand on sait que l'inverse est possible (écrire du MDX discrètement dans un modèle tabulaire, ce qu'avait fait François Jehl dans sa session au Journées SQL Server 2011).


En ré-écrivant la formule en MDX (en oubliant pas de changer le "=" par "AS"), ça processe, mais ce n'était plus très important. Le principal étant d'avoir pointer du doigt les limites de la conversion.


En conclusion, on sent qu'il ne faudrait pas grand chose pour faire en natif un convertisseur de modèle de tabulaire vers multidimensionnel, car les limites atteintes ne sont pas vraiment rédhibitoires :

- on a tout ce qui concerne le stockage InMemory : il suffirait que le convertisseur le fasse sauter, ou mieux l'intègre au mode multidimensionnel

- ce qui concerne les relations entre dimensions : j'avoue que je n'ai pas vu l'utilité en mode multidimensionnel. Je pensais au début qu'il s'agissait du dimension usage du cube, mais apparemment ce n'est pas ça car il y en a un de défini à l'ouverture

- l'ajout d'une option sur les KeyColumn des attributs (RowNumberBinding) qui permettrait de conserver le dimension usage, ou pourquoi pas un assistant pour regénérer les relations lors de la conversion.

- et pouvoir écrire du DAX dans le MdxScript : les modèles tabulaires pouvant être attaqués en MDX, c'est bien qu'il existe un interpréteur.