Power Pivot & Power View

by Romain.CASTERES 10. June 2012 13:48

Power Pivot est un module qui s’intègre à Excel et se présentant sous forme d’add-in, qui nous permet d’importer des données de différentes sources (Base de données SQL, ficher texte/Excel, base Access…), afin de toutes les regrouper en un seul jeu de données grâce aux relations.

Power View(ex Crescent) est la nouvelle évolution dans les outils de restitution de données Microsoft. Ce nouvel outil qui permet la création de tableaux de bord très riches et dynamiques ainsi que sa collaboration avec PowerPivot.

Cette article a pour but de présenter PowerPivot et PowerView

J’ai dans un premier temps rapatrié et corrélé mes différentes données dans PowerPivot :

Noté que ma dimension Plat comporte un attribut Image :

Les images ont été préalablement déposées dans une galerie partagée dans SharePoint.

Noté que le model SSAS Tabular à les même options :

 

Après avoir créé des hiérarchies et des nouvelles mesures calculées en DAX j’ai définit les différentes propriétés des tables :

Configurer le comportement des tables : http://msdn.microsoft.com/en-us/library/hh560542%28v=SQL.110%29.aspx

Une fois mon model finalisé, j’ai transférer mon fichier Excel dans une galerie PowerPivot dans SharePoint. PowerPivot possède une galerie de présentation des fichiers dédiée dans SharePoint réalisé en Silverlight.

Une prévisualisation des feuilles de chaque fichier Excel et une prévisualisation des différents rapports réalisés facilitent la gestion de la galerie.

Création d’un rapport PowerView à partir de notre PowerPivot :

Les images sont placées en titre ce qui permet d’avoir un filtre en série avec défilement :  

Concernant l’actualisation des données dans PowerPivot : comme dans SQL Server Reporting Services il est possible de planifier l’actualisation des données de vos fichiers directement depuis l’administration de SharePoint.

Les étapes pour la mise en place de la planification sont détaillées sur le site MSDN de Microsoft : http://msdn.microsoft.com/fr-fr/library/ee210595.aspx 

Essayer PowerView en ligne : ICI !

Hadoop dans Windows Azure : Big Data & Business Intelligence

by Romain.CASTERES 18. May 2012 13:56

 

Démonstration préparée pour l'Après-midi du développement : Big Data : Hadoop sur Azure qui aura lieu le 24 mai 2012 chez Microsoft : http://aka.ms/amdev-hadoop

1 - Hadoop dans le cloud avec Windows Azure

 

Hadoop est une librairie open source pour traiter d'importantes masses de données en mode distribuée. Hadoop est aujourd'hui le leader du domaine et du Big Data.

2 - Rapatrier des données provenant d’un Blob Storage Azure

  • Dans Manage Cluster, configurer votre Azure Blob Storage.
  • Connectez vous en Remote Desktop
  • Exécuter les commandes shell afin de distribué sur le cluster vos données

Hadoop distcp asv://demo/iislogsTB-out-H demo/iislogsTB-out-H

Hadoop distcp asv://demo/iislogsTB-out-D demo/iislogsTB-out-D

Information sur la commande Distcp : http://hadoop.apache.org/common/docs/current/distcp.html

 

3 - Requête Hive

Dans Interactive Console, Interactive Hive nous allons créer des "External Table" afin de pouvoir accéder aux données rapatriées.

 

4 - Interrogation des données dans Excel

Afin de pouvoir interroger vos données de votre cluster Hadoop depuis Excel il vous faut télécharger et installer :

  • Hive ODBC driver
  • Hive Add-in for Excel.

Ouvrez le port "ODBC Server" :

Configuration de la connexion Hive ODBC :

 

5 - Projet de Business Intelligence

Nous allons alimenter un petit Datamart à partir de notre cluster Hadoop. Création de notre base de données dans SQL Server 2012 :

  • Création d'un Package SSIS :

Création d’un cube SSAS Tabular :

6 - Drill-Down

Nous avons alimenté le Datamart à partir de données agrégées provenant du cluster Hadoop. Grace à une requête Hive, les données de granularités les plus fines peuvent toujours être récupérées !

Nous voyons ici la complémentarité de la Business Intelligence et du Big Data

 

Manipulation de dates en UTC avec Entity Framework.

by Ludovic.NASCIMBENI 19. April 2012 15:33

Bien souvent lorsque l’on manipule des dates coté serveur, qu’il s’agisse de les stocker en base de données ou bien d’effectuer des traitements dessus on choisit de n’utiliser que de l’UTC, afin d’avoir un référentiel commun à tous les fuseaux horaires.
Cependant lorsque l’on utilise Entity Framework, on est confronté à un problème.

En effet, par défaut, lorsque EF mappe un champ datetime SQL à une propriété DateTime d’une entité, la valeur de la propriété Kind (Unspecified / LocalTime / Utc) est positionnée à Unspecified.

Ceci est tout à fait logique étant donné que le type datetime SQL ne contient pas d’information relative au fuseau horaire.
Cela s’avère très ennuyeux lorsque l’on travaille sur une architecture n-tier car lorsque l’entité sera déserialisée coté client, le moteur de sérialisation WCF (DataContractSerializer) va partir du principe que la valeur Unspecified correspond à du LocalTime.
Vous allez donc vous retrouver coté client avec une date exprimée en UTC mais qui indique qu’elle est en LocalTime.

Pour remédier à ce problème, il suffit de modifier un peu le T4 qui génère les entités (et l’ObjectContext par la même occasion si vous ne les avez pas séparés ^^).
On va juste appeler la méthode statique SpecifyKind de du type DateTime dans le setter de toutes les propriétés de type DateTime des entités coté serveur afin de forcer la propriété Kind en UTC.
Ce code ne doit être éxécuté que lorsque la propriété est set pour la première fois.

dans le cas d’un DateTime :

_updateDate = _updateDate == new DateTime() ? DateTime.SpecifyKind(value.Value, DateTimeKind.Utc) : value;

dans le cas d’un Nullable<DateTime> :

_updateDate = _updateDate == null ? DateTime.SpecifyKind(value.Value, DateTimeKind.Utc) : value;

 

Pour pouvoir générer ce code au niveau de vos entités il faut que vous ayez au préalable récupéré un des templates de T4 d’EF que vous pourrez trouver via l’ExtensionManager de Visual Studio (avec le template par défaut vous n’aurez pas accès au T4).

Il ne vous reste plus qu’à localiser le code permettant de générer les propriétés des entités puis de remplacer la ligne suivante <#=code.FieldName(edmProperty)#> = value; par ce code :

 

if (((PrimitiveType)edmProperty.TypeUsage.EdmType).PrimitiveTypeKind == PrimitiveTypeKind.DateTime)
			{
#>
				<#=code.FieldName(edmProperty)#> = <#+
				if (ef.IsNullable(edmProperty))
				{
#>
<#=code.FieldName(edmProperty)#> == null ? DateTime.SpecifyKind(value.Value, DateTimeKind.Utc) : <#+
			   }
			   else
			   {
#>
<#=code.FieldName(edmProperty)#> == new DateTime() ? DateTime.SpecifyKind(value, DateTimeKind.Utc) : <#+ 
			    }
#>value;
<#+
				}
			else
			{
#>
				<#=code.FieldName(edmProperty)#> = value;
<#+
			}
#>

 

Nb: n’oubliez pas de renommer la variable edmProperty en fonction de votre template.

Tags:

ASP.Net | Entity Framework | T4

Configurer un répertoire virtuel sur AZURE

by Emmanuel.PITEAU 2. March 2012 15:17

L’hébergement de site web sur Windows Azure s’appuie sur le service IIS.

De ce fait, il est possible d’héberger un second site ou un sous-site sur une même instance via un répertoire virtuel.

Pour ce faire, il faut compiler et publier le site désiré dans un répertoire en local sur votre machine de développement.

Dans le projet Azure du site principal, il faut ouvrir le fichier « ServiceDefinition.csdef » et déclarer le répertoire virtuel comme cela :

<ServiceDefinition name="projectName" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
  <WebRole name=" projectName.Web" vmsize="Small">
    <Sites>
      <Site name="Web">

	 <!-- configuration du chemin vers le répertoire virtuel -->
        <VirtualApplication name="subSite" physicalDirectory="..\subSite\Publish" />

        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" />
        </Bindings>
      </Site>
…

Déployer le projet principal sur Azure, et le tour est joué.

Tags: ,

Azure

HadoopOnAzure, démo des TechDays 2012

by Damien.DORISON 22. February 2012 19:44

A l'occasion des TechDays 2012, nous avons eu le plaisir d'animer aux côtés de Laurent MARZOUK de Microsoft, une session dédiée à la problématique BigData, et particulièrement à l'intégration de HadoopOnAzure. Cette démo mettait en avant un cas d'usage tiré d'un scénario réèl :

  • Des clients s'abonnent à un service qui leur permet de diffuser des contenus publicitaires dans leurs lieux de vente sur des écrans de télévision
  • Ils uploadent leurs contenus vers une plateforme centralisée
  • Les sites de diffusion téléchargent les contenus en local
  • Un système de schedule permet aux clients de créer des listes de diffusion, autorisant ainsi la lecture des médias en pilotant unitairement chacun des écrans des lieux de vente
  • A chaque fois qu'un film est joué sur un écran, un log de diffusion est remonté vers la plateforme centrale et stocké en BDD
  • Des outils de reporting sont mis en place pour permettre à différents intervenants d'avoir une vue sur l'activité du système :
    • Rapports système pour les administrateurs de la plateforme
    • Rapports d'usage en vue de la facturation client
    • Rapports destinés au service commercial des client pour éventuelle re-facturation
    • Outils d'analyse croisée pour chaque client

L'ensemble des diffusions sur chaque écrans génère une volumétrie considérable qu'il est couteux de stocker dans une BDD relationnelle à des fins d'analyse (3 Go de données / jour).

Nous avons donc démontré l'usage de HadoopOnAzure pour réaliser le stockage et l'analyse de ces données.

HaddopOnAzure est actuellement disponible en CTP sur invitation (ici). La version actuelle permet de créer un cluster temporaire qui peut contenir jusqu'à 32 noeuds et 16 TB de disques.

Lors de la création du cluster un nom DNS est choisi afin de pouvoir adresser la machine depuis l'extérieur du cluster, ou de s'y connecter en RDP.

Le cluster ainsi créé est adressable :

  • Depuis une console Hive inclue dans le portail HadoopOnAzure
  • Depuis une console Javascript inclue dans le portail HadoopOnAzure
  • Depuis l'extérieur du cluster grâce à un driver ODBC Hive QL (en ouvrant le port dédié)
  • En upload en FTPS (en ouvrant le port dédié)
  • En RDP

Le système permet, entre-autres d'exécuter des jobs de Map/Reduce écrits en .Net (C#, F#).

Le matériel de cette démo :

Vos retours sont les bienvenus.

 

Enjoy :)

Tags: , , ,

BigData | Techdays '12

Techdays 2012 : Workflow

by Philippe.Buch 14. February 2012 09:48
D'après ce que nous avons pu constater dans la communauté, WF est souvent rejeté parce-qu'elle est méconnue. De prime abord c'est une technologie attirante avec un designer et un set d'Activity suffisamment complet pour réaliser la plupart des tâches attendues (Debug dans le designer, erreurs structurelles affichées à la compilation...). Malgré cela, lorsque l'on s'attaque à des problèmes plus concrets tel que la customisation du designer afin d'abstraire les aspects techniques du workflow, ou lorsque l'on tente d'accéder à des informations contenues dans une Activity lors de son exécution (statuts, progression...), il devient beaucoup plus difficile de s'y retrouver. Pourtant WF est tout à fait capable de réaliser ces tâches mais il faut comprendre son fonctionnement pour parvenir à en faire un outil puissant capable de répondre à des problématiques concrètes. Nous vous proposons d'apporter notre compréhension sur cette technologie autour d'une session pour les développeurs qui souhaitent aller plus loin. Vous pouvez télécharger notre support de présentation ainsi que les démo présentés :

Diaporama Techdays.pptx (2.65 mb)

DemoTechdays.rar (1.17 mb)

Philippe Buch.

Tags: ,

The Geek Is In Da House

by fabien.tanquerel 13. February 2012 18:50

Hello tout le monde,

Si vous souhaitez voir (ou revoir :)) la session des Techdays "The Geek Is In Da House" c'est par ici : http://tdtv.microsoft.fr/j3 dès 2h34.

