BI experience

28 août 2012
par maryam khiali
0 Commentaires

SQL Server : fonction de nettoyage

Je voulais juste poster un exemple de fonction qui nettoie un varchar pour n’en garder que les numéros et finalement en faire un Integer.

Je me suis basée sur une table ascii pour faire les bons remplacements.

CREATE FUNCTION [dbo].[Nettoyage] (@INPUT VARCHAR(100))

RETURNS int
AS
BEGIN
DECLARE @OUTPUT                 INTEGER
DECLARE @Id                              INTEGER
DECLARE @Taille_output         INTEGER
DECLARE @Champ_travail      VARCHAR(100)
DECLARE @Champ_travail2    VARCHAR(100)
DECLARE @PremierPassage     INTEGER
DECLARE @i                                 INTEGER
DECLARE @flag                            INTEGER

SET @i = 32
SET @Taille_output = 0
SET @Champ_travail2 =  »
SET @OUTPUT = 0
SET @PremierPassage = 0
SET @flag = 0

/* si mon champ est null*/
IF @INPUT IS NULL
BEGIN
SET @Id = NULL
GOTO Fin
END

/*1er passage*/
if(@PremierPassage = 0)
begin
SET @Champ_travail = REPLACE (@input,char(@i), »)
SET @Champ_travail2 =@Champ_travail
SET @i = 33
SET @PremierPassage = 1
end
/*1ere partie des caractères ascii qu’on ne veut pas*/
begin
while @i<=47
begin
SET @Champ_travail = REPLACE (@Champ_travail2,char(@i), »)
SET @Champ_travail2 =@Champ_travail
SET @i = @i+1
end
SET @i = 58
end

/*2eme partie des caractères ascii qu’on ne veut pas*/
begin
while @i<=127
begin
SET @Champ_travail = REPLACE (@Champ_travail2,char(@i), »)
SET @Champ_travail2 =@Champ_travail
SET @i = @i+1
end
end

SET @Taille_output = LEN(@Champ_travail2)
SET @flag = isnumeric(@Champ_travail2)
Fin:
if @flag = 1
begin
if CAST (ltrim(rtrim(@Champ_travail2))as NUMERIC) <= 2147483647
begin
SET @OUTPUT =CAST (ltrim(rtrim(@Champ_travail2))as INTEGER)
end
else
SET @OUTPUT = 0
end
else
SET @OUTPUT = 0

RETURN @OUTPUT

END

Si vous avez des conseils, n’hésitez pas à laisser un commentaire…

1 août 2012
par maryam khiali
0 Commentaires

ssis et les web services

Lorsque vous voulez lire un web service avec SSIS, rien de plus facile : un composant dédié existe.

web_service_taskA l’intérieur vous y trouverez dans le menu « General » avec un bouton « download WSDL ». Il faut :

1) déclarer un fichier WSDL vide

2) cliquer sur le bouton « Download WSDL » => le fichier WSDL est rempli.

wst_general

Puis dans le menu « input » vous aurez normalement automatiquement accès aux services, aux méthodes (1er carré rouge), aux paramètres (2nd carré rouge) que propose le webservice :

wst_input

Et enfin  dans le menu « ouput », vous pourrez préciser le fichier XML, par exemple, dans lequel vous souhaitez que les données soient déversées :

wst_output

Jusqu’ici ça à l’air plutôt simple. Cependant, après exécution de ce composant, vous pourrez constater que le fichier XML possède à chaque balise une syntaxe de type :

<test1 xmlns= »http://schemas.www.w3.org/TR/html14″>Youhou</test1>

Du coup, quand on veut, par la suite, créer un dataFlow avec en source notre fichier XML test.xml, le fichier XSD créé automatiquement n’est pas bon. Il n’arrive pas à interpréter les balises. Vous pourrez parfois avoir l’erreur :

« unable to infer the XSD from the XML file. The xml file contain multiple namespace. »

C’est pourquoi, je vous renvoie sur ce lien qui vous permettra de nettoyer votre fichier XML.

