Parallélisme et Lookups dans SSIS

Todd McDermid a publié un très bon article il y a 15 jours sur le parallélisme et les lookups dans SSIS.

Son approche est excellente, ça vaut le détour, mais pour ceux qui n’ont pas le temps je vous le résume en 2 points:

  • L’interface graphique de SSIS nous ment très régulièrement. C’est une abstraction qui ne représente pas exactement ce qui se passe réellement sous le capot.
  • Conclusion: comme pour SQL Server et le T-SQL, dans 95% des cas il vaut mieux laisser SSIS optimiser tout seul le data-flow plutôt que déplacer les blocs dans tous les sens.

Nb: Je passe l’air de rien un lien vers la loi des abstractions foireuses de Joel Spolsky, mais je reviendrai dessus. C’est à mon sens l’un des meilleurs articles écrit sur l’architecture logicielle.

Bienvenu à Todd McDermid!

La honte sur moi, j’avais oublié Todd McDermid dans le blogroll BI, à droite du site là –>

Pour rappel, c’est un poid lourd de SSIS sur la net, il est l’auteur de nombreux composants additionnels sur le CodePlex, dont le SCD Kimball, il est également MVP SQL Server.

Ne vous inquiétez pas, maintenant tout est réparé. Je l’ai ajouté à mes flux RSS, je surveille ses nouveaux articles et pour me rattraper je ferais bientôt une petite compilation de ses meilleurs articles.

La Sagesse du Junkie

Le Junkie en question c’est Jamie Thomson, le célébre SSIS Junkie.

Dernièrement il a écrit 3 articles qui ont retenu mon attention:

  • Repenser les méthodes de diffusion de la BI. Utiliser Outlook, les flux RSS, twitter/facebook, que sais-je, pour délivrer les infos issues de la BI, pour moi c’est définitivement sexy. Des variations non seulement sur le medium (iPhone, SmartPhone, Mac…) mais aussi sur la méthode. Ça peut devenir un gros sujet pour nous.
  • Comment ne pas transformer le dataflow en un curseur. Dans un flux de données, il faut savoir bien répartir les taches entre les différentes ressources et composants, sous peine d’être violemment pénalisé en performance. Cet article est une bonne piqure de rappel. Cela dit, attention à l’effet inverse qui consiste à passer toute l’intelligence du flux dans la requête SQL source. Rien de pire qu’une requête de 3 pages dans la source et hop une destination. Quand je vois ça, je m’énerve tout rouge!
  • Le dépivot dynamique : comment dépivoter des données lorsqu’on ne connaît pas à l’avance les colonnes que l’on obtiendra en sortie. A noter que c’est possible quelque part dans un coin de sa tête 😉

Pour ceux qui ne suivent pas directement Jamie, je pense linker régulièrement ses bons articles par ici. A suivre donc!

McFly, y’a quelqu’un à l’appareil?

Dans SSIS, rien de plus frustrant qu’un script qui plante, ou pire, qui ne fait pas ce qu’on lui demande!

Un bon moyen de voir ce qu’il se passe c’est d’utiliser une Message Box pour retourner les valeurs qui sont manipulées par le script. La syntaxe en VB ça donne ça:

Public Sub Main()
     MsgBox("Texte" & Dts.Variables("Nom_de_la_variable").Value.ToString)
     Dts.TaskResult = Dts.Results.Success
End Sub

En C# il faut faire ça:

MessageBox(Dts.Variables["Nom_de_la_variable"].Value.ToString())

Évidemment dans ce cas là faut pas oublier de passer la variable en paramètre d’entrée du script hein…

Source

SSIS Expression Editor

Un autre outil que j’adore c’est l’éditeur d’expressions SSIS! C’est un petit exécutable qui se télécharge sur CodePlex et qui permet d’écrire et vérifier des expressions sans ouvrir SSIS!

Le gros point positif pour moi c’est la gestion des variables, qui permet de tester le comportement d’une expression sur différentes valeurs tordues sans avoir à exécuter tout le package à chaque fois. Nice!