Cette session était annimée par Pierre Cauchois, Stanislas Quastana, David Catuhe, Salah Amer et moi-même

Je voulais revenir sur le matériel que j'ai utilisé : En attendant la mise en commun des slides et sources, voici ceux concernant ma partie "OpenTaBarrière" :
Best,
--Fabien

Tags: , , , , ,

Techdays | Techdays '12

Windows Azure Load Balancing Timeout

by Emmanuel.PITEAU 1. February 2012 11:03

Une instance Windows Azure s'exécute derrière un système de load balancing matériel.

Ce matériel utilise un timeout de 60 secondes qui n'est pas modifiable de quelque manière que ce soit.
Cela a pour effet de couper la connexion après 60 secondes d'inactivité. Si votre application utilise des sockets et nécessite une connexion ouverte plus longtemps pour un transfert de données ou autre, vous devez contourner ce problème en utilisant ServicePointManager.SetTcpKeepAlive(). Les
paquets TCP Keep-Alive maintiennent la connexion entre votre client et l'équilibreur de charge lors d'une requête HTTP de longue durée.

Voici un exemple d'utilisation :

private void SetKeepAlive(Socket sock)
{
    int KeepAliveTime = 1000 * 45; // 45 seconds of inactivity allowed
    int KeepAliveInterval = 1000; // 1 second interval on keep-alive checks (default)
            
    my_socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true);
    my_socket.IOControl(IOControlCode.KeepAliveValues, GetKeepAliveByte(KeepAliveTime, KeepAliveInterval), null);
}


// "consts" to help understand calculations
const int bytesperlong = 4; // 32 / 8
const int bitsperbyte = 8;

private byte[] GetKeepAliveByte(ulong time, ulong interval)
{
    // resulting structure
    byte[] SIO_KEEPALIVE_VALS = new byte[3 * bytesperlong];
    try
    {
        // array to hold input values
        ulong[] input = new ulong[3];

        // put input arguments in input array
        if (time == 0 || interval == 0) // enable disable keep-alive
            input[0] = (0UL); // off
        else
            input[0] = (1UL); // on

        input[1] = (time); // time millis
        input[2] = (interval); // interval millis

        // pack input into byte struct
        for (int i = 0; i < input.Length; i++)
        {
            SIO_KEEPALIVE_VALS[i * bytesperlong + 3] = (byte)(input[i] >> ((bytesperlong - 1) * bitsperbyte) & 0xff);
            SIO_KEEPALIVE_VALS[i * bytesperlong + 2] = (byte)(input[i] >> ((bytesperlong - 2) * bitsperbyte) & 0xff);
            SIO_KEEPALIVE_VALS[i * bytesperlong + 1] = (byte)(input[i] >> ((bytesperlong - 3) * bitsperbyte) & 0xff);
            SIO_KEEPALIVE_VALS[i * bytesperlong + 0] = (byte)(input[i] >> ((bytesperlong - 4) * bitsperbyte) & 0xff);
        }
    }
    catch (Exception)
    {
        return SIO_KEEPALIVE_VALS;
    }
    return SIO_KEEPALIVE_VALS;
}

Tags: , , , ,

Azure

Les journées sur SQL Server 2012

by Romain.CASTERES 14. December 2011 20:26

 

SQL_SERVER_2012 (1)

 

Les experts francophones de SQL Server, les MVP (Most Valuable Professionnal) et les MCM (Microsoft Certified Master) se sont réunis à Paris pour 2 jours de conférence.

Voici les sujets abordés durant les conférences auxquelles j’ai pu assister :

 

La BI avec SQL Server 2012

Sébastien Madar a présenté les solutions BI intégrées à SQL Server 2012, on retiendra :

  • BISM : Le nouveau modèle sémantique BI de PowerPivot intégré dans Analysis Services :

SQL_SERVER_2012 (2)

  • Power Pivot V2.0 et ses nouveautés :
    • Diagram View : Cette fonctionnalité nous permet de visualiser rapidement  les relations entre les données de notre projet :

SQL_SERVER_2012 (3)

  • La création de Hiérarchie : Permet d’organiser les membres d’une dimension.
  • La création de perspective : Permet de définir des vues différentes sur le modèle.
  • Le tri par colonne qui permet de trier une colonne par une autre colonne :

