Archive

Archives de l'auteur

Lire un fichier XML Infopath avec SSIS

Dans  SSIS, lorsqu’on utilise un fichier XML issus de Infopath  comme source XML, on obtient l’erreur suivante :

«  Unable to infer the XSD from the XML file. The XML contains multiple namespaces »

Pour pouvoir utiliser ce fichier avec SSIS, il faut :

  1. Supprimer les Namespaces
  2. Ajouter une balise pour que SSIS interprète les champs du fichier XML comme des colonnes d’une même table et non comme des  tables distinctes.

Ceci peut se faire via un script de transformation XSLT .

Dans le control flow, il faut créer une tache  XML  de type XSLT.

Elle a besoin de 3 connections sur 3 fichiers différents :

Input : C’est une connexion sur le fichier XML source

Output : C’est le résultat de la transformation. Cela peut être une connexion sur un fichier (nécessaire pour générer une première fois le fichier XSD) , ou une variable, qui pourra ensuite être utilisée comme source XML.

Second Operand : C’est le script XSLT qui sera appliqué. Le SecondOperandType peut être une connexion si le script est stocké dans un fichier externe, ou bien DirectInput, si le code du script est saisi directement dans la valeur de SecondOperand.

Voici le contenu du script XSLT pour supprimer les Namespaces et générer la balise <myTable> :

<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="no" /><xsl:template match="/|comment()|processing-instruction()">
<xsl:copy>
<myTable>
<xsl:apply-templates />
</myTable>
</xsl:copy>
</xsl:template>
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="@*|node()" />
</xsl:element>
</xsl:template>
</xsl:stylesheet>

Le fichier résultat est maintenant utilisable par SSIS comme source XML.

Categories: Divers Tags:

Outil de gestion des fichiers de configuration de SSIS

La gestion des fichiers de configuration en XML de SSIS n’est pas chose aisée. Il n’est pas facile de les modifier à la main, et les re-générer à chaque modification est un processus assez lourd. Quand en plus on doit gérer plusieurs fichiers de configuration en fonction des différents environnements de développement, recette, production… cette tâche devient rapidement compliquée et source d’erreurs.

Je vous mets donc à disposition cet outil éprouvé dans plusieurs projets BI. Cet outil est une interface web développée en asp qui vous permet de gérer simplement les différents fichiers de configurations de SSIS et ce quel que soit le nombre d’environnements différents.

L’outil permet de déclarer des environnements, de créer de nouvelles variables et de modifier les valeurs associées à ces variables pour chacun des environnements. Vous pouvez directement comparer, pour une variable, sa valeur dans chacun des environnements.

Les modifications ne sont prises en compte que lors de leur validation et une sauvegarde des fichiers est effectuée avant leur ré-écriture.

Les variables déjà présentes dans les fichiers de configuration sont automatiquement intégrées. Vous n’avez donc pas à déclarer les variables que vous avez déjà définies.

Vous n’aurez donc plus à toucher les fichiers de configuration XML, l’outil vous offre une interface simple et efficace pour les manipuler.

Archive à télécharger :
SSISConfig.zip

Déclaration des environnements :
Déclaration des environnements

Liste des variables et affichage de leur valeur dans chacun des environnements :
Liste des variables et affichage de leur valeur dans chacun des environnements

Création d’une nouvelle variable :
Création d’une nouvelle variable :

Modification de la valeur d’une variable :
Modification de la valeur d’une variable :

Validation des modifications :
Validation des modifications

Sauvegarde automatique des anciennes versions des fichiers :
Sauvegarde automatique des anciennes versions des fichiers

Categories: Divers Tags:

Grouby By Concat en Transac SQL

Quand on doit gérer des relations en Many to Many en SQL, on se retrouve confronté au problème de

« Comment concaténer les valeurs d’une colonne de plusieurs lignes »
ou
« Comment simuler une fonction de concaténation comme agrégation d’un group by »?

Ex :

Une solution efficace et rapide est d’utiliser la clause FOR XML :

SELECT p1.CategoryId,
( SELECT ProductName + ‘,’
FROM Products p2
WHERE p2.CategoryId = p1.CategoryId
ORDER BY ProductName
FOR XML PATH( ») ) AS ProductList,COUNT(1) as ProductCount
FROM Products p1
GROUP BY CategoryId ;

Pour une étude détaillée des différentes solutions utlisables en Transac SQL, voici une excellente étude du problème :
http://www.simple-talk.com/content/article.aspx?article=539

CategoryID ProductName
1 P1
1 P2
1 P3
2 P4
2 P5
Categories: Divers Tags: