<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>BI experience</title>
	
	<link>http://infodecisionnel.com</link>
	<description />
	<pubDate>Mon, 21 May 2012 07:16:05 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/biexperience" /><feedburner:info uri="biexperience" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>MSSQL 2008R2 Slowly Changing Dimension et la volumétrie</title>
		<link>http://feedproxy.google.com/~r/biexperience/~3/zkjDI9J0thw/</link>
		<comments>http://infodecisionnel.com/microsoft/microsoft-slow-dimension-changing-et-la-volumetrie/#comments</comments>
		<pubDate>Tue, 15 May 2012 13:49:02 +0000</pubDate>
		<dc:creator>maryam khiali</dc:creator>
		
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://infodecisionnel.com/?p=1804</guid>
		<description><![CDATA[En voulant mettre en place le chargement de dimension avec le principe du SCD. Je me suis tout de suite tourné vers les composants proposés dans SSIS

Pour petit rappel, vous trouverez sur ce lien : sqlservergeeks.com l&#8217;explication des différents types de SCD possible à faire. Dans cet article nous parlerons du type2.
Votre dimension cible devra [...]]]></description>
			<content:encoded><![CDATA[<p>En voulant mettre en place le chargement de dimension avec le principe du SCD. Je me suis tout de suite tourné vers les composants proposés dans SSIS</p>
<p><img class="aligncenter size-full wp-image-1810" title="scd1" src="http://infodecisionnel.com/wp-content/uploads/2012/05/scd1.jpg" alt="scd1" width="324" height="125" /></p>
<p>Pour petit rappel, vous trouverez sur ce lien : <a href="http://www.sqlservergeeks.com/blogs/AmitK/sql-server-bi/278/sql-server-topsum-and-bottomsum-in-mdx">sqlservergeeks.com</a> l&#8217;explication des différents types de SCD possible à faire. Dans cet article nous parlerons du type2.</p>
<p>Votre dimension cible devra contenir 3 champs :</p>
<ul>
<li>[DMXXXX_SCD_DATE_DEBUT]</li>
<li>[DMXXXX_SCD_DATE_FIN]</li>
<li>[DMXXXX_SCD_FLAG_ACTIF]</li>
</ul>
<p>Voici le résultat que cela donne en passant par l&#8217;assistant du composant :</p>
<p><img class="aligncenter size-full wp-image-1817" title="scd2" src="http://infodecisionnel.com/wp-content/uploads/2012/05/scd2.jpg" alt="scd2" width="267" height="401" /></p>
<p>Ci dessous voici ce que l&#8217;on a mis dans l&#8217;assistant pour le SCD de type  2: <img class="aligncenter size-full wp-image-1869" title="scd31" src="http://infodecisionnel.com/wp-content/uploads/2012/05/scd31.jpg" alt="scd31" width="517" height="673" /></p>
<p>Le package global aura donc la forme ci dessous :</p>
<p><img class="aligncenter size-full wp-image-1819" title="scd4" src="http://infodecisionnel.com/wp-content/uploads/2012/05/scd4.jpg" alt="scd4" width="434" height="277" /></p>
<p>1 -  il y a un update pour toutes les colonnes sauf sur la colonne qu’on étudie en SCD (afin de prendre en compte de changement de libellés par exemple) : DMXXXX_ID<br />
2- Dans le Load il y a le SCD qui permettra d&#8217;ajouter les nouvelles lignes et d&#8217;inactiver les anciennes à une date donnée.</p>
<p>Cette méthodologie est possible quand la volumétrie n&#8217;est pas très importante.<strong> Si votre volumétrie est trop importante et que vous voulez garder la démarche du SCD, il faut passer en full SQL</strong> :</p>
<p><img class="aligncenter size-full wp-image-1864" title="scd52" src="http://infodecisionnel.com/wp-content/uploads/2012/05/scd52.jpg" alt="scd52" width="475" height="419" /><br />
1- Garder la démarche du chargement d’un TMP_DMXXXX afin de préparer le chargement des différents ID, les jointures avec les dimensions…<br />
2- Update de tous les champs sauf des champs suivants (pour prendre en compte les changement de libellés, etc) :</p>
<ul>
<li>DMXXXX_ID</li>
<li>DMXXXX_SCD_DATE_DEBUT</li>
<li>[DMXXXX_SCD_DATE_FIN]</li>
<li>[DMXXXX_SCD_FLAG_ACTIF]</li>
<li>DMXXXX_DATE_CREATION</li>
</ul>
<p>Avec une requête du type :</p>
<p><em>UPDATE MAJ<br />
SET<br />
MAJ.[DMXXXX_LIBELLE] = TMP.XXXX_LIBELLE<br />
,MAJ.[DMXXXX_DATE_DERN_MAJ] = TMP.XXXX_DATE_DERN_MAJ<br />
FROM<br />
DMXXXX MAJ INNER JOIN<br />
(<br />
SELECT<br />
[DMXXXX_ID]<br />
,DMXXXX_XXXX_ID<br />
,[DMXXXX__LIBELLE]<br />
FROM DMXXXX<br />
) as SRC ON SRC.[DMXXXX_ID] = MAJ.[DMXXXX_ID]<br />
INNER JOIN<br />
(<br />
SELECT<br />
[XXXX_ID]<br />
,[XXXX_LIBELLE]<br />
FROM [STAGING].[dbo].TMP_DMXXXX<br />
) as TMP ON TMP.[XXXX_ID]= SRC.[DMXXXX_XXXX_ID]<br />
WHERE TMP.XXXX_DATE_DERN_MAJ &lt;&gt; SRC.DMXXXX_XXXX_DATE_DERN_MAJ</em></p>
<p>3- Ensuite on insert les nouvelles lignes c’est-à-dire les lignes qui ont une ID nouveau. En initialisant les champs suivants :<br />
<img class="aligncenter size-full wp-image-1873" title="nouvelle_ligne" src="http://infodecisionnel.com/wp-content/uploads/2012/05/nouvelle_ligne.jpg" alt="nouvelle_ligne" width="260" height="333" /></p>
<p>Dans le derived column voici ce que l&#8217;on a ajouté : <img class="aligncenter size-full wp-image-1833" title="scd6" src="http://infodecisionnel.com/wp-content/uploads/2012/05/scd6.jpg" alt="scd6" width="603" height="78" /></p>
<p>4- on insert ensuite les lignes qui ont un même Id (XXXX_ID) et un XXXX_monchamp (le champ sur lequel je souhaite faire mon historisation) différent. (le data flux reste le même que dans le 3- avec une jointure en plus au niveau du lookup pour récupérer juste les lignes qui ont le même ID métier et un ID du champ à historiser différents. Dans le derived column voici les infos qu&#8217;on y a mises :<br />
<img class="aligncenter size-full wp-image-1838" title="scd71" src="http://infodecisionnel.com/wp-content/uploads/2012/05/scd71.jpg" alt="scd71" width="604" height="83" /></p>
<p>5 -Et ensuite il faut desactiver les enregistrements les plus anciens avec une requête du type :</p>
<p><em>UPDATE MAJ<br />
SET<br />
MAJ.DMXXXX_SCD_FLAG_ACTIF = 0,<br />
MAJ.DMXXXX_SCD_DATE_FIN = GETDATE()<br />
FROM<br />
DMXXXX MAJ INNER JOIN<br />
(<br />
SELECT<br />
k.DMXXXX_XXXX_ID,<br />
MIN(k.DMXXXX_SCD_DATE_DEBUT) as DMXXXX_SCD_DATE_DEBUT<br />
FROM DMXXXX k<br />
WHERE EXISTS (<br />
SELECT<br />
t.DMXXXX_XXXX_ID<br />
FROM<br />
(<br />
SELECT<br />
DMXXXX_XXXX_ID,<br />
DMXXXX_SCD_FLAG_ACTIF ,<br />
COUNT(*) as nb<br />
FROM DMXXXX<br />
WHERE  DMXXXX_SCD_FLAG_ACTIF = 1<br />
GROUP BY<br />
DMXXXX_XXXX_ID,<br />
DMXXXX_SCD_FLAG_ACTIF<br />
having count(*)&gt;1<br />
) as t<br />
WHERE t.DMXXXX_XXXX_ID = k.DMXXXX_XXXX_ID<br />
)<br />
GROUP BY<br />
k.DMXXXX_XXXX_ID<br />
)  as tb_finale ON tb_finale.DMXXXX_XXXX_ID = MAJ.DMXXXX_XXXX_ID<br />
and tb_finale.DMXXXX_SCD_DATE_DEBUT = MAJ.DMXXXX_SCD_DATE_DEBUT</em></p>
<p>Et vous, comment faites vous vos chargements de dimensions?</p>
<p><!--[if gte mso 10]><br />
<mce:style><!   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Tableau Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin-top:0cm; 	mso-para-margin-right:0cm; 	mso-para-margin-bottom:10.0pt; 	mso-para-margin-left:0cm; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi; 	mso-fareast-language:EN-US;}  ></p>
<p><! [endif]  ></p>
<p class="MsoNormal">5- Et enfin pour inactiver les anciennes lignes nous passerons par une requête SQL. Toutes les lignes qui ont plus d&#8217;1 ligne active possède donc une ligne :  la plus anciennes à désactiver :</p>
<p>UPDATE MAJ<br />
SET<br />
MAJ.DMXXXX_SCD_FLAG_ACTIF = 0,<br />
MAJ.DMXXXX_SCD_DATE_FIN = GETDATE()<br />
FROM<br />
DMXXXX MAJ INNER JOIN<br />
(<br />
SELECT<br />
k.DMXXXX_XXXX_ID,<br />
MIN(k.DMXXXX_SCD_DATE_DEBUT) as DMXXXX_SCD_DATE_DEBUT<br />
FROM DMXXXX k<br />
WHERE EXISTS (<br />
SELECT<br />
t.DMXXXX_XXXX_ID<br />
FROM<br />
(<br />
SELECT<br />
DMXXXX_XXXX_ID,<br />
DMXXXX_SCD_FLAG_ACTIF ,<br />
COUNT(*) as nb<br />
FROM DMXXXX<br />
WHERE  DMXXXX_SCD_FLAG_ACTIF = 1<br />
GROUP BY<br />
DMXXXX_XXXX_ID,<br />
DMXXXX_SCD_FLAG_ACTIF<br />
having count(*)&gt;1<br />
) as t<br />
WHERE t.DMXXXX_XXXX_ID = k.DMXXXX_XXXX_ID<br />
)<br />
GROUP BY<br />
k.DMXXXX_XXXX_ID<br />
)  as tb_finale ON tb_finale.DMXXXX_XXXX_ID = MAJ.DMXXXX_XXXX_ID<br />
and tb_finale.DMXXXX_SCD_DATE_DEBUT = MAJ.DMXXXX_SCD_DATE_DEBUT</p>
<p>N&#8217;hésitez pas à nous faire partager votre expérience. Postez vos commentaires!</p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p></bo ></p>
<p></bo ></p>
<p></bo--></p>
]]></content:encoded>
			<wfw:commentRss>http://infodecisionnel.com/microsoft/microsoft-slow-dimension-changing-et-la-volumetrie/feed/</wfw:commentRss>
		<feedburner:origLink>http://infodecisionnel.com/microsoft/microsoft-slow-dimension-changing-et-la-volumetrie/</feedburner:origLink></item>
		<item>
		<title>binary_checksum, l’ennemi du décisionnel?</title>
		<link>http://feedproxy.google.com/~r/biexperience/~3/XijRn0f3i-U/</link>
		<comments>http://infodecisionnel.com/sql/binary_checksum-lennemi-du-decisionnel/#comments</comments>
		<pubDate>Fri, 20 Apr 2012 09:40:12 +0000</pubDate>
		<dc:creator>maryam khiali</dc:creator>
		
		<category><![CDATA[SQL]]></category>

		<category><![CDATA[binary_checksum]]></category>

		<category><![CDATA[hashbytes]]></category>

		<guid isPermaLink="false">http://infodecisionnel.com/?p=1749</guid>
		<description><![CDATA[En arrivant sur un projet décisionnel, une stratégie d&#8217;update avec la fonction binary_checksum avait été appliquée pour détecter les changements.  En faisant quelques tests et quelques recherches sur internet, nous nous sommes vite rendus compte que cette fonction ne remplissait pas forcement son rôle. Nous avions des colonnes qui ne se mettaient pas à [...]]]></description>
			<content:encoded><![CDATA[<p>En arrivant sur un projet décisionnel, une stratégie d&#8217;update avec la fonction binary_checksum avait été appliquée pour détecter les changements.  En faisant quelques tests et quelques recherches sur internet, nous nous sommes vite rendus compte que cette fonction ne remplissait pas forcement son rôle. Nous avions des colonnes qui ne se mettaient pas à jour.  Voici ce qu&#8217;on peut glaner sur Internet :</p>
<ul>
<li><a href="http://blog.sqlauthority.com/2010/08/01/sql-server-introduction-to-binary_checksum-and-working-example/">un exemple</a> pour comprendre comment fonctionne le binary_checksum</li>
</ul>
<ul>
<li><a href="http://msdn.microsoft.com/fr-fr/library/ms173784%28v=sql.90%29.aspx">un article sur msdn</a> qui confirme que cette méthode n&#8217;est pas fiable à tous les coups :</li>
</ul>
<p><em>&#8220;BINARY_CHECKSUM(*), calculé à partir de n&#8217;importe quelle ligne d&#8217;une  table, retourne la même valeur tant que la ligne ne subit aucune  modification. BINARY_CHECKSUM(*) retourne une valeur différente<strong> pour la  plupart des modifications apportées à la ligne (mais pas pour toutes) et  permet de détecter la plupart des modifications</strong>.&#8221;</em></p>
<ul>
<li><a href="http://geekswithblogs.net/LifeLongTechie/archive/2011/05/20/do-not-trust-checksum-or-binary_checksum-in-sql-use-hashbytes.aspx">un article sur un blog</a> qui résume bien la situation : qu&#8217;il ne faut pas utiliser binary_checksum mais plutôt la fonction hashbytes (fonction moins performante que le binary_checksum et plus lourde à mettre en place)</li>
</ul>
<ul>
<li>vous trouverez dans <a href="http://www.bidn.com/blogs/TomLannen/bidn-blog/2265/using-hashbytes-to-compare-columns">cet article</a> un exemple d&#8217;utilisation du hashbytes qui confirme que l&#8217;utilisation n&#8217;a pas l&#8217;air très simple pour arriver à un résultat qui fonctionne à tous les coups</li>
</ul>
<p>Conclusion nous avons enlever l&#8217;utilisation du binary_checksum pour passer à un update classique basé sur :</p>
<ul>
<li>une date de mise à jour</li>
<li>et sur l&#8217;ID unique que l&#8217;application nous fournissait</li>
</ul>
<p>Les performances restent correctes.</p>
<p>Si vous avez eu une expérience binary_checksum ou encore hashbytes n&#8217;hésitez pas à la partager avec nous!</p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;">
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;"><strong><span style="font-size: small; font-family: Calibri;"> </span></strong></p>
<p class="MsoNormal" style="margin: 0cm 0cm 10pt;">
]]></content:encoded>
			<wfw:commentRss>http://infodecisionnel.com/sql/binary_checksum-lennemi-du-decisionnel/feed/</wfw:commentRss>
		<feedburner:origLink>http://infodecisionnel.com/sql/binary_checksum-lennemi-du-decisionnel/</feedburner:origLink></item>
		<item>
		<title>ODBC, OLE DB, ADO et ADO.NET ça vous parle?</title>
		<link>http://feedproxy.google.com/~r/biexperience/~3/uf3ApCNMhKQ/</link>
		<comments>http://infodecisionnel.com/microsoft/odbc-ole-db-ado-et-adonet-ca-vous-parle/#comments</comments>
		<pubDate>Thu, 12 Apr 2012 22:03:51 +0000</pubDate>
		<dc:creator>maryam khiali</dc:creator>
		
		<category><![CDATA[Microsoft]]></category>

		<category><![CDATA[connexions]]></category>

		<guid isPermaLink="false">http://infodecisionnel.com/?p=1710</guid>
		<description><![CDATA[Nous avons plusieurs types de connexion à la base de données. Mais quelle est la différence entre ces différents types? Et comment choisir le type de connexion dont nous avons besoin?
Tout d&#8217;abord voici un bref récapitulatif de leur apparition :

 1992 : création de  l&#8217;ODBC
 1996 : création de l&#8217;OLE DB et de l&#8217;ADO
 [...]]]></description>
			<content:encoded><![CDATA[<p>Nous avons plusieurs types de connexion à la base de données. Mais quelle est la différence entre ces différents types? Et comment choisir le type de connexion dont nous avons besoin?</p>
<p>Tout d&#8217;abord voici un bref récapitulatif de leur apparition :</p>
<ul>
<li> 1992 : création de  l&#8217;ODBC</li>
<li> 1996 : création de l&#8217;OLE DB et de l&#8217;ADO</li>
<li> 2002 : création d&#8217;ADO.NET</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Définitions :</strong></span></p>
<p><span style="text-decoration: underline;"><strong>ODBC</strong></span> : (Open Database Connectivity) est une interface de programmation d&#8217;application (API) universelle qui permet de se connecter à des bases de données  ayant obligatoirement l&#8217;apparence d&#8217;une base de données relationnelle. Les données non structurées ne pourront donc pas être traitées avec de l&#8217;ODBC.</p>
<p>Caractéristiques générales :</p>
<ul>
<li>performant</li>
<li>codage avec l&#8217;API ODBC difficile</li>
<li>moins robuste que l&#8217;ADO par exemple</li>
</ul>
<p>Son mode de fonctionnement est assez simple : l&#8217;API ODBC employé par une application va faire appel à un gestionnaire de drivers qui va lui même appeler le bon driver afin de récupérer le résultat de la demande envoyée par l&#8217;application.</p>
<p><span style="text-decoration: underline;"><strong>OLE DB et ADO:</strong></span></p>
<ul>
<li>l&#8217;OLE DB qui est un <strong>fournisseur de données</strong> aussi bien sur les bases de données relationnels que non relationnelles</li>
<li>et l&#8217;ADO une <strong>surcouche</strong> entre l&#8217;OLE DB et l&#8217;application. L&#8217;ADO (ActiveX Data Object) encapsule et rend virtuellement     accessibles toutes les fonctionnalités de OLE DB.</li>
</ul>
<p>l&#8217;OLE DB et l&#8217;ADO sont <strong>basés sur COM (Component     Object Model : application binary interface )</strong>. Ces interfaces, permettent le dialogue entre différents programmes.</p>
<p>Grâce au framework COM, les     développeurs bénéficient d&#8217;un support     riche et homogène de fonctionnalités de conception     d&#8217;accès aux données dans  tous les     langages Microsoft de développement :  (VB, C++, VBScript, J++&#8230;)</p>
<p>Le tandem OLEDB et ADO  propose donc une combinaison :</p>
<ul>
<li>performante</li>
<li>codage facile pour les développeurs</li>
<li>robuste</li>
</ul>
<p><span style="text-decoration: underline;"><strong>ADO.NET (ActiveX Data Objects for .NET):</strong></span></p>
<p>Comme vous le savez surment le framework COM est voué à disparaitre au profit de FRAMEWORK.NET.</p>
<p>A partir de là Microsoft a développé l&#8217;ADO.NET. Il regroupe à la fois le fournisseur de données et la surcouche permettant l&#8217;accès aux résultats du fournisseur de données. Ce nouveau framework corrige plusieurs problématiques que les développeurs rencontraient lors de développements avec ADO. Je vous laisse voir ces évolutions sur <a href="http://dotnet.developpez.com/cours/ado.net/">developpez.com</a></p>
<p>Pour conclure plusieurs sources laissent à croire que l&#8217;OLE DB et l&#8217;ADO sont voués à disparaitre au profit de l&#8217;ADO.NET.</p>
<p>Du coup pensez y pour vos prochains développements!!</p>
]]></content:encoded>
			<wfw:commentRss>http://infodecisionnel.com/microsoft/odbc-ole-db-ado-et-adonet-ca-vous-parle/feed/</wfw:commentRss>
		<feedburner:origLink>http://infodecisionnel.com/microsoft/odbc-ole-db-ado-et-adonet-ca-vous-parle/</feedburner:origLink></item>
		<item>
		<title>SSAS et son bug Identity Tinyint</title>
		<link>http://feedproxy.google.com/~r/biexperience/~3/5WeW0-foUYE/</link>
		<comments>http://infodecisionnel.com/ssas/ssas-et-son-bug-identity-tinyint/#comments</comments>
		<pubDate>Tue, 10 Apr 2012 06:29:29 +0000</pubDate>
		<dc:creator>maryam khiali</dc:creator>
		
		<category><![CDATA[SSAS]]></category>

		<guid isPermaLink="false">http://infodecisionnel.com/?p=1684</guid>
		<description><![CDATA[Par soucis de performance, pour le chargement de schémas en étoile, pour le processing de cube SSAS, les administrateurs de bases de données nous demandent de la rigueur quant au choix des typages de nos champs. 
Il se trouve que SSAS a un bug qui ne nous permet pas de toujours agir dans ce sens. [...]]]></description>
			<content:encoded><![CDATA[<p>Par soucis de performance, pour le chargement de schémas en étoile, pour le processing de cube SSAS, les administrateurs de bases de données nous demandent de la rigueur quant au choix des typages de nos champs. </p>
<p>Il se trouve que SSAS a un bug qui ne nous permet pas de toujours agir dans ce sens. </p>
<p>Si l&#8217;on construit, par exemple, une dimension avec comme clef incrémentale, propre au système décisionnel, une IDENTITY(1,1) tinyint, cette dernière ne pourra pas être reliée correctement lors de la construction du cube dans SSAS :</p>
<p>&#8220;<span>This causes problems when attempting to define FK relationships  between this column and related FK columns in toher tables in the DSV.&#8221; (voir dans <a href="http://connect.microsoft.com/SQLServer/feedback/details/126798/data-source-view-incorrectly-types-a-tinyint-identity-column-as-int32">cet article</a>)</p>
<p>En effet dans la dimension, l&#8217;ID incrémental tinyint sera converti en int et dans la table de fait vous aurez un tinyint non incrémental et du coup SSAS n&#8217;arrivera pas à les lier.<br />
</span></p>
<p>La solution que certain conseille est de créer des vues en faisant un CAST sur l&#8217;ID en question. Mais je ne sais pas si maintenir de genre de vue est bien à recommander.</p>
<p>Pour SQL Server 2012, malheureusement, le bug reste entier! <a href="http://msdn.microsoft.com/fr-fr/library/ms128523.aspx">voir sur ce lien</a></p>
]]></content:encoded>
			<wfw:commentRss>http://infodecisionnel.com/ssas/ssas-et-son-bug-identity-tinyint/feed/</wfw:commentRss>
		<feedburner:origLink>http://infodecisionnel.com/ssas/ssas-et-son-bug-identity-tinyint/</feedburner:origLink></item>
		<item>
		<title>BI personnelle ou BI d’entreprise?</title>
		<link>http://feedproxy.google.com/~r/biexperience/~3/RSX7OzRy5Vc/</link>
		<comments>http://infodecisionnel.com/microsoft/bi-personnelle-ou-bi-dentreprise/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 20:51:01 +0000</pubDate>
		<dc:creator>maryam khiali</dc:creator>
		
		<category><![CDATA[Microsoft]]></category>

		<category><![CDATA[BISM]]></category>

		<category><![CDATA[cube]]></category>

		<category><![CDATA[modèle tabular]]></category>

		<category><![CDATA[OLAP]]></category>

		<category><![CDATA[powerpivot]]></category>

		<category><![CDATA[SQL Server 2012]]></category>

		<guid isPermaLink="false">http://infodecisionnel.com/?p=1605</guid>
		<description><![CDATA[Une des sessions des techdays m&#8217;a permis de mieux comprendre l&#8217;utilisation  des cubes (AS), du modèle tabulaire et de powerpivot.
Petit historique :





 Année
 Outil
 Technologie


1998
OLAP services
SQL Server 7.0


2000
Analyse services (avec ajout d&#8217;une brique datamining)
SQL Server 2000


2005
Analyse services UDM (KPI, XMLA moteur plus robuste)
SQL Server 2005


2008
pas d&#8217;évolution particulier de ces outils
SQL Server 2008


2008
apparition de l&#8217;outil powerpivot
SQL [...]]]></description>
			<content:encoded><![CDATA[<p>Une des sessions des techdays m&#8217;a permis de mieux comprendre l&#8217;utilisation  des cubes (AS), du modèle tabulaire et de powerpivot.</p>
<h3><span style="text-decoration: underline;"><strong>Petit historique :</strong></span></h3>
<p><span style="text-decoration: underline;"><strong><br />
</strong></span></p>
<table border="1">
<tbody>
<tr>
<th> Année</th>
<th> Outil</th>
<th> Technologie</th>
</tr>
<tr>
<td>1998</td>
<td>OLAP services</td>
<td>SQL Server 7.0</td>
</tr>
<tr>
<td>2000</td>
<td>Analyse services (avec ajout d&#8217;une brique datamining)</td>
<td>SQL Server 2000</td>
</tr>
<tr>
<td>2005</td>
<td>Analyse services UDM (KPI, XMLA moteur plus robuste)</td>
<td>SQL Server 2005</td>
</tr>
<tr>
<td>2008</td>
<td>pas d&#8217;évolution particulier de ces outils</td>
<td>SQL Server 2008</td>
</tr>
<tr>
<td>2008</td>
<td>apparition de l&#8217;outil powerpivot</td>
<td>SQL Server 2008R2</td>
</tr>
<tr>
<td>2012</td>
<td>apparition du modèle BISM</td>
<td>SQL Server 2012</td>
</tr>
</tbody>
</table>
<p>Microsoft propose donc l&#8217;exploitation de 3 outils : Powerpivot, cube OLAP, modèle tabulaire. Mais dans quel cas utiliser l&#8217;un ou l&#8217;autre?</p>
<h3><span style="text-decoration: underline;"><strong>La BI Personnelle :</strong></span></h3>
<p>Si les utilisateurs finaux ont besoin de croiser des données (pour un volume allant jusqu&#8217;à <strong>4Go</strong>) mais qu&#8217;ils n&#8217;ont pas de budget ni le temps de lancer un projet informatique, l&#8217;outil PowerPivot est la solution. L&#8217;utilisateur pourra télécharger gratuitement un <strong>addin pour Excel</strong> ou s&#8217;il a Sharepoint, utiliser Excel Services pour le faire (en installant powerpivot for sharepoint). Grâce au<strong> moteur Vertipaq</strong>, des données chargées dans un fichier Excel seront <strong>montées en mémoire</strong>. L&#8217;utilisateur fonctionnel aura ensuite accès aux fonctionnalités d&#8217;Excel et plus avec le<strong> langage DAX</strong>.</p>
<p>La version 2012 de powerPivot a certaines fonctionnalités en plus, notamment le fait de pouvoir faire:</p>
<ul>
<li> des mesures calculés</li>
<li>des hiérarchies (juste au niveau de la représentation des données donc moins puissant que dans AS)</li>
<li>des KPI</li>
</ul>
<h3><span style="text-decoration: underline;"><strong>La BI d&#8217;Entreprise :</strong></span></h3>
<p>Pour une exploitation des données plus sécurisé, plus contrôlé, plus robuste un projet  de type BI d&#8217;entreprise pourra être mis en place.</p>
<p>2 possibilités s&#8217;offrent à nous :</p>
<ul>
<li>mettre en place des <strong>cubes multidimensionnels</strong> avec l&#8217;exploitation du langage MDX</li>
<li>mettre en place des <strong>modèles tabulaires</strong> avec l&#8217;exploitation du langage DAX.</li>
</ul>
<p><span style="text-decoration: underline;"><strong>Le cube multidimensionnel :</strong></span></p>
<p>Tout d&#8217;abord il faut savoir que les cubes AS ont un <strong>stockage physique et une mise en cache</strong>. Ce système peut accueillir <strong>des</strong> <strong>Téras de données</strong>. Cette technologie permet de gérer des navigations dans les <strong>données complexes</strong> et répond à <strong>des demandes</strong> intenses <strong>d&#8217; aggrégations</strong> de  chiffres.</p>
<p><span style="text-decoration: underline;">Exemple :</span> j&#8217;ai un plan comptable. Certains indicateurs s&#8217;additionnent, d&#8217;autres se soustraits et d&#8217;autres ne sont pas pris en compte (<strong>Le parent n&#8217;est pas forcement la somme des enfants</strong>. Le petit nom anglais : CustomRollup, UnaryOperations). L’agrégation des données pourra donc être très précise et paramétrée. De plus on pourra donner aux utilisateurs la possibilité<strong> d&#8217; écrire directement dans le cube (writeBack)</strong> pour faire des simulations. D&#8217;autres fonctionnalités singulières au cube AS : Default Members, NameSets, Scope Assignments, relations plusieurs à plusieurs vous feront pencher vers l&#8217;utilisation d&#8217;un cube multidimentionnel.</p>
<p><span style="text-decoration: underline;"><strong>Le modèle tabulaire :</strong></span></p>
<p>Concernant la couche sémantique BISM ou autrement dit le modèle tabulaire, si vous avez des contraintes de temps pour le développement un peu court, que le volume de données ne <strong>dépassent pas une centaine de giga</strong>, que les utilisateurs ne connaissent pas bien leur chemin d&#8217;analyse, cette technologie vous conviendra.</p>
<p>Cette technologie sera beaucoup plus performante pour les <strong>demandes de chiffres sur une granularité fine par les utilisateurs</strong>. En effet le cube AS sera plus performant sur des demandes d&#8217;aggrégations et beaucoup moins performant quand l&#8217;utilisateur voudra aller dans le détail de l&#8217;information. C&#8217;est dans ces cas d&#8217;utilisation que le modèle tabulaire prendra tout son sens.</p>
<p>Monter un modèle tabulaire ressemble au montage d&#8217;un powerpivot.</p>
<p>Ce modèle propose un partitionnement (même si le stockage des données se fait en mémoire vive) car un modèle tabulaire se process comme un cube multidimensionnel. On pourra mettre en place une sécurité comme sur AS mais en un peu moins poussée. Les démarches de développement sont sensiblements pareil au développement d&#8217;un cube AS.</p>
<p>Et il ne faut pas oublié que le modèle tabulaire peut être <strong>la source de l&#8217;outil powerView</strong> dans Sharepoint  qui permet de faire des jolis dashboards  et sur un powerPoint de continuer à naviguer dans les données même après export de sharepoint.</p>
<p>J&#8217;espère avoir bien retransmis ce que j&#8217;ai pu apprendre lors de cette session des techdays. J&#8217;attends vos retours!</p>
]]></content:encoded>
			<wfw:commentRss>http://infodecisionnel.com/microsoft/bi-personnelle-ou-bi-dentreprise/feed/</wfw:commentRss>
		<feedburner:origLink>http://infodecisionnel.com/microsoft/bi-personnelle-ou-bi-dentreprise/</feedburner:origLink></item>
		<item>
		<title>Charger un DUMP Oracle</title>
		<link>http://feedproxy.google.com/~r/biexperience/~3/xUg6n7Ua4Is/</link>
		<comments>http://infodecisionnel.com/bdd/charger-un-dump-oracle/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 13:33:20 +0000</pubDate>
		<dc:creator>maryam khiali</dc:creator>
		
		<category><![CDATA[BDD]]></category>

		<category><![CDATA[dump]]></category>

		<category><![CDATA[imp]]></category>

		<category><![CDATA[impdb]]></category>

		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://infodecisionnel.com/?p=1580</guid>
		<description><![CDATA[Exemple de contexte : Vous êtes en société de service, afin de réaliser un POC, un client vous fourni un dump Oracle.
Première chose à faire : poser certaines questions au client :



Les informations NLS_DATABASE_PARAMETERS : pour construire l&#8217;instance Oracle avec les bonnes infomations de NLS_CHARACTERSET et de NLS_NCHAR_CHARACTERSET (SELECT * FROM NLS_DATABASE_PARAMETERS)

Les users utilisés

Les rôles [...]]]></description>
			<content:encoded><![CDATA[<p>Exemple de contexte : Vous êtes en société de service, afin de réaliser un POC, un client vous fourni un dump Oracle.</p>
<p>Première chose à faire : poser certaines questions au client :</p>
<p><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves /> <w:TrackFormatting /> <w:HyphenationZone>21</w:HyphenationZone> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF /> <w:LidThemeOther>FR</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:SplitPgBreakAndParaMark /> <w:EnableOpenTypeKerning /> <w:DontFlipMirrorIndents /> <w:OverrideTableStyleHps /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val="Cambria Math" /> <m:brkBin m:val="before" /> <m:brkBinSub m:val="&#45;-" /> <m:smallFrac m:val="off" /> <m:dispDef /> <m:lMargin m:val="0" /> <m:rMargin m:val="0" /> <m:defJc m:val="centerGroup" /> <m:wrapIndent m:val="1440" /> <m:intLim m:val="subSup" /> <m:naryLim m:val="undOvr" /> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"   DefSemiHidden="true" DefQFormat="false" DefPriority="99"   LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Normal" /> <w:LsdException Locked="false" Priority="9" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="heading 1" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /> <w:LsdException Locked="false" Priority="39" Name="toc 1" /> <w:LsdException Locked="false" Priority="39" Name="toc 2" /> <w:LsdException Locked="false" Priority="39" Name="toc 3" /> <w:LsdException Locked="false" Priority="39" Name="toc 4" /> <w:LsdException Locked="false" Priority="39" Name="toc 5" /> <w:LsdException Locked="false" Priority="39" Name="toc 6" /> <w:LsdException Locked="false" Priority="39" Name="toc 7" /> <w:LsdException Locked="false" Priority="39" Name="toc 8" /> <w:LsdException Locked="false" Priority="39" Name="toc 9" /> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /> <w:LsdException Locked="false" Priority="10" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Title" /> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /> <w:LsdException Locked="false" Priority="11" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /> <w:LsdException Locked="false" Priority="22" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Strong" /> <w:LsdException Locked="false" Priority="20" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /> <w:LsdException Locked="false" Priority="59" SemiHidden="false"    UnhideWhenUsed="false" Name="Table Grid" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /> <w:LsdException Locked="false" Priority="1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 1" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 1" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 1" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /> <w:LsdException Locked="false" Priority="34" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /> <w:LsdException Locked="false" Priority="29" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Quote" /> <w:LsdException Locked="false" Priority="30" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 1" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 1" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 2" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 2" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 2" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 2" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 2" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 3" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 3" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 3" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 3" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 3" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 4" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 4" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 4" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 4" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 4" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 5" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 5" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 5" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 5" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 5" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 6" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 6" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 6" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 6" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 6" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /> <w:LsdException Locked="false" Priority="19" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /> <w:LsdException Locked="false" Priority="21" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /> <w:LsdException Locked="false" Priority="31" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /> <w:LsdException Locked="false" Priority="32" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /> <w:LsdException Locked="false" Priority="33" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Book Title" /> <w:LsdException Locked="false" Priority="37" Name="Bibliography" /> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /> </w:LatentStyles> </xml><![endif]--><!--[if gte mso 10]><br />
<mce:style><!   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Tableau Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin:0cm; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:10.0pt; 	font-family:"Times New Roman","serif";} --></p>
<p><!--[endif] --></p>
<ul>
<li><span style="color: #0000ff;"><span style="color: #000000;">Les informations NLS_DATABASE_PARAMETERS : pour construire l&#8217;instance Oracle avec les bonnes infomations de NLS_CHARACTERSET et de NLS_NCHAR_CHARACTERSET<strong> </strong></span><em>(</em><em>SELECT * FROM NLS_DATABASE_PARAMETERS</em>)<br />
</span></li>
<li><span style="color: #000000;">Les users utilisés<br />
</span></li>
<li><span style="color: #000000;">Les rôles utilisés et les droits de chacun</span></li>
<li><span style="color: #000000;">La liste des tablespaces que pourrez avoir à recréer à la main<br />
</span></li>
<li><span style="color: #000000;">Le type d’export qui a été fait ( car il en existe 2 qui sont gérés de manières différentes : exp, expdp<br />
</span></li>
<li><span style="color: #000000;">L’espace disque utilisé car un backup peut faire une taille X mais quand il est déployé sa taille peut doubler voir trippler avec les tablespaces par exemple.</span></li>
</ul>
<p>Après avoir créé votre instance Oracle et après avoir prévu la place nécessaire, ouvrez un fenêtre &#8220;cmd&#8221; :</p>
<p>Pour accéder en ligne de commande à votre instance vous pouvez taper :</p>
<p><span style="color: #0000ff;"><em>C:\&gt;sqlplus &#8220;/ as sysdba&#8221;</em></span></p>
<p>A partir de la vous allez pouvoir créer un user :</p>
<p><span style="color: #0000ff;"><em>CREATE USER monUser IDENTIFIED BY motDePasse; </em></span></p>
<p>Ensuit créer un rôle pour votre user :</p>
<p><span style="color: #0000ff;"><em>CREATE role monRole; </em></span></p>
<p><span style="color: #0000ff;"><em>GRANT CREATE cluster, create sequence , create synonym, create table, create view, create procedure, create trigger, CREATE public synonym, drop public synonym, create role, create any synonym, drop any synonym, drop any materialized view to monRole;</em></span></p>
<p>Et on affecte monUser à monRole :<br />
<span style="color: #0000ff;"><em>GRANT unlimited tablespace, monRole to monUser;</em></span></p>
<p>Pour créer les tablespaces :<em><strong></strong></em></p>
<p><span style="color: #0000ff;"><em>CREATE TABLESPACE USER_DATA DATAFILE &#8216;F:\dump\user_data.dbf&#8217; SIZE 210m AUTOEXTEND ON NEXT 210;</em></span></p>
<p>Pour l&#8217;import 2 possiblités :</p>
<p>1) <span style="color: #0000ff;"><em>imp userid=monUser  file=C:\Users\Administrateur\Desktop\monDump.dmp FULL=Y log=C:\log.log;</em></span></p>
<p>2) <span style="color: #993300;"><em><span style="color: #0000ff;">CREATE DIRECTORY mondirectory AS &#8216;F:\dump&#8217;;</span><span style="color: #0000ff;"><br />
</span></em></span></p>
<p><span style="color: #0000ff;"><em>impdp monUser/motDePasse full=Y directory=mondirectory  dumpfile=monDump.dmp</em></span></p>
<p>Problème de droit? Vous pouvez exécuter cette requête dans SQL Oracle développer, pendre le résultat et l&#8217;exécuter :</p>
<p><span style="color: #0000ff;"><em>Select &#8216;GRANT SELECT ,INSERT,UPDATE,DELETE ON  &#8216; || TABLE_NAME || &#8216;  TO UCPA_DEV;&#8217; FROM USER_TABLES<br />
Select &#8216;CREATE PUBLIC SYNONYM  &#8216; || TABLE_NAME || &#8216;  FOR  &#8216; || TABLE_NAME || &#8216;;&#8217; FROM USER_TABLES</em></span></p>
<p><span style="color: #993300;"><span style="color: #000000;">Un problème que j&#8217;ai rencontré :</span></span></p>
<p><span style="color: #993300;"><span style="color: #000000;">lors du chargement d&#8217;un DUMP les vues matérialisées ont été chargées comme des tables.</span></span></p>
<p><span style="color: #993300;"><span style="color: #000000;">Je n&#8217;ai pas encore tout compris sur Oracle mais ces petites commandes m&#8217;ont permis de mener à bien le chargement de mon DUMP client.</span></span></p>
<p><span style="color: #993300;"><span style="color: #000000;">Si vous aussi vous avez  des astuces à nous transmettre, n&#8217;hésitez pas, commentez!<br />
</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://infodecisionnel.com/bdd/charger-un-dump-oracle/feed/</wfw:commentRss>
		<feedburner:origLink>http://infodecisionnel.com/bdd/charger-un-dump-oracle/</feedburner:origLink></item>
		<item>
		<title>Configurer une connexion Oracle pour Microsoft SQL Server</title>
		<link>http://feedproxy.google.com/~r/biexperience/~3/iyRgYsoZJs8/</link>
		<comments>http://infodecisionnel.com/microsoft/configurer-une-connexion-oracle-pour-microsoft-sql-server/#comments</comments>
		<pubDate>Sat, 07 Jan 2012 23:03:24 +0000</pubDate>
		<dc:creator>maryam khiali</dc:creator>
		
		<category><![CDATA[Microsoft]]></category>

		<category><![CDATA[connexion]]></category>

		<category><![CDATA[Microsoft SQL Server]]></category>

		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://infodecisionnel.com/?p=1560</guid>
		<description><![CDATA[Je ne sais pas si vous avez déjà essayé de connecter sql server à une base de données Oracle mais ce n&#8217;est pas si simple que ça&#8230;
contexte :

 Il y a une machine1 avec sql server d&#8217;installé sur du windows 2008 64 bits
Il y a une machine2 avec la base de données oracle d&#8217;installé sur [...]]]></description>
			<content:encoded><![CDATA[<p>Je ne sais pas si vous avez déjà essayé de connecter sql server à une base de données Oracle mais ce n&#8217;est pas si simple que ça&#8230;</p>
<p>contexte :</p>
<ul>
<li> Il y a une machine1 avec sql server d&#8217;installé sur du windows 2008 64 bits</li>
<li>Il y a une machine2 avec la base de données oracle d&#8217;installé sur du windows 2008 64 bits</li>
</ul>
<p>première étape télécharger les drivers oracle : les clients oracle.</p>
<p><strong>Astuce 1 : </strong>le site d&#8217;Oracle est horrible dès que l&#8217;on veut trouver quelque chose c&#8217;est comme si on cherchait une aiguille dans une botte de foin. Donc voici les liens de télechargement du <a href="http://www.oracle.com/technetworik/database/enterprise-edition/downloads/112010-win32soft-098987.html">client 32bits </a>et du <a href="http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win64soft-094461.html">clients 64 bits</a></p>
<p><strong>Astuce 2 :</strong> il faudra installer les deux et respecter bien l&#8217;ordre d&#8217;installation : client 32 bits puis client 64 bits.</p>
<p><strong>Astuce 3 :</strong>malgré le fait que nous soyons sur du 64 bits SSIS pour se connecter ira regarder le client 32 bits. Donc il faudra configurer les listener.ora et tnsname.ora pour les deux clients 64 bits et 32 bits.</p>
<p>Après avoir configurer vos fichiers dans répertoire Oracle&gt;product&gt;NETWORK&gt;ADMIN&gt;clien_X</p>
<p>vous pourrez vérifier votre accès à la base de données en ouvrant une fenêtre cmd et en tapant tnsping servicename.</p>
<p>exemple : tnsping orcl</p>
<p>si cela fonctionne vous pourrez dans SSIS utiliser les providers suivants sans problème:</p>
<ul>
<li>Microsoft DB provider for oracle</li>
<li>Oracle provider for OLEDB</li>
</ul>
<p>En espérant que ce post évite à quelqu&#8217;un de perdre trop de temps sur ce genre de problématique, j&#8217;attends votre opinion sur la chose&#8230;N&#8217;hésitez pas commentez!</p>
]]></content:encoded>
			<wfw:commentRss>http://infodecisionnel.com/microsoft/configurer-une-connexion-oracle-pour-microsoft-sql-server/feed/</wfw:commentRss>
		<feedburner:origLink>http://infodecisionnel.com/microsoft/configurer-une-connexion-oracle-pour-microsoft-sql-server/</feedburner:origLink></item>
		<item>
		<title>Une mission acomplie : cio-online.com</title>
		<link>http://feedproxy.google.com/~r/biexperience/~3/lwahn3mIRio/</link>
		<comments>http://infodecisionnel.com/carriere/une-mission-acomplie-cio-onlinecom/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 12:30:47 +0000</pubDate>
		<dc:creator>maryam khiali</dc:creator>
		
		<category><![CDATA[Carrière]]></category>

		<guid isPermaLink="false">http://infodecisionnel.com/?p=1551</guid>
		<description><![CDATA[Mardi 15 Novembre, Actuate donnait un show pour montrer à ses utilisateurs l&#8217;intérêt de leur solution. Ils m&#8217;avaient proposé de faire parti des témoignages clients. J&#8217;ai donc pu présenter l&#8217;aboutissement de mon projet. Nous avons même reçu un award!
A la suite de ce témoignage un journaliste nous a  interviewé moi et mon équipe et voici [...]]]></description>
			<content:encoded><![CDATA[<p>Mardi 15 Novembre, Actuate donnait un show pour montrer à ses utilisateurs l&#8217;intérêt de leur solution. Ils m&#8217;avaient proposé de faire parti des témoignages clients. J&#8217;ai donc pu présenter l&#8217;aboutissement de mon projet. Nous avons même reçu un award!</p>
<p>A la suite de ce témoignage un journaliste nous a  interviewé moi et mon équipe et voici les 2 articles publiés :</p>
<ul>
<li>sur  : <a href="http://www.cio-online.com/actualites/lire--3957.html">cio-online.com</a></li>
<li>et sur<a href="http://www.lemondeinformatique.fr/actualites/lire-l-aefe-optimise-le-reporting-de-ses-donnees-avec-talend-et-actuate-46660.html"> lemondeinformatique.fr</a></li>
</ul>
<p>C&#8217;est vraiment une bonne conclusion à mon projet avant de partir vers de nouveaux horizons.</p>
]]></content:encoded>
			<wfw:commentRss>http://infodecisionnel.com/carriere/une-mission-acomplie-cio-onlinecom/feed/</wfw:commentRss>
		<feedburner:origLink>http://infodecisionnel.com/carriere/une-mission-acomplie-cio-onlinecom/</feedburner:origLink></item>
		<item>
		<title>Besoin d’un bilan de compétences?</title>
		<link>http://feedproxy.google.com/~r/biexperience/~3/x9fIDWRbLww/</link>
		<comments>http://infodecisionnel.com/carriere/besoin-dun-bilan-de-competences/#comments</comments>
		<pubDate>Fri, 16 Sep 2011 11:42:37 +0000</pubDate>
		<dc:creator>maryam khiali</dc:creator>
		
		<category><![CDATA[Carrière]]></category>

		<guid isPermaLink="false">http://infodecisionnel.com/?p=1532</guid>
		<description><![CDATA[Vous cherchez un nouveau poste?  Vous avez besoin de faire un bilan de compétences pour mieux connaitre votre profil, vos attentes par rapport à la prochaine entreprise que vous choisirez ou encore pour le prochain poste qu&#8217;on vous proposera?
Ce site : mareussite.com, vous permettra de faire un bilan sur vous même. Quatre tests sont proposés [...]]]></description>
			<content:encoded><![CDATA[<p>Vous cherchez un nouveau poste?  Vous avez besoin de faire un bilan de compétences pour mieux connaitre votre profil, vos attentes par rapport à la prochaine entreprise que vous choisirez ou encore pour le prochain poste qu&#8217;on vous proposera?</p>
<p>Ce site :<a href="http://www.mareussite.com/"> mareussite.com</a>, vous permettra de faire un bilan sur vous même. Quatre tests sont proposés :</p>
<ul>
<li><strong>Test personnalité</strong> permet de vous expliquer  &#8220;le pourquoi et le comment de chacune de vos tendances&#8221;</li>
<li><strong>Réussir au travail</strong> mettra en exergue &#8221; la manière dont votre personnalité s&#8217;exprime sur le plan professionnel :  votre façon de travailler, de prendre des décisions, de gérer votre  temps&#8221;</li>
<li><strong>Trouver sa voie </strong>vous permettra de comprendre &#8221; ce qui vous motive au travail, choisir sa carrière en fonction de votre personnalité, de construire un plan d&#8217;action&#8221;</li>
<li><strong>Savoir rebondir</strong> vous permettra d&#8217;être plus &#8220;performant dans vos recherches d&#8217;emploi, de valoriser votre candidature, comprendre vos réactions face à cette période de transition&#8221;</li>
</ul>
<p>Si vous besoin de vous rassurer par rapport à votre parcours, votre carrière n&#8217;hésitez pas!</p>
<p>Grâce au code partenaire présent sur <a href="http://www.studya.com/test/cv_formations_personnalite.htm">cette page</a> . Vous pourrez avoir le test de personnalité gratuit. Le reste est payant.</p>
<p>J&#8217;attends vos commentaires sur cet outil!</p>
]]></content:encoded>
			<wfw:commentRss>http://infodecisionnel.com/carriere/besoin-dun-bilan-de-competences/feed/</wfw:commentRss>
		<feedburner:origLink>http://infodecisionnel.com/carriere/besoin-dun-bilan-de-competences/</feedburner:origLink></item>
		<item>
		<title>Copier une base de données vers une autre avec Talend</title>
		<link>http://feedproxy.google.com/~r/biexperience/~3/DHldvWUy3cc/</link>
		<comments>http://infodecisionnel.com/talend/copier-une-base-de-donnees-vers-une-autre-avec-talend/#comments</comments>
		<pubDate>Thu, 25 Aug 2011 13:55:45 +0000</pubDate>
		<dc:creator>maryam khiali</dc:creator>
		
		<category><![CDATA[Talend]]></category>

		<category><![CDATA[Base de données]]></category>

		<category><![CDATA[dynamic schema]]></category>

		<category><![CDATA[TIS]]></category>

		<guid isPermaLink="false">http://infodecisionnel.com/?p=1433</guid>
		<description><![CDATA[Depuis la version 4.1.2, Talend a sortie une option assez remarquable :le Dynamic Schema
Je vous propose dans ce post de détailler la démarche que nous avons adoptée pour l&#8216;alimentation de notre infocentre : copie des différentes bases de données de la société à partir desquelles le datawarehouse est alimenté.
Un simple job sera réalisé pour amener [...]]]></description>
			<content:encoded><![CDATA[<p>Depuis la version 4.1.2, Talend a sortie une option assez remarquable :<strong>le Dynamic Schema</strong></p>
<p>Je vous propose dans ce post de détailler la démarche que nous avons adoptée pour l<strong>&#8216;alimentation de notre infocentre</strong> : copie des différentes bases de données de la société à partir desquelles le datawarehouse est alimenté.</p>
<p>Un simple job sera réalisé pour amener les données d&#8217;une base de données source vers une base de données cible :<br />
<img class="aligncenter size-full wp-image-1436" title="job_fils" src="http://infodecisionnel.com/wp-content/uploads/2011/08/job_fils.jpg" alt="job_fils" width="556" height="70" /></p>
<p>Voici l&#8217;option en question que vous pourrez utiliser dans votre input:</p>
<p><img class="aligncenter size-full wp-image-1466" title="option_dynamic_schema2" src="http://infodecisionnel.com/wp-content/uploads/2011/08/option_dynamic_schema2.jpg" alt="option_dynamic_schema2" width="491" height="208" /></p>
<p>Et si vous avez des règles de gestion à ajouter n&#8217;hésitez pas avec le tJavaFlex :<br />
<img class="aligncenter size-full wp-image-1443" title="action_sur_lignes1" src="http://infodecisionnel.com/wp-content/uploads/2011/08/action_sur_lignes1.jpg" alt="action_sur_lignes1" width="870" height="184" /></p>
<h5 style="text-align: left;"><em>/**l&#8217;exemple de traitement en plus lisible&#8230;**/<br />
for(int i = 0; i &lt; row3.dyn_Col.metadatas.size(); i++) {</em><em> row3.dyn_Col.metadatas.get(i).setName(row3.dyn_Col.metadatas.get(i).getName().toLowerCase());<br />
}</em></h5>
<p>Ce job, décrit ci-dessus, est appelé par un job père qui lui donne le contexte contenant le nom de la table courante à migrer :</p>
<p><img class="aligncenter size-full wp-image-1446" title="job_pere" src="http://infodecisionnel.com/wp-content/uploads/2011/08/job_pere.jpg" alt="job_pere" width="505" height="49" /></p>
<p>Une variable de context est passée au sous job (monsousjobcopie) : my_current_table</p>
<p>L&#8217;input requête sur une table de paramétrage. En effet nous n&#8217;avons pas forcement besoin de toutes les tables de toutes les bases de données. Donc à travers une table de paramétrage nous choisisson celle que l&#8217;on veut migrer :</p>
<p><img class="aligncenter size-full wp-image-1449" title="input_job_pere" src="http://infodecisionnel.com/wp-content/uploads/2011/08/input_job_pere.jpg" alt="input_job_pere" width="574" height="88" /></p>
<p>Ce job père appelle aussi un autre sous job qui lui va permettre de migrer les indexes :<br />
<img class="aligncenter size-full wp-image-1454" title="index" src="http://infodecisionnel.com/wp-content/uploads/2011/08/index.jpg" alt="index" width="566" height="212" /></p>
<p>Donc pour chaque table on fera un appel à une routine (code qu&#8217;il y a dans le tJava):</p>
<h5><em>routines.IndexMigrer.migrate_index(((java.sql.Connection)globalMap.get(&#8221;conn_tMSSqlConnection_2&#8243;)), ((String)globalMap.get(&#8221;current_TABLE.nom_table&#8221;)), ((java.sql.Connection)globalMap.get(&#8221;conn_tPostgresqlConnection_4&#8243;)),context.Cible_Schema + (String)globalMap.get(&#8221;schema&#8221;) + &#8220;.&#8221; +<br />
((String)globalMap.get(&#8221;current_TABLE.nom_table&#8221;)));</em></h5>
<p>Et en bonus voici la routine que nous avons créés qui selon la  base de données (Oracle, Posgres, SQL Server 2000 ou SQL Server 2005) va requêter dans la bonne table système :</p>
<p>/***************Routines migration indexes ************************/</p>
<h5 style="text-align: left;"><em>public class IndexMigrer {<br />
public static void migrate_index(Connection org_connect, String org_nomtable,<br />
Connection dest_connect, String dest_nomtable)  throws java.sql.SQLException<br />
{<br />
if(org_connect.getMetaData().getDatabaseProductName().equalsIgnoreCase(&#8221;<strong>Microsoft SQL Server</strong>&#8220;) )<br />
{<br />
Statement stat = org_connect.createStatement();<br />
ResultSet rs;<br />
if(org_connect.getMetaData().getDatabaseMajorVersion()==9)<br />
{<br />
rs=stat.executeQuery(&#8221;SELECT IDX.name as index_name, COL.name as column_name FROM sys.index_columns IDXC&#8221;<br />
+&#8221; INNER JOIN sys.objects OBJ&#8221;<br />
+&#8221; ON IDXC.object_id = OBJ.object_id&#8221;<br />
+&#8221; INNER JOIN sys.schemas SCH&#8221;<br />
+&#8221; ON SCH.schema_id = OBJ.schema_id&#8221;<br />
+&#8221; INNER JOIN sys.indexes IDX&#8221;<br />
+&#8221; ON (IDXC.object_id = IDX.object_id AND IDXC.index_id = IDX.index_id)&#8221;<br />
+&#8221; INNER JOIN sys.columns COL&#8221;<br />
+&#8221; ON (IDXC.column_id = COL.column_id AND OBJ.object_id = COL.object_id)&#8221;<br />
+&#8221; where OBJ.name=\&#8217;&#8221;+org_nomtable+&#8221;\&#8217;&#8221;<br />
+&#8221; ORDER BY OBJ.name&#8221; );<br />
}<br />
else<br />
{<br />
rs=stat.executeQuery(&#8221;select i.name as index_name,c.name as column_name&#8221;<br />
+&#8221; from sysindexkeys as indk&#8221;<br />
+&#8221; inner join sysindexes as i on&#8221;<br />
+&#8221; (indk.indid=i.indid and indk.id=i.id )&#8221;<br />
+&#8221; inner join syscolumns as c on&#8221;<br />
+&#8221; (indk.colid=c.colid and indk.id=c.id )&#8221;<br />
+&#8221; inner join sysobjects as o on&#8221;<br />
+&#8221; (indk.id=o.id)&#8221;<br />
+&#8221; and o.name=\&#8217;&#8221;+org_nomtable+&#8221;\&#8217; &#8221;<br />
+&#8221; ORDER BY o.name&#8221; );<br />
}<br />
Map m =new HashMap();<br />
Map m_key=new HashMap();<br />
while(rs.next())<br />
{<br />
if(!m.containsKey(rs.getString(1)))<br />
{<br />
List l = new ArrayList();<br />
l.add(rs.getString(2));<br />
m.put(rs.getString(1),l);<br />
m_key.put(rs.getString(1), rs.getString(1));<br />
}<br />
else if(m.containsKey(rs.getString(1)))<br />
{<br />
List l=(List)m.get(rs.getString(1));<br />
l.add(rs.getString(2));<br />
m.put(rs.getString(1),l);<br />
}<br />
}<br />
StringBuffer sb=new StringBuffer();<br />
for (Iterator i = m.keySet().iterator() ; i.hasNext();){<br />
String key = (String)i.next();<br />
sb.append(&#8221;CREATE INDEX &#8220;);<br />
sb.append(&#8221;IDX_&#8221;+key);<br />
sb.append(&#8221; ON &#8220;+dest_nomtable+&#8221; (&#8221;);<br />
List l=(List)m.get(key);<br />
for(int j=0;j&lt;l.size();j++)<br />
{<br />
sb.append(l.get(j));<br />
if(j!=l.size()-1)<br />
sb.append(&#8221;,&#8221;);<br />
}<br />
sb.append(&#8221;);\n&#8221;);<br />
}<br />
try{<br />
Statement bla=dest_connect.createStatement();<br />
System.out.println(&#8221;"+sb.toString());<br />
bla.execute(sb.toString());<br />
}<br />
catch (java.sql.SQLException e)<br />
{<br />
//System.out.println(dest_nomtable);<br />
System.out.println(e.getMessage());<br />
}<br />
dest_connect.commit();<br />
//System.out.println(dest_nomtable);<br />
}<br />
if(org_connect.getMetaData().getDatabaseProductName().equalsIgnoreCase(&#8221;<strong>PostgreSQL</strong>&#8220;))<br />
{<br />
Statement stat = org_connect.createStatement();<br />
ResultSet rs=stat.executeQuery(&#8221;SELECT indkey as colonne_index,pci.relname as nom_index,pct.relname as nom_table from pg_index as pi&#8221;<br />
+&#8221; , pg_class as pci, pg_class as pct &#8221;<br />
+&#8221; where pci.oid=pi.indexrelid&#8221;<br />
+&#8221; and pct.oid=pi.indrelid and pct.relname  not like &#8216;pg_%&#8217; and pct.relname=&#8217;&#8221;+org_nomtable+&#8221;&#8216; &#8221; );<br />
while( rs.next())<br />
{<br />
String s=rs.getString(1);<br />
java.util.StringTokenizer tokenizer = new java.util.StringTokenizer(s, &#8221; &#8220;);<br />
List &lt;Integer&gt; num_columns=new ArrayList();<br />
while ( tokenizer.hasMoreTokens() ) {<br />
num_columns.add(Integer.parseInt(tokenizer.nextToken()));<br />
}<br />
Statement sel=org_connect.createStatement();<br />
ResultSet rsset=sel.executeQuery(&#8221;SELECT * from &#8220;+org_nomtable+&#8221; LIMIT 1&#8243;);<br />
StringBuffer sb=new StringBuffer();<br />
sb.append(&#8221;CREATE INDEX &#8220;+rs.getString(2)+&#8221; ON &#8220;+dest_nomtable+&#8221; (&#8221; );<br />
Iterator i=num_columns.iterator();<br />
while(i.hasNext())<br />
{<br />
sb.append(rsset.getMetaData().getColumnLabel((Integer)i.next()));<br />
if(i.hasNext())<br />
sb.append(&#8221;,&#8221;);<br />
}<br />
sb.append(&#8221;) ;\n&#8221;);<br />
Statement bla=dest_connect.createStatement();<br />
bla.execute(sb.toString());<br />
dest_connect.commit();<br />
bla.close();</em></h5>
<h5 style="text-align: left;"><em>}<br />
}<br />
if(org_connect.getMetaData().getDatabaseProductName().equalsIgnoreCase(&#8221;<strong>Oracle</strong>&#8220;))<br />
{<br />
Statement stat = org_connect.createStatement();<br />
ResultSet rs=stat.executeQuery(&#8221;SELECT col.index_name,col.column_name FROM all_indexes cons INNER JOIN all_ind_columns col ON cons.owner = col.index_owner AND cons.index_name = col.index_name WHERE OWNER = &#8216;AEFE&#8217; AND cons.table_name=\&#8217;&#8221;+org_nomtable+&#8221;\&#8217;&#8221; );<br />
Map m =new HashMap();<br />
Map m_key=new HashMap();<br />
while(rs.next())<br />
{<br />
if(!m.containsKey(rs.getString(1)))<br />
{<br />
List l = new ArrayList();<br />
l.add(rs.getString(2));<br />
m.put(rs.getString(1),l);<br />
m_key.put(rs.getString(1), rs.getString(1));<br />
}<br />
else if(m.containsKey(rs.getString(1)))<br />
{<br />
List l=(List)m.get(rs.getString(1));<br />
l.add(rs.getString(2));<br />
m.put(rs.getString(1),l);<br />
}<br />
}<br />
StringBuffer sb=new StringBuffer();<br />
for (Iterator i = m.keySet().iterator() ; i.hasNext();){<br />
String key = (String)i.next();<br />
sb.append(&#8221;CREATE INDEX &#8220;);<br />
sb.append(&#8221;IDX_&#8221;+key);<br />
sb.append(&#8221; ON &#8220;+dest_nomtable+&#8221; (&#8221;);<br />
List l=(List)m.get(key);<br />
for(int j=0;j&lt;l.size();j++)<br />
{<br />
sb.append(l.get(j));<br />
if(j!=l.size()-1)<br />
sb.append(&#8221;,&#8221;);<br />
}<br />
sb.append(&#8221;);\n&#8221;);<br />
}<br />
Statement bla=dest_connect.createStatement();<br />
System.out.println(&#8221;"+sb.toString());<br />
bla.execute(sb.toString());<br />
dest_connect.commit();</em></h5>
<h5 style="text-align: left;"><em> }}}</em></h5>
<p>Très important, si un problème de typage persiste n&#8217;hésitez pas à modifier les fichiers de mapping dans :</p>
<p><em><img class="aligncenter size-full wp-image-1489" title="fichier_mapping" src="http://infodecisionnel.com/wp-content/uploads/2011/08/fichier_mapping.jpg" alt="fichier_mapping" width="716" height="632" /></em>Ces fichiers sont utiles et simples à utiliser puisqu&#8217;ils permettent de connaitre les transformations de typage. En gros voici comment procède Talend :</p>
<p>typage BDD source =&gt; typage JAVA =&gt; typage BDD cible</p>
<p>Exemple d&#8217;utilisation :</p>
<p>ma base de données source est SQL server et ma base de données cible  est postgres  :</p>
<p>La démarche sera donc d&#8217;aller dans  MSSQL_mapping.xml  et de regarder la rubrique : <strong>&lt;dbToTalendTypes&gt;</strong> pour voir en quel type Java les typages de ma base de données MSSQL seront transformés. Ensuite il faudra regarder dans postgres_mapping.xml pour regarder <em>les typages par défault</em> que propose Talend dans la rubrique  <strong>&lt;talendToDbTypes&gt; </strong>pour la retransformation des types JAVA en typages postgres.<strong><br />
</strong></p>
<p>Vous pourrez ainsi personnaliser ces transformations.</p>
<p>Si ces fichiers sont modifiés il faudra bien sur les répercutés sur tous les clients  TIS  et sur le serveur  dans les workspaces dans:</p>
<ul>
<li>.JAVA &gt; src &gt; xmlMappings</li>
<li>et dans .JAVA &gt; classes &gt; xmlMappings</li>
</ul>
<p>J&#8217;espère que ce post vous aura permis de voir les possibilités qu&#8217;offrent la solution Talend pour ce genre de besoin.</p>
<p>N&#8217;hésitez pas à poster pour donner votre opinion!</p>
]]></content:encoded>
			<wfw:commentRss>http://infodecisionnel.com/talend/copier-une-base-de-donnees-vers-une-autre-avec-talend/feed/</wfw:commentRss>
		<feedburner:origLink>http://infodecisionnel.com/talend/copier-une-base-de-donnees-vers-une-autre-avec-talend/</feedburner:origLink></item>
	</channel>
</rss>