SQL_SERVER_2012 (4)

  • La création de KPI permettant de définir des objectifs et des tendances :

SQL_SERVER_2012 (5)

  • De nouvelles fonctions DAX :
    • Changement des types de données
    • Format nombre de mesures (devises)
    • Fonctions de statistiques :
      • DistinctCount
      • Variance
      • TopN
    • "Table de temps" afin de qualifier une dimension « temporelle » et de bénéficier ainsi de fonctions dédiées.

flecheOn remarque que PowerPivot reprend petit à petit des fonctionnalités disponibles sous Analysis Services.

  • Master Data Service (MDM) V2.0 : Solution SQL Server de gestion des données de référence. La nouvelle version apporte un Add-in Excel et une interface Web permettant à un Super Utilisateur de mettre à jour le référentiel.

SQL_SERVER_2012 (6)

  • Data Quality Services (DQS) : Outil puissant de gestion de la qualité des données de l’entreprise. Les utilisateurs créent une base de connaissance, celle-ci pourra être utilisée par les développeurs dans SSIS pour assurer la qualité des données intégrées.

SQL_SERVER_2012 (7)

  • PowerView (Project Crescent) : Nouvel outil web (en Silverlight) pour la Business Intelligence. Celui-ci offre aux utilisateurs une nouvelle expérience de Reporting rapide à mettre en place et proposant des fonctionnalités de visualisations dynamiques.

SQL_SERVER_2012 (8)

  • Nouveauté concernant SSRS : La création d’alertes (Cela nécessite SharePoint).
  • Nouveautés concernant SSIS : Celles-ci sont développées plus bas dans l’article.

 

Décider entre Tabular ou Multidimensionnels pour un projet Analysis Services

François Jehl et Aurélien Koppel nous ont présentés les avantages, les inconvénients concernant la mise en place d’un modèle tabulaire plutôt qu’un modèle multidimensionnelle.

Le modèle tabulaire introduit un nouveau langage le DAX, il est l’équivalent du MDX pour le modèle multidimensionnelle.

Nous retiendrons que la compression avec le modèle tabulaire (Vertipaq) est de l’ordre de x10 contrairement à a un modèle multidimensionnelle (MOLAP) qui est de l’ordre de x3.

Il a été annoncé que les deux modèles sont amenés à perdurer car leur utilité est bien différente.

Pour résumer, le modèle tabulaire se veut proche de l’utilisateur fleche2 BI personnel (Self-service)
Le model multidimensionnelle (UDM) avec SSAS fleche2 BI d’entreprise.

D’autre part, si le besoin est un Reporting Ad-hoc avec une granularité de données très fine alors, le modèle tabulaire est le plus approprié. Cependant le modèle tabulaire n’est pas très adapté quand à la création de dimension virtuelle, de scope assignements, de relations complexes, …

SQL_SERVER_2012 (9)
flecheA noter que l’utilisation de PowerView implique un modèle de donnée tabulaire.

 

Modélisation dimensionnelle : le fondement du DataWarehouse

Florian Eiden et Jean-Pierre Riehl nous ont présentés les fondamentaux de la modélisation pour la Business Intelligence :

Les concepts de modélisation :

  • La modélisation « Data Vault » : Celle-ci est peu conseillée et mal adaptée aux technologies Microsoft.
  • Le schéma en Etoile vs Flocon

SQL_SERVER_2012 (10)

  • La nécessité de construire un système d’information à partir du besoin et non des données disponibles.
  • Les tendances du marché comme le BIG DATA avec HADOOP (Framework de stockage) et le NoSQL.


A l’issue de l’intervention, Ils nous ont présenté quelques exemples quant à la création de cubes multidimensionnels : la semi additivité (agrégation spécifique), la gestion des NULL, la relation Many to Many,…

 

Les nouveautés de SSIS dans SQL Server 2012

Thomas Ricquebourg et Jean Pierre Riehl nous ont présenté  les nouvelles caractéristiques de SSIS dans SQL Server 2012, je ne m’attendais pas à  découvrir autant de nouveautés dans cette version!

Coté Développement :

  • L’interface a été revue, elle est bien mieux pensée
  • On retient la possibilité du retour arrière avec le Control-Z !!!
  • Le « copié » est amélioré les objets liés a l’objet copiés le suivent
  • La possibilité de regrouper des tâches dans le Control Flow
  • La gestion de l’ODBC
  • La tâche Pivot a été complètement revue
  • L’arrivée d’un « vrai outil » de Mapping permettant d’exporter sous Excel les règles utilisées
  • L’insertion de nouvelles tâches en relation avec le Change Data Capture (ETL en temps réel)
  • De nouvelles fonctions (LEFT, TOKEN, TOKENCOUNT, …)
  • La possibilité de rendre Offline certaines connexions afin de résoudre les problèmes de lenteur lorsque l’on ouvre un package SSIS sur un environnement n’ayant pas les connections utilisées par le package.

SQL_SERVER_2012 (11)

flecheBref plein de nouveautés qui vont permettre aux développeurs de gagner du temps !

Coté Administration/Déploiement :

  • Abandon du DTSCONFIG et du DTEXEC !
  • SSIS est intégré à l’instance dans une base de données : SSISDB (possibilité de créer plusieurs instances SSIS sur un même serveur)
  • Un mode Legacy est disponible afin de gérer les anciennes versions (Compatibilité descendante et possibilité d’upgrader des anciens Packages)
  • Les packages ne sont plus déployés un par un, ils font partie d’un PROJET, celui-ci gère les paramètres, les connexions, …
  • Un Rollback de version de package est disponible depuis SQL Server Management Studio
  • La gestion des environnants est simplifiée
  • L’exécution d’un package peut se faire via une commande T-SQL, du code .Net, une tâche SQL, une commande Power Shell
  • Les logs sont automatiques
  • Un rapport pré-formaté nous informe des performances de l’exécution du packages, …

SQL_SERVER_2012 (12)

On retiendra une belle nouveauté « DataTaps » cela permet lors de l’exécution d’un package de créer  des ‘sondes’ permettant d’exporter les données passant par le flux (à un endroit précis) dans un fichier de sortie.

SQL_SERVER_2012 (13)


Nous attendons avec impatience la sortie du projet « Barcelona » (Dependecy Services), celui-ci a pour vocation de rendre disponible dans tous les outils de Reporting Microsoft des informations concernant les données affichées (d’où proviennent elles ? Quelles sont les étapes que celles-ci ont traversées, …)

flecheSujet très prometteur : http://www.microsoft.com/fr-fr/showcase/details.aspx?uuid=9eda43b1-e381-4711-8808-5f0c002e23f6

 

SQL_SERVER_2012 (14)

 

 

 

Pour finir voici un petit « Bonus » : Microsoft Data Explorer

SQL_SERVER_2012 (15)
Data Explorer est un outil de création de Mashup de données. Il vous permet de configurer,  nettoyer puis fusionner vos sources de données afin de pouvoir les consommer avec Power Pivot, Excel, ...

fleche2 L'idée est de rendre accessible un « ETL » à des utilisateurs aux profils non techniques.

Pour en savoir plus : http://www.microsoft.com/en-us/sqlazurelabs/labs/dataexplorer.aspx

 

flecheEncore merci aux différents intervenants !

Best Practice Microsoft BI : SSIS

by Romain.CASTERES 14. December 2011 14:08

Microsoft SQL Server Integration Services (SSIS) est un ETL (Extract, Transform, Load). Les préconisations en matière de développement varient d’une entreprise à l’autre. Cependant certaines bonnes pratiques garantissent une intégration des données et des développements faciles à maintenir.

Voici une liste non exhaustive de « Best Practice » permettant d’uniformiser, d’optimiser les développements avec SSIS:

Structuration des packages SSIS

  1. Afin de faciliter le développement, la maintenance et la reprise d’activité des différentes tâches SSIS, il est conseillé de les segmenter en différents packages SSIS.
  2. Le chargement d’une dimension ou d’une table de faits doit correspondre à un package SSIS.
  3. Le pilotage du chargement de l’ensemble des dimensions ou de l’ensemble des tables de fait doit aussi correspondre à un package.
  4. Le pilotage global correspondant au chargement des dimensions, des tables de faits et du process du cube doit également faire partie d’un Package SSIS
  5. Nommer systématiquement les composants du Control Flow et du DataFlow
  6. Si Integration Services et SQL Server sont exécuté sur le même serveur, utiliser la destination SQL Server au lieu de la destination OLE DB pour améliorer les performances.

