Archive pour septembre 2007

70-446

27 septembre 2007

I got it

Ouf, après de nombreuses semaines de révision (c’est pour cette raison que le blog est un peu mort), je viens de passer la certification 70-446 : Designing a Business Intelligence Infrastructure by Using Microsoft SQL Server 2005 avec un joli score de 83%. Demain, je passe sa petite soeur la 70-445 et je croise les doigts pour obtenir le titre de MCITP BID (pour les néophytes : Microsoft Certified IT Professional: Business Intelligence Developer).

Le déploiement de rapports sous SSRS

6 septembre 2007

Un article complet et sympathique sur les méthodes de déploiement de rapports sous SSRS (Reporting Services).

Sébastien Pertus, un collègue du pôle DGD (Décisionnel & Gestion de Données) dont je m’occupe chez Bewise, nous présente toutes les façons de passer un rapport en production. Avec cela, je suis sûr que vous trouverez le moyen qui convient le mieux à votre façon de travailler et à votre SI.

L’article est dispo sur le site de Bewise : Déploiement automatisé sous Reporting Services

Du C# dans SSIS

5 septembre 2007

Une de mes principales attentes pour la version 2008 de SSIS (Integration Services) était un vrai support de la programmation .NET dans les Script Task et les Script Component. C’est chose faite dans Katmai.

Ce support permet entre autres de développer vos scripts en C# (je kiffe) et de lever toute ambiguïté sur le support ou la syntaxe de telle ou telle fonction. Ca fait plaisir de finir ses lignes avec des points-virgule :-P .

 

