<?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/"
	>

<channel>
	<title>Dans la tête de Doc Malkovich &#187; business objects</title>
	<atom:link href="https://blog.developpez.com/jmalkovich/pcategory/business-objects/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/jmalkovich</link>
	<description>Réflexions et humeurs sur la Business Intelligence</description>
	<lastBuildDate>Tue, 26 Aug 2014 11:54:41 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Installation des clients BI4 sur XP</title>
		<link>https://blog.developpez.com/jmalkovich/p12701/business-objects/installation-des-clients-bi4-sur-xp</link>
		<comments>https://blog.developpez.com/jmalkovich/p12701/business-objects/installation-des-clients-bi4-sur-xp#comments</comments>
		<pubDate>Wed, 20 Aug 2014 11:53:56 +0000</pubDate>
		<dc:creator><![CDATA[doc malkovich]]></dc:creator>
				<category><![CDATA[business objects]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/jmalkovich/?p=165</guid>
		<description><![CDATA[Pour ceux qui ne le sauraient pas, Microsoft a mis fin au support de Windows XP ce 8 avril 2014. Pourtant près de la moitié du parc de PC est encore équipée de cette version, notamment en entreprise. Source ici &#8230; <a href="https://blog.developpez.com/jmalkovich/p12701/business-objects/installation-des-clients-bi4-sur-xp">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://fc05.deviantart.net/fs43/f/2009/104/1/d/1d6b06daac9094b03098032c50a27ab3.png"><img src="http://fc05.deviantart.net/fs43/f/2009/104/1/d/1d6b06daac9094b03098032c50a27ab3.png" width="99" height="56" class="alignleft" /></a>Pour ceux qui ne le sauraient pas, Microsoft a mis fin au support de Windows XP ce 8 avril 2014. Pourtant près de la moitié du parc de PC est encore équipée de cette version, notamment en entreprise.<br />
<a href="http://www.developpez.com/actu/69389/Fin-du-support-de-Windows-XP-seriez-vous-pret-le-8-avril-pour-XP-Apocalypse-Quelques-astuces-pour-ceux-qui-vont-continuer-a-utiliser-l-OS/">Source ici</a></p>
<p>Les nouvelles versions de nos applications favorites ne supportent plus XP depuis longtemps. Certaines comme SAP BI bloquent l&rsquo;installation des logiciels sur cette plateforme. Cependant en bidouillant un peu on arrive à passer outre cette interdiction.</p>
<p><span id="more-165"></span></p>
<p>La version utilisée ici est la plateforme SAP BusinessObjects BI 4.1 SP3. Installation des clients sur Windows XP pour rappel, 5.1 Professionnel pour être précis.</p>
<p>On récupère les binaires et on lance l&rsquo;installation. L&rsquo;assistant vérifie les prérequis et comme on est en XP il râle. Et on arrête là, impossible de continuer en cliquant sur le bouton Suivant.<br />
<a href="http://blog.developpez.com/jmalkovich/files/2014/08/install_bi41_xp_1.png"><img src="http://blog.developpez.com/jmalkovich/files/2014/08/install_bi41_xp_1.png" alt="install_bi41_xp_1" width="503" height="485" class="alignleft size-full wp-image-159" /></a></p>
<p>Pour déjouer cette vérification il faut modifier le fichier <strong>product.seed.xml</strong> qui se trouve dans l&rsquo;arborescence du programme d&rsquo;installation. Chez moi il se trouve dans le dossier <strong>(dossier_d&rsquo;install)/SBOP_BI_PLAT_4.1_SP3_CLNT_WIN_32_64B_\DATA_UNITS\BusinessObjectsClient\dunit\product.businessobjectsclient-4.0-core-32</strong>.<br />
<a href="http://blog.developpez.com/jmalkovich/files/2014/08/install_bi41_xp_2.png"><img src="http://blog.developpez.com/jmalkovich/files/2014/08/install_bi41_xp_2.png" alt="install_bi41_xp_2" width="588" height="281" class="alignleft size-full wp-image-157" /></a></p>
<p>Avec un bon éditeur de texte comme Notepad++ (car le fichier est au format UNIX) il faut modifier la section :</p>
<pre>
  &lt;prerequisite id=&quot;getWindowsVersionPreReq&quot; description=&quot;#prereq.WindowsVersionPreReqText#&quot; reason=&quot;#prereq.WindowsVersionPreReqNotOkText#&quot; type=&quot;error&quot;&gt;
    &lt;action id=&quot;CompareVersion&quot;&gt;
      &lt;arg name=&quot;maxVersion&quot; value=&quot;&quot;/&gt;
      &lt;arg name=&quot;minVersion&quot; value=&quot;6.1&quot;/&gt;
      &lt;arg name=&quot;VersionNeedToCompare&quot; value=&quot;[$os.version]&quot;/&gt;
      &lt;arg name=&quot;Property&quot; value=&quot;Windows7Above&quot;/&gt;
      &lt;arg name=&quot;AllowedSuffix&quot; value=&quot;WORKSTATION&quot;/&gt;
    &lt;/action&gt;
    &lt;action id=&quot;CompareVersion&quot;&gt;
      &lt;arg name=&quot;maxVersion&quot; value=&quot;&quot;/&gt;
      &lt;arg name=&quot;minVersion&quot; value=&quot;6.2&quot;/&gt;
      &lt;arg name=&quot;VersionNeedToCompare&quot; value=&quot;[$os.version]&quot;/&gt;
      &lt;arg name=&quot;Property&quot; value=&quot;Windows8Above&quot;/&gt;
      &lt;arg name=&quot;AllowedSuffix&quot; value=&quot;WORKSTATION&quot;/&gt;
    &lt;/action&gt;
    &lt;action id=&quot;CompareVersion&quot;&gt;
      &lt;arg name=&quot;maxVersion&quot; value=&quot;&quot;/&gt;
      &lt;arg name=&quot;minVersion&quot; value=&quot;6.0&quot;/&gt;
      &lt;arg name=&quot;VersionNeedToCompare&quot; value=&quot;[$os.version]&quot;/&gt;
      &lt;arg name=&quot;Property&quot; value=&quot;Windows2008Above&quot;/&gt;
      &lt;arg name=&quot;AllowedSuffix&quot; value=&quot;Server&quot;/&gt;
    &lt;/action&gt;
    &lt;condition&gt;
      &lt;or&gt;
        &lt;condition property=&quot;Windows2008Above&quot; value=&quot;1&quot;/&gt;
        &lt;condition property=&quot;Windows8Above&quot; value=&quot;1&quot;/&gt;
        &lt;condition&gt;
          &lt;and&gt;
            &lt;condition property=&quot;Windows7Above&quot; value=&quot;1&quot;/&gt;
            &lt;not&gt;
              &lt;condition property=&quot;$os.servicepack&quot; value=&quot;0&quot;/&gt;
            &lt;/not&gt;
          &lt;/and&gt;
        &lt;/condition&gt;
      &lt;/or&gt;
    &lt;/condition&gt;
  &lt;/prerequisite&gt;  
</pre>
<p>Pour qu&rsquo;elle ressemble à :</p>
<pre>
  &lt;prerequisite id=&quot;getWindowsVersionPreReq&quot; description=&quot;#prereq.WindowsVersionPreReqText#&quot; reason=&quot;#prereq.WindowsVersionPreReqNotOkText#&quot; type=&quot;error&quot;&gt;
    &lt;action id=&quot;CompareVersion&quot;&gt;
      &lt;arg name=&quot;maxVersion&quot; value=&quot;&quot;/&gt;
      &lt;arg name=&quot;minVersion&quot; value=&quot;6.1&quot;/&gt;
      &lt;arg name=&quot;VersionNeedToCompare&quot; value=&quot;[$os.version]&quot;/&gt;
      &lt;arg name=&quot;Property&quot; value=&quot;Windows7Above&quot;/&gt;
      &lt;arg name=&quot;AllowedSuffix&quot; value=&quot;WORKSTATION&quot;/&gt;
    &lt;/action&gt;
    &lt;action id=&quot;CompareVersion&quot;&gt;
      &lt;arg name=&quot;maxVersion&quot; value=&quot;&quot;/&gt;
      &lt;arg name=&quot;minVersion&quot; value=&quot;6.2&quot;/&gt;
      &lt;arg name=&quot;VersionNeedToCompare&quot; value=&quot;[$os.version]&quot;/&gt;
      &lt;arg name=&quot;Property&quot; value=&quot;Windows8Above&quot;/&gt;
      &lt;arg name=&quot;AllowedSuffix&quot; value=&quot;WORKSTATION&quot;/&gt;
    &lt;/action&gt;
    &lt;action id=&quot;CompareVersion&quot;&gt;
      &lt;arg name=&quot;maxVersion&quot; value=&quot;&quot;/&gt;
      &lt;arg name=&quot;minVersion&quot; value=&quot;6.0&quot;/&gt;
      &lt;arg name=&quot;VersionNeedToCompare&quot; value=&quot;[$os.version]&quot;/&gt;
      &lt;arg name=&quot;Property&quot; value=&quot;Windows2008Above&quot;/&gt;
      &lt;arg name=&quot;AllowedSuffix&quot; value=&quot;Server&quot;/&gt;
    &lt;/action&gt;
    &lt;action id=&quot;CompareVersion&quot;&gt;
      &lt;arg name=&quot;maxVersion&quot; value=&quot;&quot;/&gt;
      &lt;arg name=&quot;minVersion&quot; value=&quot;5.1&quot;/&gt;
      &lt;arg name=&quot;VersionNeedToCompare&quot; value=&quot;[$os.version]&quot;/&gt;
      &lt;arg name=&quot;Property&quot; value=&quot;WindowsXPAbove&quot;/&gt;
      &lt;arg name=&quot;AllowedSuffix&quot; value=&quot;WORKSTATION&quot;/&gt;
    &lt;/action&gt;
    &lt;condition&gt;
      &lt;or&gt;
        &lt;condition property=&quot;Windows2008Above&quot; value=&quot;1&quot;/&gt;
        &lt;condition property=&quot;Windows8Above&quot; value=&quot;1&quot;/&gt;
        &lt;condition property=&quot;WindowsXPAbove&quot; value=&quot;1&quot;/&gt;
        &lt;condition&gt;
          &lt;and&gt;
            &lt;condition property=&quot;Windows7Above&quot; value=&quot;1&quot;/&gt;
            &lt;not&gt;
              &lt;condition property=&quot;$os.servicepack&quot; value=&quot;0&quot;/&gt;
            &lt;/not&gt;
          &lt;/and&gt;
        &lt;/condition&gt;
      &lt;/or&gt;
    &lt;/condition&gt;
  &lt;/prerequisite&gt;
</pre>
<p>Après on relance l&rsquo;installation et miracle ! Tous les prérequis sont vérifiés, même la version de Windows.<br />
<a href="http://blog.developpez.com/jmalkovich/files/2014/08/install_bi41_xp_3.png"><img src="http://blog.developpez.com/jmalkovich/files/2014/08/install_bi41_xp_3.png" alt="install_bi41_xp_3" width="503" height="485" class="alignleft size-full wp-image-158" /></a></p>
<p>On peut alors passer à la suite&#8230;</p>
<p><strong>Attention, cette installation n&rsquo;est pas supportée par SAP. Mais ça peut dépanner <img src="https://blog.developpez.com/jmalkovich/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /></strong></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Du ménage chez SAP dans la BI !</title>
		<link>https://blog.developpez.com/jmalkovich/p12665/business-objects/du-menage-chez-sap-dans-la-bi</link>
		<comments>https://blog.developpez.com/jmalkovich/p12665/business-objects/du-menage-chez-sap-dans-la-bi#comments</comments>
		<pubDate>Fri, 04 Jul 2014 16:04:59 +0000</pubDate>
		<dc:creator><![CDATA[doc malkovich]]></dc:creator>
				<category><![CDATA[bi]]></category>
		<category><![CDATA[business objects]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/jmalkovich/?p=148</guid>
		<description><![CDATA[SAP fait son nettoyage de printemps dans son portefeuille BI. On passe de 14 applications à 5 sur 4 thèmes différents ; on peut appeler ça le grand ménage ! Sans surprise il reste Business Objects et Crystal Reports. Et &#8230; <a href="https://blog.developpez.com/jmalkovich/p12665/business-objects/du-menage-chez-sap-dans-la-bi">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><img src="http://fc04.deviantart.net/fs70/f/2011/086/2/e/nettoyage_de_printemps_by_kiwix-d3ckzb9.jpg" alt="deviantart" /></p>
<p>SAP fait son nettoyage de printemps dans son portefeuille BI.</p>
<p>On passe de 14 applications à 5 sur 4 thèmes différents ; on peut appeler ça le grand ménage !</p>
<p><span id="more-148"></span></p>
<p><a href="http://blog.developpez.com/jmalkovich/files/2014/07/sap-bi-convergence.png"><img src="http://blog.developpez.com/jmalkovich/files/2014/07/sap-bi-convergence-1024x450.png" alt="sap bi convergence" width="584" height="256" class="alignleft size-large wp-image-149" /></a></p>
<p>Sans surprise il reste <strong>Business Objects</strong> et <strong>Crystal Reports</strong>. Et SAP va étoffer le petit nouveau <strong>Lumira </strong>pour qu&rsquo;il puisse enfin être reconnu comme le <em>Qlikview-Killer</em>.</p>
<p>Il est vrai qu&rsquo;on s&rsquo;y perdait dans le portfolio. Certaines applications étaient très simples (comme Explorer) mais un peu limitées, d&rsquo;autres étaient en doublon (Design Studio et Dashboards). Cette convergence des outils va simplifier la vision BI de SAP et le discours aux clients.</p>
<p>Source : <a href="http://blogs.sap.com/analytics/2014/06/25/run-simple-convergence-of-the-sap-businessobjects-bi-product-portfolio/" title="Blog SAP Analytics" target="_blank">SAP</a></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deski vs Webi : les différences</title>
		<link>https://blog.developpez.com/jmalkovich/p9498/business-objects/deski_vs_webi_les_differences</link>
		<comments>https://blog.developpez.com/jmalkovich/p9498/business-objects/deski_vs_webi_les_differences#comments</comments>
		<pubDate>Tue, 16 Nov 2010 12:37:25 +0000</pubDate>
		<dc:creator><![CDATA[doc malkovich]]></dc:creator>
				<category><![CDATA[business objects]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Avec la version XI Business Objects a mis en avant son client léger WebIntelligence. L&#8217;abandon du client lourd étant toujours d&#8217;actualité, on peut être tenté ( ou obligé ) de passer du côté obscur de BO &#8230; Je livre ici &#8230; <a href="https://blog.developpez.com/jmalkovich/p9498/business-objects/deski_vs_webi_les_differences">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Avec la version XI Business Objects a mis en avant son client léger WebIntelligence.<br />
L&rsquo;abandon du client lourd étant toujours d&rsquo;actualité, on peut être tenté ( ou obligé ) de passer du côté obscur de BO &#8230;</p>
<p>Je livre ici mes remarques sur l&rsquo;utilisation des 2 outils ( liste non exhaustive ) :<br />
Version XI r2</p>
<p><span id="more-18"></span></p>
<p>Premier choc &#8230; l&rsquo;interface &#8230; Plus structurée, mais aussi plus lente. On s&rsquo;y perd.<br />
Deuxième choc &#8230; les fonctionnalités &#8230; On ne retrouve plus ses petits, on râle, et peu après on trouve d&rsquo;autres possibilités plus intéressantes &#8230;</p>
<p>Idée reçue dont il faut tordre le cou : Webi n&rsquo;est pas Deski !<br />
Ce n&rsquo;est pas juste une interface web de Deski, c&rsquo;est un outil à part entière.<br />
Il utilise bien les univers BO, il affiche bien des tableaux comme deski, mais c&rsquo;est tout !<br />
Un utilisateur expérimenté du client lourd mettra un certain temps à faire le tour de webi.<br />
On retrouve bien la base de BO, mais un temps d&rsquo;adaptation sera nécessaire.</p>
<p><strong>Avantages de webi :</strong>
<ol>
<li>l&rsquo;ajustement automatique des cellules en largeur et hauteur</li>
<li>la fusion de cellules</li>
<li>on peut afficher facilement les sections vides<br />
  Propriétés / Affichage / Afficher si vide</li>
<li>on peut afficher facilement les cellules vides<br />
  Propriétés / Affichage / Afficher les lignes avec des valeurs de dimension vides<br />
  Propriétés / Affichage / Afficher les lignes avec des valeurs d&rsquo;indicateur vides</li>
<li>la coloration des lignes 1 sur 2</li>
<li>éditeur de filtres + ergonomique<br />
Sous deski par défaut on a juste le filtre sur une ou plusieurs valeurs<br />
Sinon il faut passer par le filtre complexe, qui repose sur une formule<br />
Sous webi les filtres ressemblent aux conditions de l&rsquo;éditeur de requête, c&rsquo;est plus simple.</li>
<li>la synchronisation des objets<br />
Là y&rsquo;a pas à dire, c&rsquo;est quand même bien plus simple en webi !<br />
Sous deski il fallait sélectionner les objets 1 à 1 pour vérifier s&rsquo;ils étaient liés.<br />
Dans webi les objets sont présentés correctement dans une grille.</li>
<li>le palmarès peut se faire directement dans l&rsquo;éditeur sql<br />
Cela optimise les requêtes, les temps de réponse et la volumétrie ramenée</li>
<li>l&rsquo;ajustement des correspondances quand on change d&rsquo;univers<br />
Quand on change d&rsquo;univers sous Deski, les objets non retrouvés ( obsolètes ) sont supprimés<br />
Sous webi on peut sélectionner d&rsquo;autres objets en correspondance.</li>
<li>un poids plus faible des documents webi, même en export pdf ( 50% ) !!!</li>
<li>l&rsquo;éditeur de requêtes : les filtres prédéfinis sont affichés sous les objets, comme ça on ne peut plus dire qu&rsquo;on ne savait pas que ça existait !!!</li>
<li>de nouveaux types de graphiques </li>
<li>des sous-requêtes plus simples à afficher, sans onglet supplémentaire</li>
</ol>
<p><strong>Avantages pour deski :</strong></p>
<ol>
<li>Mise en page &#8211; impression à une échelle<br />
Sous webi il faut jouer sur la taille de la police &#8230;</li>
<li>VBA / macros</li>
<li>le travail en offline</li>
<li>Masquer une cellule<br />
Sous webi il faut jouer à l&rsquo;homme invisible, passer en fond blanc, écriture blanche &#8230;</li>
<li>Regroupement de valeurs<br />
Ca correspond juste à un Si([var] DansListe ( );; ) , mais ça manque &#8230;</li>
<li>les données personnelles ( fichier excel par ex )</li>
<li>SQL à la carte<br />
Il faut passer par des tables dérivées pour webi, il faut des fois rajouter un univers. </li>
<li>Les invites<br />
sous deski on peut réutiliser une invite facilement, l&rsquo;outil propose la liste des invites<br />
sous webi il faut copier/coller le texte de l&rsquo;invite</li>
<li>les images sont incorporées dans le document<br />
Dans webi les images sont sur un serveur web et il faut connaître leurs urls.</li>
<li>On a l&rsquo;historique des exécutions des requêtes, en temps et en nombre de lignes</li>
<li>le tri dans les requêtes</li>
<li>les modèles</li>
<li>la liste de valeurs ( LOV ) d&rsquo;un objet est affichée en une seule fois</li>
</ol>
<p><strong>Les différences :</strong></p>
<ol>
<li>l&rsquo;interface : moins de fenêtres pour webi, toutes les propriétés sont regroupées à gauche.</li>
<li>l&rsquo;éditeur de requêtes : les filtres prédéfinis et les objets sont mélangés</li>
<li>on a des requêtes et non des fournisseurs de données</li>
<li>les formules &#8230;<br />
On n&rsquo;a que des fonctions sous webi, comme SI() au lieu de l&rsquo;expression &laquo;&nbsp;si &#8230; alors&nbsp;&raquo;<br />
Certains y verront un avantage, on retrouve la syntaxe d&rsquo;Excel, l&rsquo;outil bureautique le plus prisé en entreprise.<br />
Par contre certaines formules nécessitent des crochets pour l&rsquo;écriture de certains paramètres, comme les noms des requêtes.</li>
<li>des expressions différentes &#8211; par exemple l&rsquo;opérateur &laquo;&nbsp;Pas égal à&nbsp;&raquo; remplace &laquo;&nbsp;Différent de&nbsp;&raquo;</li>
</ol>
<p><strong>Régressions et bugs de webi / deski :</strong></p>
<ol>
<li>si on change l&rsquo;univers d&rsquo;une requête, toutes les requêtes changent d&rsquo;univers !!!</li>
</ol>
<p><strong>Là ça dépend &#8230;</strong></p>
<ol>
<li>l&rsquo;installation<br />
Le déploiement web est plus facile, les connexions SGBD ne sont à définir que sur les serveurs. La mise à jour de BO est instantanée sur tous les clients. Mais il reste le problème de la version de java ( JVM ). Il est fréquent d&rsquo;avoir plusieurs applis web qui n&rsquo;utilisent pas la même JVM. Et là ça bloque !!!</li>
</ol>
<p>Il y a bien évidemment d&rsquo;autres différences, et les nouvelles versions de BO comme la XI3 et le rich-client comblent de plus en plus les lacunes qui jouaient en l&rsquo;avantage de deski.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Mélange d&#8217;indicateurs agrégés et non agrégés</title>
		<link>https://blog.developpez.com/jmalkovich/p9550/business-objects/melange_d_indicateurs_agreges_et_non_agr</link>
		<comments>https://blog.developpez.com/jmalkovich/p9550/business-objects/melange_d_indicateurs_agreges_et_non_agr#comments</comments>
		<pubDate>Wed, 01 Dec 2010 12:16:37 +0000</pubDate>
		<dc:creator><![CDATA[doc malkovich]]></dc:creator>
				<category><![CDATA[business objects]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[L&#8217;autre jour je suis tombé sur un problème de comptage dans BO. L&#8217;univers contenait des indicateurs agrégés et non agrégés sur la même table. Certains indicateurs étaient agrégés pour question de performance, et d&#8217;autres ne l&#8217;étaient pas pour pouvoir les &#8230; <a href="https://blog.developpez.com/jmalkovich/p9550/business-objects/melange_d_indicateurs_agreges_et_non_agr">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>L&rsquo;autre jour je suis tombé sur un problème de comptage dans BO.<br />
L&rsquo;univers contenait des indicateurs agrégés et non agrégés sur la même table.<br />
Certains indicateurs étaient agrégés pour question de performance, et d&rsquo;autres ne l&rsquo;étaient pas pour pouvoir les mettre en condition sans que BO ne les agrège.<br />
Problème, si on prend les 2 types d&rsquo;indicateurs dans la même requête, un groupement par l&rsquo;indicateur non agrégé se fait <img src="https://blog.developpez.com/jmalkovich/wp-includes/images/smilies/icon_sad.gif" alt=":(" class="wp-smiley" /><br />
<span id="more-19"></span><br />
Un exemple sera plus parlant :<br />
On a une table VENTES</p>
<p><ins></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">VENTES <br />
client &nbsp;montant <br />
TOTO &nbsp; &nbsp;120 <br />
TOTO &nbsp; &nbsp;100 <br />
TITI &nbsp; &nbsp;80 <br />
TITI &nbsp; &nbsp;80</div></div>
<p></ins><br />
et 2 indicateurs :<br />
<ins></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">montant vente=montant <br />
nombre clients=count(distinct client)</div></div>
<p></ins></p>
<p>la requête suivante est bonne :<br />
<ins></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">client, montant <br />
TOTO &nbsp; 220 <br />
TITI &nbsp; 160 <br />
somme &nbsp;380</div></div>
<p></ins></p>
<p>Ainsi que :<br />
<ins></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">nombre clients <br />
2</div></div>
<p></ins></p>
<p>Mais si on prend les 2 indicateurs les résultats sont faux :</p>
<p><ins></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">nombre clients, montant <br />
2 &nbsp; &nbsp; &nbsp;300</div></div>
<p></ins></p>
<p>car on a en SQL</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">select &nbsp;<br />
&nbsp; count(distinct VENTES.client), &nbsp;<br />
&nbsp; VENTES.montant <br />
from VENTES <br />
group by VENTES.montant</div></div>
</blockquote>
<p>Comme quoi il faut être vigilant sur les normes mises en oeuvre sur un univers, et garder les mêmes règles pour tout indicateur. Si on utilise les fonctions d&rsquo;agrégation sur un indicateur ( et cela inclut le count() ), il faut faire de même sur les autres.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Calculs prévisionnels sous Oracle et BO</title>
		<link>https://blog.developpez.com/jmalkovich/p9269/oracle/calculs_previsionnels_sous_oracle_et_bo</link>
		<comments>https://blog.developpez.com/jmalkovich/p9269/oracle/calculs_previsionnels_sous_oracle_et_bo#comments</comments>
		<pubDate>Thu, 14 Oct 2010 12:50:44 +0000</pubDate>
		<dc:creator><![CDATA[doc malkovich]]></dc:creator>
				<category><![CDATA[business objects]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Il existe différentes manières d&#8217;effectuer des prévisions / estimations dans le futur. Certains logiciels facilitent ce type de calcul, notamment ceux spécialisés en datamining ou/et en calculs statistiques comme SAS, Par contre d&#8217;autres comme Business Objects ne le permettent pas. &#8230; <a href="https://blog.developpez.com/jmalkovich/p9269/oracle/calculs_previsionnels_sous_oracle_et_bo">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Il existe différentes manières d&rsquo;effectuer des prévisions / estimations dans le futur.<br />
Certains logiciels facilitent ce type de calcul, notamment ceux spécialisés en datamining ou/et en calculs statistiques comme SAS,<br />
Par contre d&rsquo;autres comme Business Objects ne le permettent pas.<br />
Mais on peut s&rsquo;en passer dans des cas assez simples.<br />
Je propose ici d&rsquo;utiliser certaines fonctions d&rsquo;Oracle qui répondent à ce besoin, et de voir comment les implémenter sous BO.</p>
<p><span id="more-1"></span></p>
<blockquote><p>Problématique :<br />
On a un indicateur annuel, on connait un certain historique et on aimerait estimer les valeurs de cet indicateur dans le futur.</p></blockquote>
<p>Exemple :</p>
<blockquote><p><code class="codecolorer text default"><span class="text">select * from test_regr</span></code></p></blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">ANNEE &nbsp;Y <br />
2007 &nbsp;2 <br />
2008 &nbsp;4 <br />
2009 &nbsp;6 <br />
2010 &nbsp;8</div></div>
<p>Ici on ajoute 2 à Y chaque année, donc on peut prévoir qu&rsquo;en 2011 on aurait Y=10, en 2012 Y=12 etc &#8230;<br />
Evidemment ici on a une suite logique, c&rsquo;est un exemple parfait. </p>
<p>Dans la vraie vie ce n&rsquo;est pas si facile, par exemple on aurait :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">ANNEE &nbsp;Y <br />
2007 &nbsp;1.8 <br />
2008 &nbsp;4.2 <br />
2009 &nbsp;5.7 <br />
2010 &nbsp;8.8</div></div>
<p>On n&rsquo;a pas ici la même différence entre 2 années successives, On ne peut déduire la valeur de 2011 ou 2012 simplement. </p>
<p>Oracle propose des fonctions permettant de calculer une droite de régression. En résumé il s&rsquo;agit d&rsquo;établir une droite qui représenterait la courbe d&rsquo;évolution de l&rsquo;indicateur. </p>
<p><em>Séquence Nostalgie des cours de stats : La méthode s&rsquo;appuie sur le calcul des moindres carrés, je ne vais pas rentrer dans les détails, d&rsquo;autres le faisant mieux que moi comme sur <a href="http://fr.wikipedia.org/wiki/R%C3%A9gression_lin%C3%A9aire">wikipedia</a>.</em><br />
<img src="http://blog.developpez.com/media/regression2.gif" width="300" height="300" alt="graphe_regression" /></p>
<p>L&rsquo;équation de cette droite est du type y= p x + y0, p étant la pente et y0 l&rsquo;ordonnée à l&rsquo;origine.<br />
Sous Oracle la fonction REGR_SLOPE donne la pente, et REGR_INTERCEPT y0.<br />
Une fois qu&rsquo;on les a déterminés on peut estimer une valeur dans le futur en remplaçant x dans l&rsquo;équation.</p>
<p>&#8212; ce qui donne avec l&rsquo;exemple</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">with v as <br />
&nbsp; ( &nbsp; select 2010 annee, 8 y from dual <br />
union select 2009, 6 from dual <br />
union select 2008, 4 from dual <br />
union select 2007, 2 from dual ) <br />
SELECT regr_slope( y, annee ) p, regr_intercept( y, annee ) y0 from v; <br />
&nbsp;<br />
-- p=2 et y0=-4012</div></div>
</blockquote>
<p>estimation pour 2011 :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">y= p * &nbsp;x &nbsp; + &nbsp; y0 <br />
&nbsp;= 2 * 2011 + -4012 <br />
&nbsp;= 10</div></div>
<p>ou en sql :</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">with v as <br />
&nbsp; ( &nbsp; select 2010 annee, 8 y from dual <br />
union select 2009, 6 from dual <br />
union select 2008, 4 from dual <br />
union select 2007, 2 from dual ) <br />
SELECT regr_slope( y, annee )*2011 + regr_intercept( y, annee ) from v;</div></div>
</blockquote>
<p>et le tout en one-shot :</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">with a as <br />
&nbsp; ( select to_char(sysdate,'YYYY') annee from dual union <br />
&nbsp; &nbsp; select to_char(add_months(sysdate,-12),'YYYY') annee from dual union <br />
&nbsp; &nbsp; select to_char(add_months(sysdate,-24),'YYYY') annee from dual union <br />
&nbsp; &nbsp; select to_char(add_months(sysdate,-36),'YYYY') annee from dual union <br />
&nbsp; &nbsp; select to_char(add_months(sysdate,+12),'YYYY') annee from dual union <br />
&nbsp; &nbsp; select to_char(add_months(sysdate,+24),'YYYY') annee from dual union <br />
&nbsp; &nbsp; select to_char(add_months(sysdate,+36),'YYYY') annee from dual <br />
&nbsp; ), v as <br />
&nbsp; ( &nbsp; select 2010 annee, 8 y from dual <br />
union select 2009, 6 from dual <br />
union select 2008, 4 from dual <br />
union select 2007, 2 from dual ) <br />
select <br />
&nbsp; a.annee, &nbsp;<br />
&nbsp; v.y &nbsp;volume, &nbsp;<br />
&nbsp; s.p * a.annee + s.y0 estim <br />
from <br />
&nbsp; v, <br />
&nbsp; ( select regr_slope( y, annee ) p, regr_intercept( y, annee ) y0 from v ) s, <br />
&nbsp; a <br />
where v.annee(+)=a.annee <br />
order by a.annee;</div></div>
</blockquote>
<p>Remarques :</p>
<ul>
<li>intuitivement on a une progression linéaire,<br />
ce qui veut dire que si on sortait le graphe on pourrait tracer une ligne droite pour représenter l&rsquo;évolution de l&rsquo;indicateur.<br />
Sinon les estimations ne donnent pas les bons résultats</li>
<li>les fonctions regr sont des fonctions analytiques, on peut les utiliser comme telles avec la clause over( &#8230; )<br />
cela réduit le nombre de passages sur la table d&rsquo;historique et peut jouer sur les performances</li>
</ul>
<p><strong>SOUS Business Objects :</strong></p>
<p>On trouve bien les fonctions REGR_% dans l&rsquo;éditeur des objets BO du designer<br />
<img src="http://blog.developpez.com/media/regr_editeur_sql_designer.png" width="846" height="408" alt="fonction regr sous BO" /></p>
<p>Mais les contraintes réduisent le champ d&rsquo;action :</p>
<ul>
<li>on peut avoir des sum() en paramètre ( ex : regr_slope( sum( montant ), annee) ), mais la gestion est assez complexe, on mélange 2 fonctions d&rsquo;agrégation et souvent cela pose problème car il manque une colonne dans le GROUP BY du select généré par BO.<br />
On oublie donc cela, et on a déjà des tables agrégées dans l&rsquo;univers.</li>
<li>quand on rajoute des dimensions ( dans l&rsquo;éditeur SQL du rapport ) il faudrait les mettre dans la clause over(partition by (dimensions)) de la formule de l&rsquo;objet dans Designer.<br />
Il faut donc être synchro entre l&rsquo;éditeur de rapport et l&rsquo;univers.</li>
<li>il faut avoir des tables agrégées au grain de la dimension en x. Cela signifie qu&rsquo;on doit avoir une seule valeur dans la table pour un x donné.</li>
</ul>
<p>Par exemple si on a 10 opérations pour une année, on n&rsquo;aura pas d&rsquo;erreur mais les fonctions se feront sur une sorte de moyenne des indicateurs ( au lieu de la somme ).</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">annee &nbsp; montant <br />
2010 &nbsp; &nbsp; &nbsp;2 <br />
2010 &nbsp; &nbsp; &nbsp;4 <br />
2010 &nbsp; &nbsp; &nbsp;6 <br />
2009 &nbsp; &nbsp; &nbsp;4 <br />
--&gt; au lieu de sommer pour 2010 et d'avoir 12, les fonctions regr_%() vont traiter les 4 binômes et donc renvoyer une ligne plate ( y=4 )</div></div>
<p>Cela implique :</p>
<ul>
<li>il faut des tables agrégées au grain de la dimension en x. On peut s&rsquo;en arranger avec des vues ou des tables dérivées qui font les sommes.</li>
<li>il faut exactement les mêmes dimensions dans le fournisseur de données que celles utilisées pour les objets de régression.</li>
<li>si on utilise d&rsquo;autres objets la requête tombera en erreur<br />
Cela peut donc multiplier le nombre de tables et d&rsquo;objets dans l&rsquo;univers.<br />
Il est donc important de bien connaître les besoins au départ, de se limiter à ce périmètre et d&rsquo;expliquer les contraintes aux utilisateurs finaux.</li>
</ul>
<p>En conclusion l&rsquo;implémentation des fonctions Oracle de régression dans BO pour établir un modèle prévisionnel est assez limitée.<br />
Il faut définir l&rsquo;état final et à partir de là définir les objets de l&rsquo;univers en utilisant les fonctions <code class="codecolorer text default"><span class="text">regr_slope()</span></code> et <code class="codecolorer text default"><span class="text">regr_intercept().</span></code><br />
L&rsquo;univers utilisé est un univers technique, on ne pourra créer facilement d&rsquo;autres états prévisionnels à partir de celui-ci. Il faudra généralement à chaque fois créer de nouveaux objets.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Un hint dans BO</title>
		<link>https://blog.developpez.com/jmalkovich/p9387/oracle/un_hint_dans_bo</link>
		<comments>https://blog.developpez.com/jmalkovich/p9387/oracle/un_hint_dans_bo#comments</comments>
		<pubDate>Thu, 14 Oct 2010 12:19:59 +0000</pubDate>
		<dc:creator><![CDATA[doc malkovich]]></dc:creator>
				<category><![CDATA[business objects]]></category>
		<category><![CDATA[optimisations]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Des fois les plans d&#8217;exécution adoptés par le moteur d&#8217;Oracle ne sont pas forcément les meilleurs. Même si les stats à jour, une requête peut mettre un certain temps, voire ne jamais se terminer ! La solution made in DBA &#8230; <a href="https://blog.developpez.com/jmalkovich/p9387/oracle/un_hint_dans_bo">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Des fois les plans d&rsquo;exécution adoptés par le moteur d&rsquo;Oracle ne sont pas forcément les meilleurs.<br />
Même si les stats à jour, une requête peut mettre un certain temps, voire ne jamais se terminer !</p>
<p>La solution made in DBA consiste généralement à rajouter un hint, c&rsquo;est à dire une petite ligne de code pour forcer le plan d&rsquo;exécution.<br />
<span id="more-17"></span></p>
<p>Exemple :</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">SELECT /*+ FULL(SALES) */ <br />
&nbsp; ... <br />
FROM &nbsp;<br />
&nbsp; SALES, &nbsp;<br />
&nbsp; .... <br />
-- ici on ne passe par les index, on lit la table complètement</div></div>
</blockquote>
<p>Pour coder ce hint dans Business Objects, on peut :</p>
<ul>
<li>modifier le sql généré<br />
C&rsquo;est dommage, on perd la fonctionnalité de sql dynamique de BO, avec tous les inconvénients que cela engendre : maintenance difficile, désynchronisation de la requête avec l&rsquo;univers.</li>
<li>modifier la propriété hint de la connexion.<br />
Mais toutes les requêtes seront impactées, ou il faut créer une nouvelle connexion.</li>
<li>créer un nouvel objet</li>
</ul>
<p>Cette dernière solution est à privilégier.<br />
Il suffit de créer un objet technique pointant sur une constante ( 0, 1 ou NULL ), à mettre en 1ère position dans l&rsquo;éditeur de requête.</p>
<p><img src="http://blog.developpez.com/media/bo_hint.gif" width="475" height="401" alt="bo_hint" /></p>
<p>La formule de l&rsquo;objet est </p>
<blockquote><p><code class="codecolorer text default"><span class="text">/*+ FULL(SALES) */ 0</span></code></p></blockquote>
<p>Et on le définit sur la table SALES ( bouton Tables &#8230; ) pour éviter les alertes lors de la vérification de l&rsquo;intégrité de l&rsquo;univers.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sélectionner l&#8217;enregistrement max en une seule fois &#8211; la clause magique keep</title>
		<link>https://blog.developpez.com/jmalkovich/p9315/oracle/selectionner_l_enregistrement_max_en_une</link>
		<comments>https://blog.developpez.com/jmalkovich/p9315/oracle/selectionner_l_enregistrement_max_en_une#comments</comments>
		<pubDate>Thu, 23 Sep 2010 11:48:46 +0000</pubDate>
		<dc:creator><![CDATA[doc malkovich]]></dc:creator>
				<category><![CDATA[business objects]]></category>
		<category><![CDATA[odi / sunopsis]]></category>
		<category><![CDATA[optimisations]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Une problématique récurrente dans les traitements décisionnels est de récupérer le dernier enregistrement d&#8217;une série, par exemple les dernières opérations des clients en ayant en source une table contenant toutes les opérations. Avoir uniquement la dernière date d&#8217;opération est simple, &#8230; <a href="https://blog.developpez.com/jmalkovich/p9315/oracle/selectionner_l_enregistrement_max_en_une">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Une problématique récurrente dans les traitements décisionnels est de récupérer le dernier enregistrement d&rsquo;une série, par exemple les dernières opérations des clients en ayant en source une table contenant toutes les opérations.<br />
<span id="more-36"></span><br />
Avoir uniquement la dernière date d&rsquo;opération est simple, rapide et à portée de tous:</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">/* exemple ** <br />
with operations <br />
as ( &nbsp;<br />
select 1 idclient, sysdate dat, 4 val from dual union all <br />
select 1 idclient, sysdate+1 dat, 8 val from dual union all <br />
select 1 idclient, sysdate+2 dat, 7 val from dual union all <br />
select 2 idclient, sysdate dat, 2 val from dual ) */ <br />
select idclient, max(dat) from operations group by idclient</div></div>
</blockquote>
<p>Par contre si on veut récupérer d&rsquo;autres informations de cet enregistrement, il faut passer par une sous-requête :</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">select idclient, &nbsp;dat, &nbsp;val <br />
from operations a <br />
where a.dat=(select max(b.dat) from operations b where b.idclient=a.idclient )</div></div>
</blockquote>
<p>Le problème est ( entre autres ) qu&rsquo;on passe 2 fois sur la table operations, ce qui dégrade les performances. </p>
<p>Oracle propose depuis la 9i les fonctions analytiques, ce qui est bien pratique pour gérer ce type de problème.<br />
On utilisera par exemple la fonction row_number(), mais on aura toujours une sous-requête :</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">select idclient, dat, val from ( <br />
&nbsp; select idclient, dat, val, <br />
&nbsp; &nbsp; row_number() over(partition by idclient order by dat desc) num <br />
&nbsp; from operations <br />
) <br />
where num=1</div></div>
</blockquote>
<p>Cette solution n&rsquo;est pas forcément simple à implémenter du fait de la sous-requête. Un ETL comme Sunopsis/ODI ne gère pas les sous-requêtes, il faut passer par des vues et du coup on perdra le lien dans l&rsquo;analyse d&rsquo;impact de l&rsquo;outil.<br />
Solution miracle, on a une requête en one-shot avec la clause keep :</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">select idclient, <br />
&nbsp; max(dat), <br />
&nbsp; max(val) keep (dense_rank last &nbsp;order by dat) val <br />
from operations <br />
group by idclient</div></div>
</blockquote>
<p>Cerise sur le gâteau, on peut aussi utiliser ce type de clause dans un univers Business Objects, cela évite de passer par une table dérivée ou du sql en dur.</p>
<p>Que du bonheur.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deski : Chronique d&#8217;une mort retardée</title>
		<link>https://blog.developpez.com/jmalkovich/p9299/business-objects/deski_chronique_d_une_mort_retardee</link>
		<comments>https://blog.developpez.com/jmalkovich/p9299/business-objects/deski_chronique_d_une_mort_retardee#comments</comments>
		<pubDate>Fri, 17 Sep 2010 12:04:18 +0000</pubDate>
		<dc:creator><![CDATA[doc malkovich]]></dc:creator>
				<category><![CDATA[business objects]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Et ils remettent ça &#8230; En cherchant les infos sur la version 4 de BO je suis tombé sur ce document : https://websmp210.sap-ag.de/&#8230;/bobj_deski_eol.pdf qui annonce l&#8217;abandon de Deski dans la prochaine version de BO. Bon, la date du 1er avril &#8230; <a href="https://blog.developpez.com/jmalkovich/p9299/business-objects/deski_chronique_d_une_mort_retardee">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Et ils remettent ça &#8230;</p>
<p>En cherchant les infos sur la version 4 de BO je suis tombé sur ce document : <a href="https://websmp210.sap-ag.de/~sapdownload/011000358700000503952010E/bobj_deski_eol.pdf">https://websmp210.sap-ag.de/&#8230;/bobj_deski_eol.pdf</a> qui annonce l&rsquo;abandon de Deski dans la prochaine version de BO.<br />
Bon, la date du 1er avril peut me faire douter, mais j&rsquo;ai du mal à voir un grand éditeur comme SAP laisser traîner un troll sur son site.</p>
<p>BO nous avait déjà fait le coup avec la 1ère version de XI, ils ne vont quand même pas remettre ça ? Je sais qu&rsquo;aux US Webi domine, mais sur le vieux continent c&rsquo;est différent &#8230;</p>
<p>Je vois dans ma boule de crystal une XI 4 R2 sortir peu de temps après &#8230; mais avec deski <img src="http://www.developpez.net/forums/images/smilies/toine.gif" alt=":-)" title="" /></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google Instant et BI ?</title>
		<link>https://blog.developpez.com/jmalkovich/p9292/business-objects/google_instant_et_bi</link>
		<comments>https://blog.developpez.com/jmalkovich/p9292/business-objects/google_instant_et_bi#comments</comments>
		<pubDate>Thu, 16 Sep 2010 11:49:35 +0000</pubDate>
		<dc:creator><![CDATA[doc malkovich]]></dc:creator>
				<category><![CDATA[bi]]></category>
		<category><![CDATA[business objects]]></category>
		<category><![CDATA[humeurs]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Ces derniers temps Google a lancé &#171;&#160;Instant&#160;&#187; ou la recherche en temps réel. C&#8217;est bluffant, les résultats de la recherche apparaissent au fur et à mesure de la saisie et cela sans ralentissement On se prend à rêver à de &#8230; <a href="https://blog.developpez.com/jmalkovich/p9292/business-objects/google_instant_et_bi">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Ces derniers temps Google a lancé <a href="http://www.developpez.com/actu/20838/Google-inaugure-Instant-la-recherche-instantanee-et-rassure-les-annonceurs-quant-a-son-impact-sur-les-campagnes-de-publicite">&laquo;&nbsp;Instant&nbsp;&raquo;</a> ou la recherche en temps réel.</p>
<p>C&rsquo;est bluffant, les résultats de la recherche apparaissent au fur et à mesure de la saisie et cela sans ralentissement <img src="http://www.developpez.net/forums/images/smilies/calim2.gif" alt="8-o" title="" /></p>
<p>On se prend à rêver à de possibles adaptations à la BI &#8230;<br />
A la sauce Business Objects par exemple, pourquoi pas le résultat des données rafraîchi et affiché en temps réel au fur et à mesure de l&rsquo;édition de la requête en ad-hoc ?<br />
Cela pourrait représenter un gain de temps non négligeable pour les utilisateurs.</p>
<p>Evidemment la technologie derrière devrait suivre, et être performante ( mais si on a déjà un cube OLAP ? )</p>
<p>Mr Google, si vous nous écoutez  &#8230;</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Les invites BO &#8211; part I &#8211; Présentation</title>
		<link>https://blog.developpez.com/jmalkovich/p8940/business-objects/les_invites_bo_part_i_presentation</link>
		<comments>https://blog.developpez.com/jmalkovich/p8940/business-objects/les_invites_bo_part_i_presentation#comments</comments>
		<pubDate>Wed, 26 May 2010 12:03:45 +0000</pubDate>
		<dc:creator><![CDATA[doc malkovich]]></dc:creator>
				<category><![CDATA[business objects]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Les invites sont un élément clé de l’utilisation courante de Business Objects. Elles permettent de passer d’un état rigide à un état dynamique en posant des questions à l’utilisateur qui va ainsi personnaliser les résultats de sa requête. En utilisation &#8230; <a href="https://blog.developpez.com/jmalkovich/p8940/business-objects/les_invites_bo_part_i_presentation">Lire la suite <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Les invites sont un élément clé de l’utilisation courante de Business Objects.<br />
Elles permettent de passer d’un état rigide à un état dynamique en posant des questions à l’utilisateur qui va ainsi personnaliser les résultats de sa requête. En utilisation avancée, elles permettent de paramétrer l’exécution d’un document planifié, générant ainsi plusieurs documents à partir d’un seul.</p>
<p>Tout d’abord, voyons comment insérer une invite dans un document.<br />
<span id="more-11"></span><br />
Par exemple nous avons un état ( très simple ) qui donne le nombre de dossier créés un certain jour. Au lieu de devoir le modifier à chaque fois pour changer la journée dans les conditions de la requête, nous allons mettre une invite qui va demander quelle journée prendre à chaque exécution.</p>
<p>Sous Deski ( client lourd, anciennement reporter ) :<br />
Dans les conditions sur l’objet ( ici Date création ) on sélectionne comme opérateur « Egal à » et comme opérande « Saisir une nouvelle invite ». Il faut ensuite saisir le libellé de l’invite, qui servira aussi de message lors de l’exécution. Les caractères spéciaux comme le ? et les espaces sont autorisés dans le libellé.</p>
<p><img src="http://blog.developpez.com/media/invite_1_1_deski.gif" width="563" height="318" alt="" /></p>
<p>Quand on exécute la requête une popup s’affiche proposant à l’utilisateur de rentrer une valeur pour la date :</p>
<p><img src="http://blog.developpez.com/media/invite_1_2_deski.gif" width="441" height="144" alt="" /></p>
<p>La valeur saisie est alors prise en condition dans la requête et les données ressorties ne concerneront que la journée saisie.</p>
<p>Sous WebIntelligence ( client léger ), dans les conditions sur un objet il faut sélectionner « Invite » en cliquant sur le bouton le plus à droite.<br />
<img src="http://blog.developpez.com/media/invite_1_3_webi.gif" width="414" height="152" alt="" /></p>
<p>En cliquant sur le bouton juste à gauche ( entre la saisie de texte et le bouton le plus à droite ), on accède aux propriétés de l’invite, pour changer son nom, garder la dernière valeur sélectionnée lors de la prochaine exécution ou définir la<br />
valeur par défaut.</p>
<p><img src="http://blog.developpez.com/media/invite_1_4_webi.gif" width="470" height="300" alt="" /></p>
<p>On peut aussi taper le libellé de l’invite directement dans le cadre de saisie après l’opérateur.<br />
Lors de l’exécution une popup apparait invitant l‘utilisateur à saisir une valeur :</p>
<p><img src="http://blog.developpez.com/media/invite_1_5_webi.gif" width="580" height="480" alt="" /></p>
<p>Le fonctionnement est le même lors du rafraichissement du document dans Infoview :<br />
<img src="http://blog.developpez.com/media/invite_1_6_webi_01.gif" width="686" height="444" alt="" /></p>
<p>On peut aussi saisir les valeurs des invites directement dans le volet à gauche du document :<br />
<img src="http://blog.developpez.com/media/invite_1_7_webi.gif" width="444" height="223" alt="" /></p>
<p>Quelques remarques :</p>
<ul>
<li>On peut réutiliser une invite dans la même requête ou dans un autre fournisseur de données en reprenant le même libellé – ainsi l’invite ne sera posée qu’une seule fois à l’exécution.<br />
Sous Deski on peut utiliser l’opérande « Afficher la liste des invites » pour ne pas avoir à retaper le nom, sous Webi il faut effectuer un copier/coller.</li>
<li>On peut utiliser les invites avec tous les opérateurs.</li>
</ul>
<p><strong>La suite ( dans quelques jours ) : Part II, Affichage dans le rapport</strong></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