Utilisation du composant Data Flow

  1. Commenter le code.
  2. Définir des variables pour le chemin des fichiers, les paramètres de connexion à une base de données.
  3. Nommer les colonnes au niveau de la source identiques à ceux de destination pour permettre le mapping automatique.
  4. Avec une source de type fichier activer l’option FastParse pour les dates et champ de type numérique.
  5. Définir les bons types de données pour éviter de faire des conversions de données.
  6. Ne pas sélectionner les colonnes non utilisées dans la source de données.
  7. Effectuer les conversions de type au niveau SQL dans la mesure du possible.
  8. Ne retourner que les colonnes et les lignes nécessaires :
    • Pas de SELECT *
    • Clause WHERE adaptée, utiliser de préférence un filtrage à la source de données
  9. Utilisez le NOLOCK ou TABLOCK dans vos SELECT pour supprimer les temps de verrouillage.
  10. Éviter de filtrer les données à l’aide du composant « Conditional Split ».
  11. Limiter l’usage des composants « Union All » et « Multicast ».

Traitement des cubes Analysis Services

  1. Alimenter les tables de dimension en parallèle en les regroupant dans un container de type « séquence ».
  2. Pour des chargements important de lignes :
    1. Partitionner la table de fait,
    2. Charger les données dans une table temporaire sans indexes, ni contraintes,
    3. Indexer et ajouter les contraintes de la table temporaire,
    4. Intégrer la table temporaire dans la table partitionnée.
  3. Éviter au maximum de faire des opérations bloquantes en particuliers les tris. Réaliser au maximum les tris au niveau du SGBD et configurer la source de données avec la propriété « source triée »

SSIS-3.jpg

 

Paramétrage d’un package SSIS

  1. Afin d’être indépendant de l’environnement, définir une variable d’environnement pour spécifier le chemin physique du fichier de configuration dtsconfig.
  2. Paramétrer tous les éléments variant d’un environnement à un autre comme le nom d’un serveur, le chemin d’un fichier,…
  3. Enregistrer les paramètres de configuration des packages SSIS en base de données afin de faciliter le déploiement, la maintenance, l’exploitation et la reprise des activités des packages SSIS.
  4. Définir le lien vers la base de données de configuration à travers un fichier de configuration. Le chemin de configuration doit lui-même être défini à l’aide d’une variable d’environnement pour être indépendant de la plateforme.
  5. Créer une variable de type package parent pour assurer le suivi d’exécution des packages SSIS.

SSIS-4.png

 

Exploitation

  1. Prévoir l’exécution des packages en lignes de commandes si ils doivent être pilotés depuis un ordonnanceur, un programme,…,  sinon utiliser l’agent de SQL Server.
  2. Afin d’enrichir la traçabilité de l’exécution des packages SSIS, il est nécessaire d’enrichir le schéma de base de données de chargement en rajoutant les tables ExecutionLog, StatisticLog, CommandLog et ProcessLog. Il est pertinent de créer un schéma de base de données « audit ».
  3. Tracer dans les tables précédemment mentionnés le début, la fin d’exécution des packages, ainsi les différentes étapes du DataFlow.
  4. Implémenter l’évènement au niveau du package OnError et tracer les erreurs éventuelles.
  5. Créer des rapports Reporting services pour suivre l’activité des packages.


Conception de Package en équipe

  1. Il est préconisé d’utiliser des modèles de package afin de réutiliser des composants.
  2. Afin de conserver un historique des développements, de gérer les conflits dans le travail collaboratif entre les développeurs, il est préconisé d’utiliser un outil de gestion de source.

Un package modèle est un package SSIS standard dans lequel les éléments communs auront été implémentés. Ce package doit ensuite être copié dans le répertoire :

C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\ProjectItems\DataTransformationProject\DataTransformationItems

A propos de DCube

DCube est une société de services spécialisée dans les plateformes Microsoft.

Microsoft Gold Certified Partner depuis 2007, nous comptons une trentaine de collaborateurs certifiés ayant à cœur de mettre leur passion pour la technologie au service de leurs clients.

Visitez notre site : www.d-cube.fr