C’est le SDK VSTA (Visual Studio Tools for Applications) qui est utilisé pour permettre ce support. Ce SDK permet à des applications de proposer des éditeurs de code (VB.NET ou C#) afin que le end-user puisse ajouter de l’algorithmique dans une application existante. Ce SDK est utilisé notamment dans InfoPath. Je vous invite à consulter le blog de l’équipe en charge chez Microsoft, c’est très intéressant : http://blogs.msdn.com/vsta/

Un aperçu visuel des nouvelles fonctionnalités de SQL Server 2008

5 septembre 2007

Un schéma sympathique que je trouve particulièrement efficace pour représenter les nouvelles fonctionnalité de SQL Server 2008 au fil de leurs sorties :

 

Fonctionnalités SQL Server 2008

Je manque de temps mais je vais essayer de vous en présenter plus dans ce blog.

Le type HierarchyID de SQL Server 2008

3 septembre 2007

Le type HierarchyID est un nouveau type de données de SQL Server 2008 (alias Katmai) qui permet de gérer comme son nom l’indique, des hiérarchies dans des tables relationnelles.

Nous allons voir dans cet article que ce nouveau type apporte des réponses dans la modélisation d’arborescences dans les bases de données. Il ajoute des fonctionnalités au langage T-SQL et améliore les performances. Cet article décrit en détail le nouveau type et fournit quelques exemples d’utilisation comparés à une utilisation plus classique à base de CTE.

 

L’article est disponible ici : Le type Hierarchy

Le code des démos est disponible à cette URL : code source

 

Note : le code de cet article fonctionne avec la CTP2 (fin juillet) de SQL Server 2008

Voici quelques extraits :

 

[...]

 

3.2 Utilisation de HierarchyID dans une table

Le type HierarchyID s’utilise comme n’importe quel autre type dans l’instruction de création de table (ou d’ajout de colonne). Dans les exemples qui suivent, nous allons travailler sur une table que nous appellerons Organization. Pour l’instant, elle ne contient qu’un champ de type HierarchyID et le nom de l’employé correspondant.

 

CREATE TABLE Organization

(

      EmployeeID hierarchyid NOT NULL,

EmployeeName nvarchar(50) NOT NULL

)

 

Nous allons remplir cette table avec des données en provenance de la table Employee de la base AdventureWorks. Pour ce remplissage, nous allons nous baser sur la CTE décrite plus haut. Pour déterminer la valeur de la racine, nous allons utiliser la fonction GetRoot() du type HierarchyID (à noter que GetRoot, comme les autres fonctions du type HierarchyID, est sensible à la casse) :

 

hierarchyid::GetRoot()

 

Pour déterminer la valeur des nœuds enfants, à chaque récursion nous utiliserons la fonction GetDescendant du nœud parent :

 

Parent.Node.GetDescendant(null, null)

 

Les paramètres de cette fonction permettent de placer le nœud enfant à une certaine position parmi les autres nœuds enfants (siblings).La CTE modifiée donne ce script T-SQL qui va copier la hiérarchie de la table Employee à la nouvelle table Organization bénéficiant du nouveau type.

 

 

WITH UpperHierarchy(EmpId, LastName, Node)

AS

(

    SELECT EmployeeId, LoginId, hierarchyid::GetRoot()

    FROM HumanResources.Employee

      WHERE ManagerId is Null

    UNION ALL

    SELECT Sub.EmployeeId, Sub.LoginId, Parent.Node.GetDescendant(null, null)

    FROM HumanResources.Employee AS Sub

            INNER JOIN UpperHierarchy AS Parent

                  ON Sub.ManagerId = Parent.EmpId

)

Insert Into dbo.Organization(EmployeeId, EmployeeName)

Select Node, LastName
From
UpperHierarchy

 

[...]

 

En vrac, voici des exemples de requêtes simplifiées par le type HierarchyID.

6.1 Trouver tous les subordonnés

Plus besoin de CTE pour récupérer tout un pan de la hiérarchie. Pour connaître les subordonnés de quelqu’un, tous niveaux confondus, la requête est on ne peut plus simple :

 

Select *

From dbo.Organization

Where @BossNode.IsDescendant(EmployeeId)

 

Attention : un nœud est considéré comme son propre descendant, ce qui veut dire que la personne de référence sera présente dans la liste de ses subordonnés.

6.2 Trouver les responsables d’une personne

Pour remonter la chaîne des responsables d’une personne, on inverse la condition précédente :

 

Select *

From dbo.Organization

Where EmployeeId.IsDescendant(@BossNode)

 

6.3 Trouver les employés d’un niveau donné

Plus besoin de stocker et de maintenir le niveau dans la hiérarchie :

 

Select *

From dbo.Organization

Where EmployeeId.GetLevel() = 3

 

[...]

 


Architecte ASP.NET du site Express Drive

2 septembre 2007

Un petit peu de pub pour un client, pour Bewise (et un peu pour moi :-)  avec la présentation du site Express Drive.

Express Drive est un site de courses en ligne tout ce qu’il y a de plus classique sauf que derrière se cache un concept excellent : le drive. Vous faîtes vos courses sur le web et vous passez les prendre au magasinExpress Drive de E. Leclerc Roques. Même pas besoin de se garer, vous allez dans les voies réservées et n’avez qu’à ouvrir votre coffre.

Pas besoin de citer le nom du client, c’est écrit sur la photo. Actuellement, il n’y a qu’un seul magasin pilote en france (et c’est ici, près de Toulouse) mais nul doute que les prochains ouvriront bientôt près de chez vous.

Je suis fan de ce concept mais ce qui me rend fier c’est que j’ai été l’architecte technique du site web Express Drive et Bewise est en grande partie responsable de la mise en oeuvre (merci Jocelyn). Nous sommes heureux d’avoir pu accompagner notre client à développer son site Web en un temps record.

Et comme un blog de geek ne peut pas se contenter de cette simple annonce, ouvrons un peu le capot du site…

Sans entrer dans le détail, ce site est 100% XHTML + CSS 2.0 (bon d’accord, on a dû prendre quelques raccourcis de temps en temps). Le site tire aussi énormément partie des extensions AJAX de ASP.NET. En particulier la page de courses qui est 100% en AJAX et où nous avons poussé à fond l’utilisation et la maîtrise des UpdatePanel.

Ce site n’est qu’un premier jet et va s’enrichir de nombreuses fonctionnalités pour atteindre le niveau de ces concurrents Houra, Ooshop, AuchanDirect, etc.


Suivre

Get every new post delivered to your Inbox.

Joignez-vous à 203 followers