Malgré ces manipulations, le fichier XSD généré automatiquement sera peut-être encore faux. Exemple de message :
 » the xml source adapter does not support mixed content modèle or complex types »
Vous pourrez donc modifier à la main les typages ou model vous posant problème.

Et voilà! Votre composant XML vous permettra d’accéder à vos données comme si la source était une table quelconque…

Si vous aussi, vous avez eu une expérience avec les web services et SSIS n’hésitez pas à poster vos commentaires!

30 juillet 2012
par maryam khiali
1 Commentaire

SQL server 2012 : les nouveautés coté SSIS

Je sais que SQL server 2012 est sorti en Mars. Mais je n’avais pas eu le temps jusqu’ici de regarder les nouveautés…Avec le ralentissement de l’activité pendant les vacances d’été, j’en ai donc profité pour me renseigner…

Les points qui m’ont paru les plus importants sont les suivants :

  • undo et redo : le « ctrl +  Z »  est enfin disponible…C’est une toute petite option qui change grandement la vie…et il a fallu attendre 2012 pour l’avoir alors maintenant profitons-en!!
  • une interface plus user-friendly, plus pratique (d’ailleurs elle me fait penser à Talend…) avec une meilleure gestion des connexions :

interface_sqlserver_2012

  • La gestion des variables pour les connexions aux différents environnements (dév, recette et production) me fait aussi penser à Talend. Des paramètres avec un scope « project » pourront être créés et  lors de l’exécution, nous pourrons choisir sur quel environnement exécuter nos packages grâce aux variables d’environnement : les valeurs ( exemple : connexion string) que l’on attribuera aux paramètres.
  • Le déploiement est une chose qui a pas mal changé  :

interface_post_deploiement1

Comme vous pouvez le constater, un nouveau dossier est apparu dans management studio : « Integration Services Catalogs ».

Ce dossier sera l’endroit où les packages seront déployés et l’endroit où les variables d’environnement seront créées.

De plus lors d’un déploiement c’est un nouveau type de fichier qui sera créé : ISPAC file qui contiendra un ensemble de packages et de paramètres que l’on renseignera pour l’exécution à travers l’integration services catalog.

deploiement_compare

  • La grande nouveauté est aussi l’apparition du composant de data quality : « DQS cleansing » qui via un projet de data quality services répertoriant plusieurs règles permettra de nettoyer des donnéesdqs_cleansing

Vous trouverez plus de détails sur le document « Introducing Microsoft SQL Server 2012 ebook ».

10 juillet 2012
par maryam khiali
0 Commentaires

Paramètre d’un rapport Reporting services mêlé à du Analysis services

Après avoir construit un super cube, l’accès à l’information  pour l’utilisateur se fera via Excel en faisant une connexion de type SSAS où les développeurs pourront proposer des rapports SSRS se basant sur la base SQL ou encore en requêtant un cube avec des requêtes mdx.

En voulant répondre à une demande client, il a fallu créer un rapport qui contenait à la fois des datasets SQL et des datasets MDX.

Le moment critique a été le moment de créer la requête MDX, je vous l’accorde mais aussi de passage de paramètre. Je vais donc détailler ce passage de paramètre à la fois à une requête SQL mais aussi à une requête MDX :

Après avoir créer les paramètres dans : parameters

Il faudra aller au niveau des datasets.

Pour le dataset properties qui a une requête SQL, voici comment sont gérés les paramètres

parametre_sql

et dans la query du dataset voici comment les paramètres sont appelés :dataset_sql

Pour le dataset properties qui a une requête MDX, voici comment sont gérés les paramètres :

parametre_mdx

Et dans le dataset  voici comment les paramètres sont appelés :

dataset_mdx

Donc à partir d’un même paramètre, nous arrivons à transmettre le filtre à la fois à la requête SQL et à la requête MDX.

Si vous n’avez pas envie de passer par l’assistant de création de paramètre pour la requête MDX :

Voici l’assistant en question :

creation_parametre

Ne passer pas par le bouton query designer mais plutôt pas fx :

query_access

Si vous avez d’autres astuces, n’hésitez pas à nous en faire part!!