<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>François Jehl sur Microsoft BI</title>
	<atom:link href="http://fjehl.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://fjehl.wordpress.com</link>
	<description>Filter(FactBlogPosts, Related(DimProduct[ProductLabel])  = “Microsoft SQL Server”)</description>
	<lastBuildDate>Tue, 22 May 2012 09:50:25 +0000</lastBuildDate>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='fjehl.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/a08338e5a604cfaeb0284c4e874fb3fa?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>François Jehl sur Microsoft BI</title>
		<link>http://fjehl.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://fjehl.wordpress.com/osd.xml" title="François Jehl sur Microsoft BI" />
	<atom:link rel='hub' href='http://fjehl.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Le MDX c&#8217;est facile. Enfin presque.</title>
		<link>http://fjehl.wordpress.com/2012/04/16/le-mdx-cest-facile-enfin-presque/</link>
		<comments>http://fjehl.wordpress.com/2012/04/16/le-mdx-cest-facile-enfin-presque/#comments</comments>
		<pubDate>Mon, 16 Apr 2012 16:16:29 +0000</pubDate>
		<dc:creator>François Jehl</dc:creator>
				<category><![CDATA[MDX]]></category>

		<guid isPermaLink="false">http://fjehl.wordpress.com/?p=754</guid>
		<description><![CDATA[Le MDX c’est facile. Bon il faut avouer que même si j’adore ça il faut le dire vite. Dans ma mission actuelle, en dissertant sur les différents modes de gestion du multiselect selon les clients – SESSION SET de l’OWC, Set dans le slicer, Aggregate de Proclarty, SUBCUBE d’Excel 2007-2010… &#8211; je me suis rendu &#8230; <a href="http://fjehl.wordpress.com/2012/04/16/le-mdx-cest-facile-enfin-presque/">Lire la suite <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fjehl.wordpress.com&#038;blog=32228968&#038;post=754&#038;subd=fjehl&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;"><strong>Le MDX c’est facile</strong>. Bon il faut avouer que même si j’adore ça il faut le <strong>dire vite</strong>. Dans ma mission actuelle, en dissertant sur les différents modes de gestion du multiselect selon les clients – <strong>SESSION SET</strong> de l’OWC, Set dans le slicer, <strong>Aggregate</strong> de Proclarty, <strong>SUBCUBE</strong> d’Excel 2007-2010… &#8211; je me suis rendu compte <strong>qu’expliquer</strong> comment écrire un membre <strong>universel</strong> peut être complètement <strong>anti intuitif</strong>, même pour quelque-chose aussi simple qu’un… <strong>Count</strong>.</p>
<p style="text-align:justify;">Voici ma requête. Elle affiche le <strong>nombre de produits distincts vendus</strong> par Pays et Couleur de produits, en filtrant sur les produits de type Vélo et les clients Mâles (dans le <strong>slicer</strong>) et les Produits de la gamme « Montagne » pour les années de vente 2005 et 2006 dans un <strong>subcube</strong>.</p>
<p><pre class="brush: sql;">
SELECT
{
     [Measures].[MonCount]
}
 ON 0,
{
    [Customer].[Customer Geography].[Country]
    *
    [Product].[Color].Members

} ON 1
FROM
(
    SELECT
    {
        [Date].[Calendar Year].&amp;[2005],
        [Date].[Calendar Year].&amp;[2006]
    }
    *[Product].[Product Model Lines].[Product Line].&amp;[M]
    ON 0
    FROM [Adventure Works]
)
WHERE
(
    [Product].[Category].&amp;[1]
    ,[Customer].[Gender].&amp;[M]
)</pre></p>
<p><strong>Premier essai :</strong> un compte de tous les produits.</p>
<p><pre class="brush: sql;">
Count
(
    [Product].[Product].[Product]
)</pre></p>
<p style="text-align:justify;"><a href="http://fjehl.files.wordpress.com/2012/04/1.png"><img class="aligncenter size-medium wp-image-756" title="1" src="http://fjehl.files.wordpress.com/2012/04/1.png?w=185&h=300" alt="" width="185" height="300" /></a>Ca ne marche pas <strong>terrible:</strong> le compte est dé-corrélé de tout <strong>contexte</strong> car les membres calculés n<em>&#8216;auto-existent</em> pas les sets. Cela affiche la <strong>même valeur partout</strong>, à savoir le nombre de produits de la dimension Produit. Amélioration : on ajoute donc un <strong>Existing</strong>. <strong>Existing</strong>, selon MSDN, force <em>&#8220;la prise en compte des coordonnées courantes&#8221;</em> de requête pour le jeu de produits. On constate que cela fonctionne pour les slicing par <strong>les hiérarchies de la même dimension</strong>, ainsi que le <strong>slicer</strong> ou clause <strong>WHERE</strong>).</p>
<p><pre class="brush: sql;">
Count
(
    Existing [Product].[Product].[Product]
)
</pre></p>
<p style="text-align:justify;"><a href="http://fjehl.files.wordpress.com/2012/04/2.png"><img class="aligncenter size-medium wp-image-757" title="2" src="http://fjehl.files.wordpress.com/2012/04/2.png?w=249&h=300" alt="" width="249" height="300" /></a>C’est mieux, mais le filtrage par <strong>Produit.Modèle du sous-cube</strong> n’est <strong>pas</strong> pris en compte. Nous verrons pourquoi dans quelques lignes.<br />
Une des solutions à ce problème de non prise en compte du sous-SELECT est de le faire en deux passes, en <em>existant</em> d’abord le jeu de produit dans un Dynamic Set – les jeux sont <em>auto-existés</em> en MDX dans le contexte de la requête et donc du subselect &#8211; <strong>le sous cube est appliqué sur le jeu</strong>. C’est <strong>Hilmar Buchta</strong> qui a <a href="http://ms-olap.blogspot.co.uk/2010/02/solution-von-ssas-2008-multi-selects-in.html">le premier abordé</a> cet usage intéressant des jeux nommés dynamiques, introduits en SQL 2008.</p>
<p><pre class="brush: sql;">
SET [QueryContextProducts]
AS
[Product].[Product].[Product]

MEMBER [Measures].[MonDistinctCount]
AS
Count
(
    Existing [QueryContextProducts]
)
</pre></p>
<p><a href="http://fjehl.files.wordpress.com/2012/04/3.png"><img class="aligncenter size-medium wp-image-758" title="3" src="http://fjehl.files.wordpress.com/2012/04/3.png?w=300&h=272" alt="" width="300" height="272" /></a></p>
<p style="text-align:justify;">Cependant là encore le <strong>slicing par pays n’est toujours pas visible</strong>: il faut donc cette fois utiliser l&#8217;opérateur <strong>Exists</strong>, qui fait une requête au niveau d&#8217;un <strong>groupe de mesure</strong>, pour évaluer l’indicateur sur le <em>MeasureGroup</em> des ventes qui relie le produit aux autres dimensions de la requête.</p>
<p><pre class="brush: sql;">
Count
(
    Exists
    (
        [Product].[Product].[Product]
        ,,&quot;Internet Sales&quot;
    )
) </pre></p>
<p style="text-align:justify;">L’<strong>Exists</strong> n’applique cependant pas les <strong>coordonnées courantes</strong> sur l’axe Produit &#8211; ce que fait EXISTING comme nous l&#8217;avons vu &#8211; ce qui fait que l’indicateur <strong>ne se ventile pas par Couleur</strong>, et <strong>n’applique pas le filtre sur la gamme </strong>du slicer: les 55 produits vendus en Australie correspondent bien à 55 <strong>valeurs distinctes de ProductID</strong> dans la table de faits, mais le filtrage <em>a posteriori</em> par couleur en lignes, par gamme et par catégorie en filtres <strong>n&#8217;est pas pris en compte</strong>.<br />
C&#8217;est logique MSDNement parlant: <strong>Exists</strong> marche comme ça. A noter qu&#8217;Exists sur un groupe est équivalent à un <strong>NonEmpty</strong> sur une des mesures du même groupe (bon sauf si cette mesure à un NullProcessing à Preserve mais ne chipotons pas).</p>
<p><a href="http://fjehl.files.wordpress.com/2012/04/41.png"><img class="aligncenter size-medium wp-image-762" title="4" src="http://fjehl.files.wordpress.com/2012/04/41.png?w=300&h=234" alt="" width="300" height="234" /></a></p>
<p style="text-align:justify;"><strong>En rajoutant l&#8217;opérateur Existing</strong> nous allons maintenant forcer l’application de ces fameuses &#8220;coordonnées courantes&#8221; du Produit sur le Set sorti par Exists, mais nous retombons dans le même problème que plus haut: celles fixées dans le sous-cube ne sont pas considérées. C&#8217;est là aussi <em>by-design: </em><a href="http://social.msdn.microsoft.com/Forums/en-US/sqlanalysisservices/thread/6175f10e-f6ae-4afd-b655-2d991e814529/">comme le dit Mosha dans un post</a> sur SDN: <em>&#8220;EXISTING operator takes into account <strong>current coordinate</strong>. The whole difference between WHERE clause and subselect, is that <strong>WHERE clause sets current coordinate</strong>, while subselects <strong>merely do top level Exists with Axis</strong> <strong>and apply visual totals</strong>&#8220;</em>. Bon OK, dommage que <strong>cela ne soit pas dans la doc&#8230; </strong>Les chiffres ci-dessous ne prennent donc pas en compte le filtrage sur [Product Model Lines], et sont là encore<strong> faux.<br />
</strong></p>
<p><pre class="brush: sql;">
Count
(
    Existing
    Exists
    (
        [Product].[Product].[Product]
        ,,&quot;Internet Sales&quot;
    )
) </pre></p>
<p><a href="http://fjehl.files.wordpress.com/2012/04/5.png"><img class="aligncenter size-medium wp-image-760" title="5" src="http://fjehl.files.wordpress.com/2012/04/5.png?w=300&h=190" alt="" width="300" height="190" /></a></p>
<p style="text-align:justify;">A noter que du coup ce membre est équivalent à celui ci-dessous, dans lequel l’application du <strong>Model Line</strong> est précisée mais inutile : le <strong>CurrentMember</strong> de cette hiérarchie est toujours positionné sur le <strong>(All)</strong> car si le <strong>Subcube</strong> applique bien <strong>Exists</strong> et <strong>VisualTotals</strong>, il n’altère pas les coordonnées courantes. (Mis en lumière par <strong>Mosha</strong> dans plusieurs de ses vieux articles, comme <a href="http://www.mosha.com/msolap/articles/mdxmultiselectcalcs.htm"><em>Multiselect Friendly MDX Calculations</em></a> ou <a href="http://www.mosha.com/msolap/articles/cubeinit.htm"><em>Default members, MDX Scripts, Security, KPIs and Perspectives</em></a>.)</p>
<p><pre class="brush: sql;">
Count
(
    Exists
    (
        [Product].[Product].[Product]
        ,([Product].[Color].CurrentMember,[Product].[Product Model Lines].CurrentMember)
        ,&quot;Internet Sales&quot;
    )
) </pre></p>
<p style="text-align:justify;"><strong>Il en résulte que la seule solution viable et universelle</strong>, qui prend en compte tous les filtrages est celle-ci : un <strong>Count sur un Existing Exists (ou NonEmpty) appliqué sur un Dynamic Set</strong>. Je vous l&#8217;accorde, on a vu plus <em>straightforward</em>. A noter aussi que l&#8217;ordre d&#8217;application importe peu fonctionnellement, on aurait pu faire <strong>un Exists d&#8217;Existing,</strong> mais <a href="http://cwebbbi.wordpress.com/2009/03/31/existing-and-nonempty/">Chris Webb a montré en 2009</a> que l&#8217;ordre utilisé ci-dessous est <strong>le plus rapide</strong>. La raison n&#8217;est pas connue mais une des hypothèses considérées, à défaut d&#8217;avoir le nez dans le moteur, est qu&#8217;Exists est <em>Set-Based</em> donc moins impacté par la cardinalité du Set qu&#8217;Existing qui semble plus heureux sur une volumétrie réduite.</p>
<p><pre class="brush: sql;">
Count
(
    Existing
    Exists
    (
        [QueryContextProducts]
        ,,&quot;Internet Sales&quot;
    )
) </pre></p>
<p><a href="http://fjehl.files.wordpress.com/2012/04/71.png"><img class="aligncenter size-medium wp-image-763" title="7" src="http://fjehl.files.wordpress.com/2012/04/71.png?w=300&h=157" alt="" width="300" height="157" /></a></p>
<p>Alors <strong>simple</strong> le MDX non? Des objections?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fjehl.wordpress.com/754/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fjehl.wordpress.com/754/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fjehl.wordpress.com/754/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fjehl.wordpress.com/754/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fjehl.wordpress.com/754/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fjehl.wordpress.com/754/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fjehl.wordpress.com/754/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fjehl.wordpress.com/754/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fjehl.wordpress.com/754/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fjehl.wordpress.com/754/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fjehl.wordpress.com/754/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fjehl.wordpress.com/754/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fjehl.wordpress.com/754/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fjehl.wordpress.com/754/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fjehl.wordpress.com&#038;blog=32228968&#038;post=754&#038;subd=fjehl&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fjehl.wordpress.com/2012/04/16/le-mdx-cest-facile-enfin-presque/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/274febdf3acd6dd954d0b525eccf1595?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fjehl</media:title>
		</media:content>

		<media:content url="http://fjehl.files.wordpress.com/2012/04/1.png?w=185" medium="image">
			<media:title type="html">1</media:title>
		</media:content>

		<media:content url="http://fjehl.files.wordpress.com/2012/04/2.png?w=249" medium="image">
			<media:title type="html">2</media:title>
		</media:content>

		<media:content url="http://fjehl.files.wordpress.com/2012/04/3.png?w=300" medium="image">
			<media:title type="html">3</media:title>
		</media:content>

		<media:content url="http://fjehl.files.wordpress.com/2012/04/41.png?w=300" medium="image">
			<media:title type="html">4</media:title>
		</media:content>

		<media:content url="http://fjehl.files.wordpress.com/2012/04/5.png?w=300" medium="image">
			<media:title type="html">5</media:title>
		</media:content>

		<media:content url="http://fjehl.files.wordpress.com/2012/04/71.png?w=300" medium="image">
			<media:title type="html">7</media:title>
		</media:content>
	</item>
		<item>
		<title>Premier édito de FrenchConnection.BI!</title>
		<link>http://fjehl.wordpress.com/2012/04/05/premier-edito-de-frenchconnection-bi/</link>
		<comments>http://fjehl.wordpress.com/2012/04/05/premier-edito-de-frenchconnection-bi/#comments</comments>
		<pubDate>Thu, 05 Apr 2012 08:06:07 +0000</pubDate>
		<dc:creator>François Jehl</dc:creator>
				<category><![CDATA[Annonces/Releases]]></category>
		<category><![CDATA[FrenchConnection.BI]]></category>
		<category><![CDATA[PowerPivot]]></category>

		<guid isPermaLink="false">http://fjehl.wordpress.com/?p=744</guid>
		<description><![CDATA[On s&#8217;y est mis à plusieurs &#8211; Flo, JP, Aurélien, Romu et votre serviteur &#8211; et le voici, le premier édito de FrenchConnection.BI, avec de vrais morceaux de retours d&#8217;afterwork dedans! &#160; Bonne lecture!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fjehl.wordpress.com&#038;blog=32228968&#038;post=744&#038;subd=fjehl&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>On s&#8217;y est mis à plusieurs &#8211; Flo, JP, Aurélien, Romu et votre serviteur &#8211; et le voici, <a href="http://frenchconnection.bi/2012/04/04/self-service-bi-idees-et-opinions/">le premier édito de <strong>FrenchConnection.BI</strong></a>, avec de vrais morceaux de retours d&#8217;afterwork dedans!</p>
<p><a href="http://fjehl.files.wordpress.com/2012/04/french-connection.jpg"><img class="aligncenter size-medium wp-image-745" title="french-connection" src="http://fjehl.files.wordpress.com/2012/04/french-connection.jpg?w=225&h=300" alt="" width="225" height="300" /></a></p>
<p>&nbsp;</p>
<p>Bonne lecture!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fjehl.wordpress.com/744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fjehl.wordpress.com/744/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fjehl.wordpress.com/744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fjehl.wordpress.com/744/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fjehl.wordpress.com/744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fjehl.wordpress.com/744/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fjehl.wordpress.com/744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fjehl.wordpress.com/744/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fjehl.wordpress.com/744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fjehl.wordpress.com/744/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fjehl.wordpress.com/744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fjehl.wordpress.com/744/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fjehl.wordpress.com/744/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fjehl.wordpress.com/744/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fjehl.wordpress.com&#038;blog=32228968&#038;post=744&#038;subd=fjehl&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fjehl.wordpress.com/2012/04/05/premier-edito-de-frenchconnection-bi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/274febdf3acd6dd954d0b525eccf1595?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fjehl</media:title>
		</media:content>

		<media:content url="http://fjehl.files.wordpress.com/2012/04/french-connection.jpg?w=225" medium="image">
			<media:title type="html">french-connection</media:title>
		</media:content>
	</item>
		<item>
		<title>FrenchConnection.BI, la communauté frenchy sur la BI MS, vous invite à son pot de naissance!</title>
		<link>http://fjehl.wordpress.com/2012/03/15/frenchconnection-bi-la-communaute-frenchy-sur-la-bi-ms-vous-invite-a-son-pot-de-naissance-9/</link>
		<comments>http://fjehl.wordpress.com/2012/03/15/frenchconnection-bi-la-communaute-frenchy-sur-la-bi-ms-vous-invite-a-son-pot-de-naissance-9/#comments</comments>
		<pubDate>Thu, 15 Mar 2012 20:31:49 +0000</pubDate>
		<dc:creator>François Jehl</dc:creator>
				<category><![CDATA[Annonces/Releases]]></category>
		<category><![CDATA[Conférences]]></category>

		<guid isPermaLink="false">http://fjehl.wordpress.com/?p=729</guid>
		<description><![CDATA[Dans la BI Microsoft française on est comme ça. On en avait assez de complexer sur les mangeurs de pizzas qui font du DAX et les MVP canadiens à tee-shirts de Hockey. Alors comme en France on fait de beau projets BI et que l&#8217;on a une réputation de chauvins autant l&#8217;assumer totalement. C&#8217;est ainsi &#8230; <a href="http://fjehl.wordpress.com/2012/03/15/frenchconnection-bi-la-communaute-frenchy-sur-la-bi-ms-vous-invite-a-son-pot-de-naissance-9/">Lire la suite <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fjehl.wordpress.com&#038;blog=32228968&#038;post=729&#038;subd=fjehl&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Dans la BI Microsoft française on est comme ça. On en avait assez de complexer sur <strong>les mangeurs de pizzas qui font du DAX</strong> et les MVP canadiens à tee-shirts de Hockey. Alors comme en France on fait de beau projets BI et que l&#8217;on a une réputation de chauvins autant l&#8217;assumer totalement. C&#8217;est ainsi qu&#8217;est née la <a href="http://frenchconnection.bi/">FrenchConnection.BI</a> qui regroupe des <a href="http://frenchconnection.bi/qui-sommes-nous/">gens très sympa</a> comme<strong> Florian Eiden</strong>,<strong> Romuald Coutaud</strong>, <strong>Aurélien Koppel,</strong> <strong>Jean Pierre Riehl et votre serviteur.</strong> Elle pèse 400 kg à vue de nez et les papas se portent très bien.</p>
<p style="text-align:justify;"><a href="http://fjehl.files.wordpress.com/2012/03/161998_264417236974036_1090220192_n.jpg"><img class="aligncenter size-full wp-image-738" title="161998_264417236974036_1090220192_n" src="http://fjehl.files.wordpress.com/2012/03/161998_264417236974036_1090220192_n.jpg?w=600" alt=""   /></a></p>
<p style="text-align:justify;">Son but dans la vie: mettre en avant les bonnes productions françaises de chez nous en terme de BI, projets, articles, séminaires&#8230; permettre aux consultants décisionnels d&#8217;échanger, de discuter bonnes pratiques en les fédérant, et accessoirement faire des trucs sur SQL Server et affiliés au GUSS où personne de parlera des quorums de clusters de Christophe Laporte, David Barbarin, Cricri Robert ou Seb Pertus^^.</p>
<p style="text-align:justify;"><strong>Comme on a rien trouvé de plus fédérateur qu&#8217;une bonne bière</strong> et un bon sujet polémique, vous êtes donc tous invités au pot de naissance de la FrenchConnection.BI, qui prendra la forme d&#8217;un&#8230;</p>
<p style="text-align:center;"><strong>1er Afterwork de la communauté BI SQL Server sur le thème<br />
</strong> <em><strong>&#8220;BI Self-service, mythe ou réalité&#8221;</strong></em></p>
<p style="text-align:center;">le jeudi 22 mars 2012 à partir de 19h30</p>
<p style="text-align:center;"><a href="http://maps.google.fr/maps/place?q=Charlie+Birdy+-+Place+Etienne+Pernet,+Paris&amp;hl=fr&amp;cid=9086277507124912260">au Charlie Birdy, Place Etienne Pernet<br />
(Paris 15, M8 Commerce ou M10 Emile Zola)</a></p>
<p style="text-align:left;">Parlez en autour de vous, et viendez! Banzaï!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fjehl.wordpress.com/729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fjehl.wordpress.com/729/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fjehl.wordpress.com/729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fjehl.wordpress.com/729/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fjehl.wordpress.com/729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fjehl.wordpress.com/729/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fjehl.wordpress.com/729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fjehl.wordpress.com/729/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fjehl.wordpress.com/729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fjehl.wordpress.com/729/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fjehl.wordpress.com/729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fjehl.wordpress.com/729/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fjehl.wordpress.com/729/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fjehl.wordpress.com/729/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fjehl.wordpress.com&#038;blog=32228968&#038;post=729&#038;subd=fjehl&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fjehl.wordpress.com/2012/03/15/frenchconnection-bi-la-communaute-frenchy-sur-la-bi-ms-vous-invite-a-son-pot-de-naissance-9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/274febdf3acd6dd954d0b525eccf1595?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fjehl</media:title>
		</media:content>

		<media:content url="http://fjehl.files.wordpress.com/2012/03/161998_264417236974036_1090220192_n.jpg" medium="image">
			<media:title type="html">161998_264417236974036_1090220192_n</media:title>
		</media:content>
	</item>
		<item>
		<title>Les Webcasts des Techdays 2012 sont en ligne!</title>
		<link>http://fjehl.wordpress.com/2012/03/09/les-webcasts-des-techdays-2012-sont-en-ligne-4-2/</link>
		<comments>http://fjehl.wordpress.com/2012/03/09/les-webcasts-des-techdays-2012-sont-en-ligne-4-2/#comments</comments>
		<pubDate>Fri, 09 Mar 2012 14:28:15 +0000</pubDate>
		<dc:creator>François Jehl</dc:creator>
				<category><![CDATA[Conférences]]></category>

		<guid isPermaLink="false">http://fjehl.wordpress.com/2012/03/09/les-webcasts-des-techdays-2012-sont-en-ligne-4/</guid>
		<description><![CDATA[Retrouvez les sur le site des Techdays. En ce qui concerne notre session DBI202, animée avec Aurélien Koppel, sobrement intitulées &#8220;Analysis Services 2012 : BI Personnelle, couche sémantique, cube, quelle(s) solution(s) pour un nouveau projet décisionnel?&#8220;, vous pouvez la regarder sur cette page ou en cliquant sur l&#8217;image. Bon visionnage!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fjehl.wordpress.com&#038;blog=32228968&#038;post=707&#038;subd=fjehl&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Retrouvez les sur le site des <a href="http://www.microsoft.com/france/mstechdays/">Techdays.</a> En ce qui concerne notre session DBI202, animée avec <strong>Aurélien Koppel</strong>, sobrement intitulées &#8220;<em>Analysis Services 2012 : BI Personnelle, couche sémantique, cube, quelle(s) solution(s) pour un nouveau projet décisionnel?</em>&#8220;, vous pouvez la regarder sur <a href="http://www.microsoft.com/france/mstechdays/programmes/parcours.aspx?SessionID=59027b4c-de98-41a1-b7e4-5e6803b42811#&amp;fbid=Psg_ljIxExj">cette page</a> ou en cliquant sur l&#8217;image.</p>
<p><a title="Visionner la session" href="http://www.microsoft.com/france/mstechdays/programmes/parcours.aspx?SessionID=59027b4c-de98-41a1-b7e4-5e6803b42811#&amp;fbid=Psg_ljIxExj" target="_blank"><img class="size-full wp-image aligncenter" src="http://fjehl.files.wordpress.com/2012/03/td.png?w=290" alt="Image" /></a></p>
<p style="text-align:justify;">Bon visionnage!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fjehl.wordpress.com/707/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fjehl.wordpress.com/707/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fjehl.wordpress.com/707/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fjehl.wordpress.com/707/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fjehl.wordpress.com/707/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fjehl.wordpress.com/707/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fjehl.wordpress.com/707/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fjehl.wordpress.com/707/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fjehl.wordpress.com/707/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fjehl.wordpress.com/707/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fjehl.wordpress.com/707/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fjehl.wordpress.com/707/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fjehl.wordpress.com/707/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fjehl.wordpress.com/707/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fjehl.wordpress.com&#038;blog=32228968&#038;post=707&#038;subd=fjehl&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fjehl.wordpress.com/2012/03/09/les-webcasts-des-techdays-2012-sont-en-ligne-4-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/274febdf3acd6dd954d0b525eccf1595?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fjehl</media:title>
		</media:content>

		<media:content url="http://fjehl.files.wordpress.com/2012/03/td.png?w=290" medium="image">
			<media:title type="html">Image</media:title>
		</media:content>
	</item>
		<item>
		<title>SQL Server 2012 passe en RTM</title>
		<link>http://fjehl.wordpress.com/2012/03/07/sql-server-2012-passe-en-rtm/</link>
		<comments>http://fjehl.wordpress.com/2012/03/07/sql-server-2012-passe-en-rtm/#comments</comments>
		<pubDate>Wed, 07 Mar 2012 00:56:06 +0000</pubDate>
		<dc:creator>François Jehl</dc:creator>
				<category><![CDATA[Annonces/Releases]]></category>

		<guid isPermaLink="false">http://fjehl.wordpress.com/?p=687</guid>
		<description><![CDATA[Plus de détails ici, la version d&#8217;évaluation de SQL Server 2012 RTM est dès maintenant disponible, à la veille du Virtual Launch Event dont je vous ai parlé il y a quelques jours. La sortie définitive est quant à elle prévue le 1er avril 2012. Bonne évaluation!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fjehl.wordpress.com&#038;blog=32228968&#038;post=687&#038;subd=fjehl&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.microsoft.com/sqlserver/en/us/get-sql-server/try-it.aspx"><img class="aligncenter size-medium wp-image-688" title="Sans titre" src="http://fjehl.files.wordpress.com/2012/03/sans-titre2.png?w=300&h=112" alt="" width="300" height="112" /></a></p>
<p>Plus de détails <a href="http://blogs.technet.com/b/dataplatforminsider/archive/2012/03/06/sql-server-2012-released-to-manufacturing.aspx">ici</a>, la version d&#8217;évaluation de <strong>SQL Server 2012 RTM</strong> est dès maintenant <a href="http://www.microsoft.com/sqlserver/en/us/get-sql-server/try-it.aspx">disponible</a>, à la veille du <strong>Virtual Launch Event </strong>dont je vous ai parlé il y a quelques jours.</p>
<p>La sortie définitive est quant à elle prévue le <strong>1er avril 2012.</strong></p>
<p>Bonne évaluation!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fjehl.wordpress.com/687/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fjehl.wordpress.com/687/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fjehl.wordpress.com/687/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fjehl.wordpress.com/687/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fjehl.wordpress.com/687/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fjehl.wordpress.com/687/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fjehl.wordpress.com/687/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fjehl.wordpress.com/687/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fjehl.wordpress.com/687/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fjehl.wordpress.com/687/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fjehl.wordpress.com/687/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fjehl.wordpress.com/687/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fjehl.wordpress.com/687/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fjehl.wordpress.com/687/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fjehl.wordpress.com&#038;blog=32228968&#038;post=687&#038;subd=fjehl&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fjehl.wordpress.com/2012/03/07/sql-server-2012-passe-en-rtm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/274febdf3acd6dd954d0b525eccf1595?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fjehl</media:title>
		</media:content>

		<media:content url="http://fjehl.files.wordpress.com/2012/03/sans-titre2.png?w=300" medium="image">
			<media:title type="html">Sans titre</media:title>
		</media:content>
	</item>
		<item>
		<title>DAX Wars &#8211; Un nouvel espoir pour les allergiques au MDX</title>
		<link>http://fjehl.wordpress.com/2012/03/03/dax-wars-un-nouvel-espoir-pour-les-allergiques-au-mdx/</link>
		<comments>http://fjehl.wordpress.com/2012/03/03/dax-wars-un-nouvel-espoir-pour-les-allergiques-au-mdx/#comments</comments>
		<pubDate>Sat, 03 Mar 2012 16:44:00 +0000</pubDate>
		<dc:creator>François Jehl</dc:creator>
				<category><![CDATA[Analysis Services]]></category>
		<category><![CDATA[DAX]]></category>

		<guid isPermaLink="false">http://fjehl.wordpress.com/?p=628</guid>
		<description><![CDATA[Je crois vraiment au DAX en tant que langage d’expressions. Je dois vous avouer que j’étais, et que je suis encore en partie beaucoup plus sceptique en ce qui concerne son usage en tant que langage de requêtes, comparé au MDX que je trouve plus élégant que cette espèce de LISP qui aurait couché avec &#8230; <a href="http://fjehl.wordpress.com/2012/03/03/dax-wars-un-nouvel-espoir-pour-les-allergiques-au-mdx/">Lire la suite <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fjehl.wordpress.com&#038;blog=32228968&#038;post=628&#038;subd=fjehl&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Je crois vraiment au <strong>DAX en tant que langage d’expressions</strong>. Je dois vous avouer que j’étais, et que je suis encore en partie beaucoup plus sceptique en ce qui concerne son usage en tant que <strong>langage de requêtes</strong>, comparé au MDX que je trouve plus élégant que cette <strong>espèce de LISP qui aurait couché avec des formules Excel</strong>. <strong>Roger Doherty</strong> évangéliste SQL Server à Corp, avec qui je parlais il y a quelques jours, m’a répondu à ce sujet que c’était souvent l’avis des MDX-geeks, mais que c’est justement parce que les geeks MDX sont 45 dans le monde et que tout le monde comprend les formules Excel que le DAX va probablement s’imposer. Un point pour lui. Blague à part, pourquoi ai-je eu du mal avec le DAX ? Probablement parce que j’ai mis du temps à appréhender correctement le MDX en oubliant complètement le SQL, et que DAX est plus une sorte de <strong>couche relationnelle</strong> avec des <strong>clauses de jointures implicites</strong> qui fait de l’analyse ad-hoc sur des schémas en étoile <strong>sans notion d’Exists</strong>. Pour les gens comme moi j’écrirais un post, qui sera le suivant en fait.</p>
<p style="text-align:justify;">Il y a une autre raison à ce post. Pour taper les modèles tabulaires, DAX est beaucoup plus efficace que le Formula Engine MDX qu&#8217;Excel utilise pour l&#8217;attaquer. Donc dans des frontaux où le développeur écrit sa requête, savoir écrire du DAX est à mon sens indispensable. Donc pour la <strong>majorité des gens</strong>, qui font du SSRS (par exemple) je pense qu’il vaut mieux présenter DAX comme étant à la base un truc fondamentalement relationnel. Au sens d’<strong>Edgar Codd </strong>- loué soit son nom<strong>.</strong> Des tables, des jointures, des agrégats… Mon objectif ici est de vous expliquer DAX de cette manière, en reprenant le chapitre 1 de ma formation de SQL de base, et en transposant les concepts.</p>
<p style="text-align:justify;"><strong>Back to school : algèbre relationnelle, projections et sélections</strong></p>
<p style="text-align:justify;">DAX manipule des <strong>tables</strong>. L’instruction la plus simple qu’on puisse faire sur une table est une projection de toutes ces colonnes :</p>
<p><pre class="brush: sql;">Evaluate
(
	‘Product’
)
</pre></p>
<p style="text-align:justify;">fait un</p>
<p><pre class="brush: sql;">
SELECT *
FROM [Product]
</pre></p>
<p style="text-align:justify;">rien de plus. Si je souhaite faire une <strong>sélection</strong>, au sens de l’algèbre relationnelle, c’est-à-dire un <strong>filtrage</strong>, je vais simplement utiliser la fonction <strong>Filter</strong>, qui remplace le WHERE.</p>
<p><pre class="brush: sql;">Evaluate
(
	Filter
	(
		Product,
		Product[Color] = &quot;Red&quot; &amp;&amp; Product[Weight] &gt; 10
	)
) </pre></p>
<p style="text-align:justify;">Il s’agit donc d’un</p>
<p><pre class="brush: sql;">SELECT *
FROM Product
WHERE Color= 'Red' AND Size &gt; 10</pre></p>
<p style="text-align:justify;">Faisons maintenant une <strong>projection</strong> restreinte et n’affichons que les bonnes colonnes. La manière de le faire est d’utiliser la fonction <strong>Summarize</strong></p>
<p><pre class="brush: sql;">Evaluate
(
	Summarize
	(
		Filter
		(
			Product,
			Product[Color]=&quot;Red&quot;
		),
		Product[Product ID],
		Product[Model Name]
	)
) </pre></p>
<p style="text-align:justify;">Attention. Ceci est en réalité équivalent à un SELECT DISTINCT car <strong>Summarize</strong> applique un DISTINCT. La raison est très simple: DAX <strong>n’est pas optimisé</strong> pour des projections de certaines colonnes seules sans DISTINCT. Pour faire une <strong>vraie projection d’algèbre relationnelle</strong> sur le niveau de granularité le plus fin, il faut donc avoir une ou plusieurs colonnes UNIQUE dans les colonnes projetées. En ce qui concerne <strong>l’aliasing</strong> des colonnes, il n’est pas facile à mettre en œuvre. Il faut utiliser <a href="http://www.sqlbi.com/articles/from-sql-to-dax-projection/">l’astuce de Marco Russo</a> qui consiste à projeter une ou plusieurs colonnes qui donnent l’unicité, et à aller chercher les autres colonnes via des <strong>Calculate</strong> dans un <strong>AddColumns</strong>.</p>
<p style="text-align:justify;">Oula je suis allé un peu vite pardon. <strong>AddColumns</strong> permet <strong>d’ajouter</strong> des colonnes, par exemple calculées, et <strong>Calculate</strong> évalue simplement une expression dans le contexte actuel.</p>
<p><pre class="brush: sql;">Evaluate
(
	AddColumns
	(
		Summarize
		(
			Filter
			(
				Product,
				Product[Color]=&quot;Red&quot;
			),
			Product[Product ID]
		),
		&quot;Nom du produit&quot;, Calculate(Values(Product[Model Name]))
	)
) </pre></p>
<p style="text-align:justify;">Pas super intuitif hein. Mais qui se préoccupe d’aliaser les colonnes. Sérieusement.</p>
<p style="text-align:justify;"><strong>Que serait un rapport sans agrégations ?</strong></p>
<p style="text-align:justify;">C’est bien la fonction Summarize qui va jouer ce rôle d’agrégateur. En réalité elle permet de définir dans une seule fonction :<br />
- La <strong>table</strong><br />
- Les <strong>colonnes</strong> de groupements<br />
- Les <strong>agrégations</strong> d’une requête</p>
<p style="text-align:justify;">Par exemple :</p>
<p><pre class="brush: sql;">Evaluate
(
	Summarize
	(
		Filter
		(
			Product,
			Product[Color]=&quot;Red&quot;
		),
		Product[Model Name],
		&quot;Poids Moyen&quot;, Average(Product[Weight])
	)
) </pre></p>
<p style="text-align:justify;">exécute bien la requête équivalente à</p>
<p><pre class="brush: sql;">
SELECT
[Model Name], AVG([Weight]) AS [Poids]
FROM Product
WHERE Color= 'Red' AND Size &gt; 10
GROUP BY [Model Name]
</pre></p>
<p style="text-align:justify;">La plupart des <strong>agrégations communes</strong> existent. Elles sont simplement parfois renommées et DAX n’étant pas super polymorphique vous en verrez des déclinaisons selon le type attendu en argument &#8230; La projection exécutée par Summarize quant à elle est simple à comprendre: les colonnes récupérées sont les groupements et les agrégations. Quant au HAVING, c’est un filtre comme les autres. Du point de vue de DAX, tout n’est que table imbriquées. Si je souhaite faire un filtre sur poids, il me suffit de faire :</p>
<p><pre class="brush: sql;">Evaluate
(
	Filter
	(
		Summarize
		(
			Filter
			(
				Product,
				Product[Color]=&quot;Red&quot;
			),
			Product[Model Name],
			&quot;Poids Moyen&quot;, Average(Product[Weight])
		),
		[Poids Moyen] &gt; 10
	)
) </pre></p>
<p>Cette requête est donc équivalent au SQL suivant: le premier qui demande pourquoi le HAVING ne voit pas les alias est prié d&#8217;aller relire tout le standard SQL ANSI au coin.</p>
<p><pre class="brush: sql;">
SELECT
[Model Name], AVG([Weight]) AS [Poids]
FROM Product
WHERE Color= 'Red' AND Size &gt; 10
GROUP BY [Model Name]
HAVING AVG([Weight])&gt; 10
</pre></p>
<p style="text-align:justify;"><strong>Sans oublier les tris !</strong></p>
<p style="text-align:justify;">J’en aurais presque oublié le tri. Comme dans SQL c’est la dernière instruction dans l’ordre d’évaluation « logique ». Et cela s’appelle aussi Order By. Ca c’est sympa.</p>
<p><pre class="brush: sql;">Evaluate
(
	Summarize
	(
		Filter
		(
			Product,
			Product[Color]=&quot;Red&quot;
		),
		Product[Model Name],
		&quot;Poids&quot;, AVERAGE(Product[Weight])
	)
)
Order By [Poids] DESC
</pre></p>
<p>Sans aucun étonnement, voilà le SQL généré. A noter que nous avons maintenant un statement SQL monotabulaire &#8220;complet&#8221;.</p>
<p><pre class="brush: sql;">
SELECT
[Model Name], AVG([Weight]) AS [Poids]
FROM Product
WHERE Color= 'Red' AND Size &gt; 10
GROUP BY [Model Name]
HAVING AVG([Weight])&gt; 10
ORDER BY [Poids] DESC
</pre></p>
<p style="text-align:justify;"><strong>Jointures et relations entre tables : tout &#8211; ou presque &#8211; est implicite</strong></p>
<p style="text-align:justify;">A la différence de SQL, les <strong>jointures sont implicites</strong> en DAX. Comme dans un cube, un modèle tabulaire a ses relations définies dans le Dimension Us&#8230; pardon dans le designer de relations. Bon en réalité il y a des cas où il faudra les expliciter. Mais on en est pas là. Cette implicitesse… implicité… implicitude signifie que si j’écris la requête suivante :</p>
<p><pre class="brush: sql;">Evaluate
(
	AddColumns
	(
		Filter
		(
			Product,
			Product[Color] = &quot;Red&quot;
		),
		&quot;Sous catégorie&quot;,RELATED('Product Subcategory'[Product Subcategory Name])
	)
)
Order By [Model Name]
</pre></p>
<p style="text-align:justify;">La fonction RELATED va juste dire de faire une jointure externe gauche vers la table sous catégorie, en se basant sur la relation définie dans mon modèle – à savoir <strong>&#8216;Product&#8217;[Product Subcategory ID] = &#8216;Product Subcategory‘[Product Subcategory ID]</strong> et de ramener cette dernière. On ne peut pas spécifier la condition de jointure, et c’est en cela qu’on se rapproche d’un cube. Mais juste un peu. Bon en SQL ça donne ça:</p>
<p><pre class="brush: sql;">
SELECT p.*, psc.[Product Subcategory Name]
FROM [Product] p
LEFT JOIN [Product Subcategory] psc
ON psc.[Product Subcategory ID]=p.[Product Subcategory ID]
ORDER BY [Model Name]
</pre></p>
<p>Cela marche évidemment aussi pour des relations <strong>à plus d’une indirection</strong>. Je peux bien évidemment aller chercher RELATED(&#8216;Product Category&#8217;[Product Category Name]) dans la table catégorie, à laquelle je suis relié par une <strong>table intermédiaire</strong> (sous catégorie). Qui a parlé de relation<em> Referenced</em>? En revanche cette requête <strong>échoue</strong> misérablement :</p>
<p><pre class="brush: sql;">
Evaluate
(
	AddColumns
	(
		Filter
		(
			Product,
			Product[Color] = &quot;Red&quot;
		),
		&quot;Année&quot;,RELATED('Date'[Calendar Year])
	)
)
Order By [Model Name]
</pre></p>
<p style="text-align:justify;">En effet les liens existent certes entre temps et produit (J’ai une many to many entre mes produits et mes dates, qui est la table de faits des ventes) mais<strong> ce ne sont pas des liens 1:N</strong> comme exigé par la fonction RELATED. Dit autrement <strong>Related est un peu comme un Lookup en SSIS</strong> : il va chercher une valeur unique basée sur des relations orientées vers la table cible. En utilisant des agrégats c’est encore plus simple : dans la fonction SUMMARIZE les <strong>Calculate</strong> sont implicites, les agrégats sont donc calculés en suivant les relations.</p>
<p><pre class="brush: sql;">Evaluate
(
	Summarize
	(
		'Internet Sales',
		Product[Model Name],
		&quot;Somme des ventes Internet&quot;, Sum('Internet Sales'[Sales Amount])
	)
)
Order By [Model Name] </pre></p>
<p style="text-align:justify;">Attention par contre! La table “de base” est importante! <strong>C’est elle qui détermine de quel côté se situe la jointure externe</strong>. Si je fais comme ci-dessous j’affiche tous les produits, même ceux sans ventes (LEFT OUTER JOIN)</p>
<p><pre class="brush: sql;">Evaluate
 (
	Summarize
	(
		Product,
		Product[Model Name],
		&quot;Somme des ventes Internet&quot;, Sum('Internet Sales'[Sales Amount])
	)
)
Order By [Model Name] </pre></p>
<p style="text-align:justify;">On comprend donc que dans le cas d’une application analytique, <strong>la première table d’un Summarize est très généralement une des tables de faits</strong>: c’est depuis elle que les autres arguments du GROUP BY vont venir s’afficher. Pour les filtrages, on peut encore utiliser la fonction <strong>Filter</strong> vue précédemment. Le problème de Filter, c’est qu’elle est à la base faite pour filtrer les colonnes d’une même table. Donc la solution immédiate c’est d’invoquer <strong>Related</strong> pour récupérer les valeurs et filtrer.</p>
<p><pre class="brush: sql;">
Evaluate
(
	Filter
	(
		'Internet Sales',
		Related('Product'[Color])=&quot;Red&quot;
		&amp;&amp;
		Related('Geography'[Country Region Name])=&quot;France&quot;
	)
)
</pre></p>
<p style="text-align:justify;">Un peu <strong>fastidieux et répétitif.</strong> Pour remplacer cela il existe la fonction CalculateTable, qui va appliquer à un ensemble infini de filtres, comme suit. J’ai donc ici les ventes de produits rouges en France.</p>
<p><pre class="brush: sql;">
Evaluate
(
	CalculateTable
	(
		'Internet Sales',
		'Product'[Color]=&quot;Red&quot;,
		'Geography'[Country Region Name]=&quot;France&quot;
	)
)
</pre></p>
<p style="text-align:justify;">Customisons ça avec un <strong>Summarize</strong> et quelques autres <strong>colonnes</strong>, ainsi que quelques agrégats et voilà déjà un beau rapport non ?</p>
<p><pre class="brush: sql;">
Evaluate
(
	Filter
	(
		CalculateTable
		(
			Summarize
			(
				'Internet Sales',
				'Date'[Calendar Year],
				'Product Category'[Product Category Name],
				'Product Subcategory'[Product Subcategory Name],
				&quot;Nombre de ventes&quot;, CountRows('Internet Sales'),
				&quot;Total des ventes&quot;, Sum('Internet Sales'[Sales Amount])
			),
			Filter
(
'Product','Product'[Color]=&quot;Red&quot;
||
'Product'[Color]=&quot;Yellow&quot;
),
			'Geography'[Country Region Name]=&quot;France&quot;

		),
		[Total des ventes] &gt; 5000
	)
)
Order By [Calendar Year],[Product Category Name]
</pre></p>
<p>Ce qui donne en SQL:</p>
<p><pre class="brush: sql;">
SELECT
	s.*,
	d.[Calendar Year],
	pc.[Product Category Name],
	psc.[Product Subcategory Name],
	COUNT(*) AS [Nombre de ventes],
	SUM(s.[Sales Amount]) AS [Total des ventes]
FROM [Internet Sales] s
LEFT JOIN [Date] d
ON s.[Order Date Key] = d.[Date Key]
LEFT JOIN [Product] p
ON p.[Product ID] = s.[Product ID]
LEFT JOIN [Product Subcategory] psc
ON p.[Product Subcategory ID] = psc.[Product Subcategory ID]
LEFT JOIN [Product Category] pc
ON pc.[Product Category ID] = psc.[Product Category ID]
LEFT JOIN [Customer] c
ON s.[Customer ID]= c.[Customer ID]
LEFT JOIN [Geography] g
ON g.[Geography ID]= c.[Geography ID]
WHERE p.Color IN ('Red','Yellow') AND g.Country='France'
GROUP BY
	s.*,
	d.[Calendar Year],
	pc.[Product Category Name],
	psc.[Product Subcategory Name]
HAVING SUM(s.[Sales Amount])&gt;5000
ORDER BY [Calendar Year],[Product Category Name]
</pre></p>
<p style="text-align:justify;">Je pense que ces quelques fonctions constituent une <strong>bonne intro au DAX</strong>, vous allez déjà pouvoir sortir quelques rapports. La prochaine fois on s’attaque au plus difficile : le DAX pour les fans de MDX, que j’aurais pu appeler où « Comment on fait un à #@%$ de YearToDate ?! » où « Où qu&#8217;il est Exists ? ». Bon weekend!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fjehl.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fjehl.wordpress.com/628/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fjehl.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fjehl.wordpress.com/628/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fjehl.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fjehl.wordpress.com/628/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fjehl.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fjehl.wordpress.com/628/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fjehl.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fjehl.wordpress.com/628/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fjehl.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fjehl.wordpress.com/628/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fjehl.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fjehl.wordpress.com/628/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fjehl.wordpress.com&#038;blog=32228968&#038;post=628&#038;subd=fjehl&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fjehl.wordpress.com/2012/03/03/dax-wars-un-nouvel-espoir-pour-les-allergiques-au-mdx/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/274febdf3acd6dd954d0b525eccf1595?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fjehl</media:title>
		</media:content>
	</item>
		<item>
		<title>&#8220;Les procédures stockées ne sont pas des vues paramétrées&#8221; Vraiment en SQL 2012?</title>
		<link>http://fjehl.wordpress.com/2012/03/01/les-procedures-stockees-ne-sont-pas-des-vues-parametrees-vraiment-en-sql-2012-3/</link>
		<comments>http://fjehl.wordpress.com/2012/03/01/les-procedures-stockees-ne-sont-pas-des-vues-parametrees-vraiment-en-sql-2012-3/#comments</comments>
		<pubDate>Thu, 01 Mar 2012 16:53:27 +0000</pubDate>
		<dc:creator>François Jehl</dc:creator>
				<category><![CDATA[Integration Services]]></category>

		<guid isPermaLink="false">http://fjehl.wordpress.com/2012/03/01/les-procedures-stockees-ne-sont-pas-des-vues-parametrees-vraiment-en-sql-2012-3/</guid>
		<description><![CDATA[L&#8217;excellent Adam Machanic a publié en 2006 un post qui a fait date dans la compréhension des procédures stockées, et particulièrement dans un contexte OLE DB (qui a dit SSIS?). Ce post s&#8217;appelait Stored procedures are not parameterized views et je vous conseille de le lire si ce n&#8217;est déjà fait. Il y explique la raison &#8230; <a href="http://fjehl.wordpress.com/2012/03/01/les-procedures-stockees-ne-sont-pas-des-vues-parametrees-vraiment-en-sql-2012-3/">Lire la suite <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fjehl.wordpress.com&#038;blog=32228968&#038;post=604&#038;subd=fjehl&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">L&#8217;excellent <strong>Adam Machanic</strong> a publié en 2006<a href="http://sqlblog.com/blogs/adam_machanic/archive/2006/07/12/109.aspx"> un post </a>qui a fait date dans la compréhension des procédures stockées, et particulièrement dans un contexte OLE DB (qui a dit SSIS?). Ce post s&#8217;appelait <em>Stored procedures are not parameterized views</em> et je vous conseille de le lire si ce n&#8217;est déjà fait. Il y explique la raison profonde de la <strong>non exposition classique de métadonnées</strong> dans les procédures stockées: elles sont non prédictibles et peuvent renvoyer des données très différentes selon la branche &#8211; au sens <strong>algorithmique</strong> &#8211; dans laquelle le retour s&#8217;effectue. Donc il n&#8217;y a pas de stockage dans les catalogues C&#8217;est un gros problème pour OLE DB par exemple, qui dans un vaste ensemble de cas est incapable de comprendre les méta associées et complique leur usage comme <strong>source</strong>, d&#8217;un rapport, d&#8217;un <strong>Data Flow</strong> ou autre.</p>
<p style="text-align:justify;"><strong>Comment cela marche alors dans SSIS?</strong></p>
<p style="text-align:justify;">SQL Server propose un mode d&#8217;exécution appelé FMTONLY ON. Si vous regardez Books Online, vous verrez que cette instruction permet effectivement une inspection des chemins de code et le retour explicite de métadonnées seules dans un objectif de validation. C&#8217;est une opération assez empirique, et qui pour être honnête marche parfois assez mal: elle ne gère pas les tables temporaires, pas les curseurs&#8230; C&#8217;est potentiellement  par exemple ce qui est assez handicapant. Ce <a href="http://www.sqlservercentral.com/articles/Integration+Services+(SSIS)/65112/">post </a>est assez connu sur le sujet des tables temporaires et propose des workarounds qui se valent&#8230;</p>
<p><strong>Quelle est la parade aujourd&#8217;hui?</strong></p>
<p style="text-align:justify;">En ré<strong></strong>alité il y en a plusieurs. Une des solutions consiste à <strong>désactiver ce FMTONLY</strong> pour que SSIS exécute réellement pour extraire les métas. Et effectivement cela fonctionne. C&#8217;est la technique bien connue de pas mal de devs, mais elle a ses inconvé<strong></strong>nients aussi car elle cause de sévères problèmes de performances (SSIS valide constamment les sources, et FMTONLY ON est quand même plus <strong>économe</strong> qu&#8217;une exécution complète).</p>
<p style="text-align:justify;">Il y a aussi la parade qui consiste à faire pas mal de refactoring de code dans le T-SQL pour faire marcher FMTONLY ON. Ce qui n&#8217;est pas franchement l&#8217;objectif souhaité quand on veut faire du couplage faible entre l&#8217;ETL et ses sources&#8230; Jamie Thomson en était arrivé à la conclusion dans <a href="http://consultingblogs.emc.com/jamiethomson/archive/2006/12/20/SSIS_3A00_-Using-stored-procedures-inside-an-OLE-DB-Source-component.aspx">ce post</a> que les PS ne sont pas faites pour ça&#8230; et que dans pareil cas les <strong>UDF sont là</strong>. Je suis assez d&#8217;accord avec lui. Sauf que parfois on ne me laisse pas le choix et je dois quand même utiliser des PS.</p>
<p style="text-align:justify;"><strong>Qu&#8217;apporte SQL Server 2012?</strong></p>
<p style="text-align:justify;">Il apporte la possibilité d&#8217;exécuter une procédure stockée en spécifiant le contrat attendu. Les métadonnées exposées sont celles que vous spécifiez. Si le contrat est enfreint alors l&#8217;exécution échoue. Ecrivons une requête bien <strong>inutilisable</strong>, avec une belle table temporaire pour SSIS <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><pre class="brush: sql;">
CREATE PROC usp_GetTopCustomersForYear(@Year INT)
AS
 SET NOCOUNT ON
 --Une requête toute bête dans une table temporaire
 SELECT TOP 10 c.CustomerAlternateKey, SUM(s.SalesAmount) SalesAmount
 INTO #TopCustomers
 FROM AdventureWorksDWDenali.dbo.DimCustomer c
 JOIN AdventureWorksDWDenali.dbo.FactInternetSales s
 ON s.CustomerKey = c.CustomerKey
 JOIN AdventureWorksDWDenali.dbo.DimDate d
 ON d.DateKey = s.OrderDateKey
 WHERE d.CalendarYear=@Year
 GROUP BY c.CustomerAlternateKey
 ORDER BY SalesAmount DESC
 --Un SELECT depuis cette table
 SELECT *
 FROM #TopCustomers
GO
</pre></p>
<p style="text-align:justify;">Essayons de l&#8217;utiliser dans SSIS: échec. Le message d&#8217;erreur indique bien que FMTONLY est incapable de parser les métadonnées d&#8217;une PS qui fait usage d&#8217;une table temporaire.</p>
<p style="text-align:justify;"><a href="http://fjehl.files.wordpress.com/2012/03/11.png"><img class="aligncenter size-medium wp-image-623" title="1" src="http://fjehl.files.wordpress.com/2012/03/11.png?w=300&h=187" alt="" width="300" height="187" /></a></p>
<p style="text-align:justify;">Là ou je me lancerais maintenant dans un refactoring fastidieux, je vais modifier simplement l&#8217;appel à la procédure stockée. Je vais juste spécifier ce que j&#8217;attend.</p>
<p><pre class="brush: sql;">
EXEC usp_GetTopCustomersForYear ?
WITH RESULT SETS
(
   (
      CustomerKey NVARCHAR(15),
      Amount FLOAT
   )
)
</pre></p>
<p style="text-align:justify;">Le résultat est bien meilleur à tous points de vue!</p>
<p style="text-align:justify;"><a href="http://fjehl.files.wordpress.com/2012/03/sans-titre.png"><img class="aligncenter size-medium wp-image-624" title="MarcheMieux" src="http://fjehl.files.wordpress.com/2012/03/sans-titre.png?w=300&h=191" alt="" width="300" height="191" /></a></p>
<p style="text-align:justify;">Il est à noter que ce <strong>WITH RESULT SETS</strong> peut être utilisé à beaucoup d&#8217;autre endroits, pour permettre du <strong>couplage très faible</strong> entre les applications et les procédures stockées: cela va par exemple permettre de caster les types castables dans un type précis attendu, plutôt que d&#8217;être potentiellement embêté par des providers pointilleux sur le typage en cas de modification de la PS par le DBA.</p>
<p style="text-align:justify;"><strong>Et pourquoi ne pas avoir directement permis d&#8217;exposer les métas des procédures stockées?</strong></p>
<p style="text-align:justify;">Parce que sinon on appellerait ça des <strong>UDF</strong>. Blague à part ce n&#8217;est pas la volonté de Microsoft, la séparation entre procédure et fonction, que les vieux codeurs Pascal connaissent bien aussi, reste dans SQL Server 2012.</p>
<p style="text-align:justify;"><strong>D&#8217;autres choses?</strong></p>
<p style="text-align:justify;">Oui, on peut noter aussi pour remplacer <strong>FMTONLY</strong> de nouvelles DMV toutes propres font leur apparition: elles permettent d&#8217;exposer des catalogues de métas renvoyés par des procédures stockées si cela est possible. Mais elles partagent avec <strong>FMTONLY</strong>des inconvénients. Ma PS n&#8217;est pas reconnaissable par ce statement, qui renvoie invariablement:</p>
<p><em><strong>The metadata could not be determined because statement &#8216;SELECT *</strong> <strong>FROM #TopCustomers&#8217; in procedure &#8216;usp_GetTopCustomersForYear&#8217; uses a temp table.</strong></em></p>
<p><pre class="brush: sql;">
SELECT *
FROM sys.dm_exec_describe_first_result_set_for_object(OBJECT_ID('dbo.usp_GetTopCustomersForYear'),1)
</pre></p>
<p style="text-align:justify;">Voilà pour le sujet, en espérant que cela vous permette d&#8217;exécuter des PS en source plus facilement. A bientôt!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fjehl.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fjehl.wordpress.com/604/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fjehl.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fjehl.wordpress.com/604/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fjehl.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fjehl.wordpress.com/604/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fjehl.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fjehl.wordpress.com/604/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fjehl.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fjehl.wordpress.com/604/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fjehl.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fjehl.wordpress.com/604/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fjehl.wordpress.com/604/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fjehl.wordpress.com/604/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fjehl.wordpress.com&#038;blog=32228968&#038;post=604&#038;subd=fjehl&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fjehl.wordpress.com/2012/03/01/les-procedures-stockees-ne-sont-pas-des-vues-parametrees-vraiment-en-sql-2012-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/274febdf3acd6dd954d0b525eccf1595?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fjehl</media:title>
		</media:content>

		<media:content url="http://fjehl.files.wordpress.com/2012/03/11.png?w=300" medium="image">
			<media:title type="html">1</media:title>
		</media:content>

		<media:content url="http://fjehl.files.wordpress.com/2012/03/sans-titre.png?w=300" medium="image">
			<media:title type="html">MarcheMieux</media:title>
		</media:content>
	</item>
		<item>
		<title>Slides de ma session aux Techdays 2012</title>
		<link>http://fjehl.wordpress.com/2012/02/15/slides-de-ma-session-aux-techdays-2012/</link>
		<comments>http://fjehl.wordpress.com/2012/02/15/slides-de-ma-session-aux-techdays-2012/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 14:12:18 +0000</pubDate>
		<dc:creator>François Jehl</dc:creator>
				<category><![CDATA[Analysis Services]]></category>
		<category><![CDATA[Conférences]]></category>

		<guid isPermaLink="false">http://fjehl.wordpress.com/?p=575</guid>
		<description><![CDATA[Tout est dans le titre: vous pouvez  télécharger ci dessous, au format PDF, les slides de la session que j&#8217;ai donné aux Techdays 2012. En attendant les webcasts qui ne tarderont pas. Bonne lecture!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fjehl.wordpress.com&#038;blog=32228968&#038;post=575&#038;subd=fjehl&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Tout est dans le titre: vous pouvez  télécharger<strong> ci dessous</strong>, au format PDF, les slides de la session que j&#8217;ai donné aux Techdays 2012. En attendant les webcasts qui ne tarderont pas.</p>
<p><a href="http://fjehl.files.wordpress.com/2012/02/techdays-2012-analysis-services-2012-v0-7.pdf"><img class="aligncenter size-medium wp-image-577" title="Techdays 2012" src="http://fjehl.files.wordpress.com/2012/02/td.png?w=300&h=225" alt="" width="300" height="225" /></a></p>
<p>Bonne lecture!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fjehl.wordpress.com/575/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fjehl.wordpress.com/575/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fjehl.wordpress.com/575/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fjehl.wordpress.com/575/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fjehl.wordpress.com/575/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fjehl.wordpress.com/575/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fjehl.wordpress.com/575/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fjehl.wordpress.com/575/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fjehl.wordpress.com/575/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fjehl.wordpress.com/575/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fjehl.wordpress.com/575/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fjehl.wordpress.com/575/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fjehl.wordpress.com/575/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fjehl.wordpress.com/575/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fjehl.wordpress.com&#038;blog=32228968&#038;post=575&#038;subd=fjehl&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fjehl.wordpress.com/2012/02/15/slides-de-ma-session-aux-techdays-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/274febdf3acd6dd954d0b525eccf1595?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fjehl</media:title>
		</media:content>

		<media:content url="http://fjehl.files.wordpress.com/2012/02/td.png?w=300" medium="image">
			<media:title type="html">Techdays 2012</media:title>
		</media:content>
	</item>
		<item>
		<title>SQL Server 2012 Virtual Launch Event le 7 mars</title>
		<link>http://fjehl.wordpress.com/2012/02/15/sql-server-2012-virtual-launch-event-le-7-mars/</link>
		<comments>http://fjehl.wordpress.com/2012/02/15/sql-server-2012-virtual-launch-event-le-7-mars/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 14:01:58 +0000</pubDate>
		<dc:creator>François Jehl</dc:creator>
				<category><![CDATA[Annonces/Releases]]></category>

		<guid isPermaLink="false">http://fjehl.wordpress.com/2012/02/15/sql-server-2012-virtual-launch-event-le-7-mars/</guid>
		<description><![CDATA[Vous pouvez vous inscrire pour le VLE (Virtual Launch Event), le lancement virtuel de SQL Server 2012 qui aura lieu le 7 mars 2012. C&#8217;est l&#8217;occasion de voir un certain nombre de sessions de quelques dizaines de minutes, et de découvrir les features clé de cette nouvelle version de SQL Server. Bon et aussi c&#8217;est &#8230; <a href="http://fjehl.wordpress.com/2012/02/15/sql-server-2012-virtual-launch-event-le-7-mars/">Lire la suite <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fjehl.wordpress.com&#038;blog=32228968&#038;post=574&#038;subd=fjehl&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Vous pouvez vous inscrire pour le VLE (<strong>Virtual Launch Event</strong>), le lancement virtuel de SQL Server 2012 qui aura lieu <strong>le 7 mars 2012</strong>. C&#8217;est l&#8217;occasion de voir un certain nombre de sessions de quelques dizaines de minutes, et de découvrir les features clé de cette nouvelle version de SQL Server.</p>
<p><a href="http://www.sqlserverlaunch.com/ww/Home"><img class="size-full wp-image" src="http://fjehl.files.wordpress.com/2012/02/sqlvle.png?w=638" alt="Image" /></a></p>
<p>Bon et <strong>aussi c&#8217;est gratuit</strong> ce qui ne gâche rien. Pour s&#8217;inscrire, c&#8217;est ici : <a href="http://www.sqlserverlaunch.com/ww/Home">http://www.sqlserverlaunch.com/ww/Home</a></p>
<p>Il y aussi des cadeaux à gagner apparemment <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fjehl.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fjehl.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fjehl.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fjehl.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fjehl.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fjehl.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fjehl.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fjehl.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fjehl.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fjehl.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fjehl.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fjehl.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fjehl.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fjehl.wordpress.com/574/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fjehl.wordpress.com&#038;blog=32228968&#038;post=574&#038;subd=fjehl&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fjehl.wordpress.com/2012/02/15/sql-server-2012-virtual-launch-event-le-7-mars/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/274febdf3acd6dd954d0b525eccf1595?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fjehl</media:title>
		</media:content>

		<media:content url="http://fjehl.files.wordpress.com/2012/02/sqlvle.png?w=638" medium="image">
			<media:title type="html">Image</media:title>
		</media:content>
	</item>
		<item>
		<title>BI Semantic Model expliqué&#8230; en vidéo</title>
		<link>http://fjehl.wordpress.com/2012/02/14/bi-semantic-model-explique-en-video/</link>
		<comments>http://fjehl.wordpress.com/2012/02/14/bi-semantic-model-explique-en-video/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 13:10:05 +0000</pubDate>
		<dc:creator>François Jehl</dc:creator>
				<category><![CDATA[Analysis Services]]></category>

		<guid isPermaLink="false">http://fjehl.wordpress.com/?p=509</guid>
		<description><![CDATA[Une petite vidéo de cinq minutes sur le nouveau modèle d&#8217;Analysis Services: le BI Semantic Model, tournée avec Jean-Marc Monfort, chef de produit SQL Server, il y a quelques semaines. Le message clé: l&#8217;UDM disparaît au profit d&#8217;un nouveau modèle, le BI Semantic Model ou BISM. Ce BISM désigne techniquement l&#8217;intégration (en cours!) d&#8217;Analysis Services &#8230; <a href="http://fjehl.wordpress.com/2012/02/14/bi-semantic-model-explique-en-video/">Lire la suite <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fjehl.wordpress.com&#038;blog=32228968&#038;post=509&#038;subd=fjehl&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Une petite vidéo de cinq minutes sur le nouveau modèle d&#8217;Analysis Services: le <strong>BI Semantic Model</strong>, tournée avec <strong>Jean-Marc Monfort</strong>, chef de produit SQL Server, il y a quelques semaines.</p>
<p style="text-align:justify;"><a title="Visionner la vidéo" href="http://www.youtube.com/watch?v=XEuBqGyLsQw" target="_blank"><img class="size-medium wp-image-510 aligncenter" title="Visionner la vidéo" src="http://fjehl.files.wordpress.com/2012/02/vlcsnap-2012-02-14-11h37m34s35.png?w=300&h=168" alt="Visionner la vidéo" width="300" height="168" /></a><br />
Le message clé: l&#8217;UDM <strong>disparaît au profit d&#8217;un nouveau modèle</strong>, le BI Semantic Model ou <strong>BISM</strong>. Ce BISM désigne techniquement<strong> l&#8217;intégration (en cours!) d&#8217;Analysis Services Multidimensional et de Tabular</strong>, que ce soit par le partage de l&#8217;API AMO (Analysis Management Objects), c&#8217;est à dire de leur modèle objet, du MDX pour les deux plateformes, des providers d&#8217;accès&#8230;<br />
<strong>BISM est en v1.0</strong>, cela signifie que <strong>l&#8217;intégration va se poursuivre</strong>, avec, on peut l&#8217;imaginer, la fusion des types de projets, des instances, des designers, le support croisé du DAX&#8230; Toutes les hypothèses sont ouvertes!</p>
<p style="text-align:justify;">Bon visionnage!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fjehl.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fjehl.wordpress.com/509/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fjehl.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fjehl.wordpress.com/509/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fjehl.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fjehl.wordpress.com/509/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fjehl.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fjehl.wordpress.com/509/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fjehl.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fjehl.wordpress.com/509/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fjehl.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fjehl.wordpress.com/509/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fjehl.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fjehl.wordpress.com/509/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fjehl.wordpress.com&#038;blog=32228968&#038;post=509&#038;subd=fjehl&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fjehl.wordpress.com/2012/02/14/bi-semantic-model-explique-en-video/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/274febdf3acd6dd954d0b525eccf1595?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">fjehl</media:title>
		</media:content>

		<media:content url="http://fjehl.files.wordpress.com/2012/02/vlcsnap-2012-02-14-11h37m34s35.png?w=300" medium="image">
			<media:title type="html">Visionner la vidéo</media:title>
		</media:content>
	</item>
	</channel>
</rss>
