<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Jordi Bartual's Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/jbartual/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/jbartual/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 04:02:13 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Blog de Ramon Bosch</title>
      <link>https://docs.microsoft.com/archive/blogs/jbartual/blog-de-ramon-bosch</link>
      <pubDate>Tue, 05 Jun 2007 06:02:00 GMT</pubDate>
      <dc:creator><![CDATA[jbartual]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jbartual/2007/06/05/blog-de-ramon-bosch/</guid>
      <description><![CDATA[Ramon Bosch, quien en su dia llegó a ser profesor mío, luego pasó por las filas de Avanade y de...]]></description>
      <content:encoded><![CDATA[<P>Ramon Bosch, quien en su dia llegó a ser profesor mío, luego pasó por las filas de Avanade y de Microsoft y que a dia de hoy está en Córdoba, Argentina, dirigiendo el barco de Raona. Os recomiendo la visita periódica de su blog, si él recomienda algo... es por que es bueno.</P>
<P>&nbsp;<A href="http://ramonbosch.blogspot.com/">http://ramonbosch.blogspot.com/</A></P>]]></content:encoded>
    </item>
    <item>
      <title>Blogs del equipo de producto de SQL Server</title>
      <link>https://docs.microsoft.com/archive/blogs/jbartual/blogs-del-equipo-de-producto-de-sql-server</link>
      <pubDate>Wed, 28 Feb 2007 17:28:00 GMT</pubDate>
      <dc:creator><![CDATA[jbartual]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jbartual/2007/02/28/blogs-del-equipo-de-producto-de-sql-server/</guid>
      <description><![CDATA[General SQL Server 

Samples team - code samples, mainly for SQL Server 2005 
ISV team 
UE...]]></description>
      <content:encoded><![CDATA[<UL minmax_bound="true">
<LI minmax_bound="true">General SQL Server 
<UL minmax_bound="true">
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/bonniefe/" minmax_bound="true" mce_href="http://blogs.msdn.com/bonniefe/">Samples team</A> - code samples, mainly for SQL Server 2005 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/mssqlisv/" minmax_bound="true" mce_href="http://blogs.msdn.com/mssqlisv/"><FONT color=#0033cc>ISV team</FONT></A> 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/buckwoody/archive/2007/02/14/sql-server-books-online.aspx" minmax_bound="true" mce_href="http://blogs.msdn.com/buckwoody/archive/2007/02/14/sql-server-books-online.aspx"><FONT color=#0033cc>UE team</FONT></A> 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/sqlservercompact/" minmax_bound="true" mce_href="http://blogs.msdn.com/sqlservercompact/"><FONT color=#0033cc>Compact Edition team</FONT></A> 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/sqlexpress/default.aspx" minmax_bound="true" mce_href="http://blogs.msdn.com/sqlexpress/default.aspx"><FONT color=#0033cc>SQL Express team</FONT></A> 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/sqlperf/" minmax_bound="true" mce_href="http://blogs.msdn.com/sqlperf/"><FONT color=#0033cc>Performance team</FONT></A> 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/sqlcat/default.aspx" minmax_bound="true" mce_href="http://blogs.msdn.com/sqlcat/default.aspx"><FONT color=#0033cc>Customer Advisory team</FONT></A> 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/sqlblog/default.aspx" minmax_bound="true" mce_href="http://blogs.msdn.com/sqlblog/default.aspx"><FONT color=#0033cc>Support team</FONT></A> 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/psssql/" minmax_bound="true" mce_href="http://blogs.msdn.com/psssql/"><FONT color=#0033cc>Support team</FONT></A> - another PSS blog, mostly Escalation Services 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/sqltips/default.aspx" minmax_bound="true" mce_href="http://blogs.msdn.com/sqltips/default.aspx"><FONT color=#0033cc>Umachandar Jayachandran</FONT></A> - tips and tricks 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/matt_hollingsworth/default.aspx" minmax_bound="true" mce_href="http://blogs.msdn.com/matt_hollingsworth/default.aspx"><FONT color=#0033cc>Matt Hollingsworth</FONT></A> - HA 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/euanga/default.aspx" minmax_bound="true" mce_href="http://blogs.msdn.com/euanga/default.aspx"><FONT color=#0033cc>Euan Garden</FONT></A> - SQL, VS, ...</LI></UL>
<LI minmax_bound="true">Data Programmability 
<UL minmax_bound="true">
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/data/" minmax_bound="true" mce_href="http://blogs.msdn.com/data/"><FONT color=#0033cc>Data Programmability team</FONT></A> 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/adonet/default.aspx" minmax_bound="true" mce_href="http://blogs.msdn.com/adonet/default.aspx"><FONT color=#0033cc>ADO.NET team</FONT></A>&nbsp;- replaced the <A class="" href="http://blogs.msdn.com/dataaccess/default.aspx" minmax_bound="true" mce_href="http://blogs.msdn.com/dataaccess/default.aspx"><FONT color=#0033cc>Data Access</FONT></A> blog 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/sql_protocols/" minmax_bound="true" mce_href="http://blogs.msdn.com/sql%5Fprotocols/"><FONT color=#0033cc>SQL Protocols team</FONT></A> 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/xmlteam/" minmax_bound="true" mce_href="http://blogs.msdn.com/xmlteam/"><FONT color=#0033cc>XML team</FONT></A> 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/sql_protocols/default.aspx" minmax_bound="true" mce_href="http://blogs.msdn.com/sql_protocols/default.aspx"><FONT color=#0033cc>Protocols team</FONT></A> 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/angelsb/" minmax_bound="true" mce_href="http://blogs.msdn.com/angelsb/"><FONT color=#0033cc>Angel Saenz-Badillos</FONT></A> - JDBC / Lin</LI></UL>
<LI minmax_bound="true">Storage Engine&nbsp; </LI>
<UL>
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/sqlserverstorageengine/" mce_href="http://blogs.msdn.com/sqlserverstorageengine/">Storage Engine team</A> 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/slavao/" minmax_bound="true" mce_href="http://blogs.msdn.com/slavao/"><FONT color=#0033cc>Slava Oks</FONT></A> - SQLOS / memory management 
<LI minmax_bound="true"><A class="" href="http://ssinghal.spaces.live.com/blog/?&amp;_c02_owner=1" minmax_bound="true" mce_href="http://ssinghal.spaces.live.com/blog/?&amp;_c02_owner=1"><FONT color=#0033cc>Saurabh Singhal</FONT></A> - SQLOS 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/lcris/" minmax_bound="true" mce_href="http://blogs.msdn.com/lcris/"><FONT color=#0033cc>Laurentiu Cristofor</FONT></A> - Security 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/raulga/" minmax_bound="true" mce_href="http://blogs.msdn.com/raulga/"><FONT color=#0033cc>Raul Garcia</FONT></A> - Security</LI></UL>
<LI minmax_bound="true">Service Broker 
<UL minmax_bound="true">
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/rogerwolterblog/default.aspx" minmax_bound="true" mce_href="http://blogs.msdn.com/rogerwolterblog/default.aspx"><FONT color=#0033cc>Roger Wolter</FONT></A> - SOA, data management 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/rushidesai/" minmax_bound="true" mce_href="http://blogs.msdn.com/rushidesai/"><FONT color=#0033cc>Rushi Desai</FONT></A> - Service Broker 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/remusrusanu/" minmax_bound="true" mce_href="http://blogs.msdn.com/remusrusanu/"><FONT color=#0033cc>Remus Rusanu</FONT></A> - Service Broker</LI></UL>
<LI minmax_bound="true">Relational Engine 
<UL minmax_bound="true">
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/sqlqueryprocessing/" minmax_bound="true" mce_href="http://blogs.msdn.com/sqlqueryprocessing/"><FONT color=#0033cc>Query Processor team</FONT></A> (replaces the old <A class="" href="http://blogs.msdn.com/QueryOptTeam/" minmax_bound="true" mce_href="http://blogs.msdn.com/QueryOptTeam/"><FONT color=#0033cc>Query Optimizer team</FONT></A> blog) 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/sqlprogrammability/default.aspx" minmax_bound="true" mce_href="http://blogs.msdn.com/sqlprogrammability/default.aspx"><FONT color=#0033cc>Programmability &amp; API Development team</FONT></A> 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/sqlclr/default.aspx" minmax_bound="true" mce_href="http://blogs.msdn.com/sqlclr/default.aspx"><FONT color=#0033cc>CLR Integration team</FONT></A> 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/denisruc/" minmax_bound="true" mce_href="http://blogs.msdn.com/denisruc/"><FONT color=#0033cc>Denis Ruckebusch</FONT></A> - XML datatype 
<LI minmax_bound="true"><A class="" href="http://blogs.technet.com/Lyudmila_Fokina/default.aspx" minmax_bound="true" mce_href="http://blogs.technet.com/Lyudmila_Fokina/default.aspx"><FONT color=#0033cc>Lyudmila Fokina</FONT></A> - various including index builds (in Russian) 
<LI minmax_bound="true"><A class="" href="http://sqljunkies.com/weblog/mrys/" minmax_bound="true" mce_href="http://sqljunkies.com/weblog/mrys/"><FONT color=#0033cc>Michael Rys</FONT></A> - XML, XQuery 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/craigfr/" minmax_bound="true" mce_href="http://blogs.msdn.com/craigfr/"><FONT color=#0033cc>Craig Freedman</FONT></A> - query processing, execution and plans</LI></UL>
<LI minmax_bound="true">Analysis Services / Data Mining 
<UL minmax_bound="true">
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/jamiemac/default.aspx" minmax_bound="true" mce_href="http://blogs.msdn.com/jamiemac/default.aspx"><FONT color=#0033cc>Jamie MacLennan</FONT></A>&nbsp;</LI></UL>
<LI minmax_bound="true">Reporting Services 
<UL minmax_bound="true">
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/jgalla/" minmax_bound="true" mce_href="http://blogs.msdn.com/jgalla/"><FONT color=#0033cc>John Gallardo</FONT></A> 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/bobmeyers/" minmax_bound="true" mce_href="http://blogs.msdn.com/bobmeyers/"><FONT color=#0033cc>Bob Meyers</FONT></A> 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/bwelcker/default.aspx" minmax_bound="true" mce_href="http://blogs.msdn.com/bwelcker/default.aspx"><FONT color=#0033cc>Brian Welcker</FONT></A> 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/lukaszp/" minmax_bound="true" mce_href="http://blogs.msdn.com/lukaszp/"><FONT color=#0033cc>Lukasz Pawlowski</FONT></A> - RS, Notification Services</LI></UL>
<LI minmax_bound="true">Sync Services / Replication 
<UL minmax_bound="true">
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/synchronizer/default.aspx" minmax_bound="true" mce_href="http://blogs.msdn.com/synchronizer/default.aspx"><FONT color=#0033cc>Synchronizer</FONT></A></LI></UL>
<LI minmax_bound="true">SSIS / DTS 
<UL minmax_bound="true">
<LI minmax_bound="true"><A class="" href="http://ssis.wik.is/" minmax_bound="true" mce_href="http://ssis.wik.is/">SSIS Wiki</A> 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/mattm/" minmax_bound="true" mce_href="http://blogs.msdn.com/mattm/"><FONT color=#0033cc>SSIS team</FONT></A></LI></UL>
<LI minmax_bound="true">Manageability / Tools 
<UL minmax_bound="true">
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/sqlrem/" minmax_bound="true" mce_href="http://blogs.msdn.com/sqlrem/"><FONT color=#0033cc>Manageability team</FONT></A> 
<LI minmax_bound="true"><A class="" href="http://blogs.msdn.com/mwories/" minmax_bound="true" mce_href="http://blogs.msdn.com/mwories/"><FONT color=#0033cc>Michiel Wories</FONT></A> - SMO / WMI samples</LI></UL></LI></UL>]]></content:encoded>
    </item>
    <item>
      <title>Minidemo 3: Overview de Analysis Services 2005</title>
      <link>https://docs.microsoft.com/archive/blogs/jbartual/minidemo-3-overview-de-analysis-services-2005</link>
      <pubDate>Tue, 12 Dec 2006 05:34:00 GMT</pubDate>
      <dc:creator><![CDATA[jbartual]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jbartual/2006/12/12/minidemo-3-overview-de-analysis-services-2005/</guid>
      <description><![CDATA[En esta tercera minidemo veremos un overview de Análisis Services. Construiremos un cubo basándonos...]]></description>
      <content:encoded><![CDATA[<P>En esta tercera minidemo veremos un overview de Análisis Services. Construiremos un cubo basándonos en la base de datos de ejemplo AdventureWorksDW y lo mostraremos rápidamente en Excel 2007</P>
<P><STRONG>Creción del cubo</STRONG></P>
<P>Dentro de BI Development Studio creamos un nuevo proyecto de tipo “Analysis Services” que llamaremos “Minidemo3”</P>
<P><STRONG>Data Source</STRONG></P>
<P>El primer paso será crear un origen de datos. Para ello seguiremos los siguientes pasos:</P>
<P>-&nbsp;Botón derecho sobre la carpeta “Data Sources” del panel “Solution Explorer”<BR>-&nbsp;Clic en “New Data Source…”<BR>-&nbsp;Creamos un Nuevo origen de datos hacienda clic en botón “New”<BR>-&nbsp;Utilizando el driver “SQL Native Client” seleccionaremos nuestro servidor de SQL Server 2005 y la base de datos “AdventureWorksDW”<BR>-&nbsp;Clic Next<BR>-&nbsp;Para la demostración utilizaremos la configuración de seguridad “Use the service account”<BR>-&nbsp;Dejaremos como nombre para el origen de datos “Adventure Works DW”</P>
<P><STRONG>Data Source View</STRONG></P>
<P>El siguiente paso será seleccionar un subconjunto de tablas/vistas del origen de datos a utilizar en nuestro cubo. Seguiremos los siguientes pasos:</P>
<P>-&nbsp;Botón derecho sobre la carpeta “Data Source Views” del panel “Solution Explorer”<BR>-&nbsp;Clic en “New Data Source View…”<BR>-&nbsp;Seleccionaremos el Data Source creado en el paso anterior como origen de datos a utilizar para el nuevo Data Source View</P>
<P><BR><STRONG>Selección de tablas</STRONG></P>
<P>Nuestro cubo nos servirá para ver información de las ventas de nuestras tiendas físicas (esto excluye las ventas por Internet). </P>
<P>-&nbsp;Seleccionamos la tabla dbo.FactResellerSales<BR>-&nbsp;Hacemos clic en el botón “Add Related Tables”<BR>-&nbsp;De las tablas resultantes descartamos con el botón “&lt;” las siguientes tablas:<BR>&nbsp;&nbsp;&nbsp; o&nbsp;Dbo.DimPromotion<BR>&nbsp;&nbsp;&nbsp; o&nbsp;Dbo.DimCurrency<BR>-&nbsp;La lista final de tablas seleccionadas es la siguiente:<BR>&nbsp;&nbsp;&nbsp; o&nbsp;Dbo.FactResellerSales<BR>&nbsp;&nbsp;&nbsp; o&nbsp;Dbo.DimProduct<BR>&nbsp;&nbsp;&nbsp; o&nbsp;Dbo.DimReseller<BR>&nbsp;&nbsp;&nbsp; o&nbsp;Dbo.DimTime<BR>&nbsp;&nbsp;&nbsp; o&nbsp;Dbo.DimSalesTerritory<BR>&nbsp;&nbsp;&nbsp; o&nbsp;Dbo.DimEmployee<BR>-&nbsp;Añadimos las tablas dbo.DimProductCategory y dbo.DimProductSubcategory</P>
<P mce_keep="true">Finalmente renombraremos el Data Source View a “Reseller Sales”</P>
<P><BR><STRONG>UDM</STRONG></P>
<P>Los Data Source Views están basados en la tecnología UDM introducida en SQL Server 2005. UDM define una capa semántica de datos desde la que construir nuestro cubo con independencia del origen físico de datos.</P>
<P>UDM nos permite mezclar tablas (o vistas, aunque obviaré este detalle de ahora en adelante) de diferentes orígenes de datos físicos en el mismo modelo semántico sin afectar por ello a la construcción del cubo. Otra posibilidad interesante es la de crear una tabla en el modelo UDM que provenga del resultado de una consulta SQL a un origen de datos. Una ventaja clara de esta característica es la posibilidad de crear una tabla provinente de una consulta que haga un right o left join entre dos o más tablas (algo imposible en un modelo relacional normal donde las relaciones son joints “completos”).</P>
<P>Una vez tenemos las tablas definidas en el modelo podremos modificar sus relaciones según nos convenga.</P>
<P mce_keep="true">Más información en <A href="http://msdn2.microsoft.com/en-us/library/ms345143.aspx">http://msdn2.microsoft.com/en-us/library/ms345143.aspx</A></P>
<P><BR><STRONG>Cubos</STRONG></P>
<P>Llega el momento de definir nuestro cubo. Para ello seguiremos los siguientes pasos:</P>
<P>-&nbsp;Clic con el botón derecho sobre la carpeta “Cubes” del panel “Solution Explorer”<BR>-&nbsp;Seleccionamos “New Cube…”<BR>-&nbsp;Dejaremos seleccionada la opción por defecto que genera el cubo a partir de un data source, construye los atributos y detecta las jerarquías.<BR>-&nbsp;Utilizaremos el Data Source View definido en el paso anterior “Reseller Sales”<BR>-&nbsp;En la pantalla “Identify Fact and Dimension Tables” seleccionaremos la tabla DimTime como tabla de tiempo y nos aseguraremos que únicamente la tabla “dbo.FactResellerSales” está seleccionada como tabla de hechos.</P>
<P>-&nbsp;En la pantalla “Select Time Periods” emparejaremos los siguientes valores:<BR>&nbsp;&nbsp;&nbsp; o&nbsp;Year = CalendarYear<BR>&nbsp;&nbsp;&nbsp; o&nbsp;Half Year = CalendarSemester<BR>&nbsp;&nbsp;&nbsp; o&nbsp;Quarter = CalendarQuarter<BR>&nbsp;&nbsp;&nbsp; o&nbsp;Month = EnglishMonthName<BR>&nbsp;&nbsp;&nbsp; o&nbsp;Date = FullDateAlternateKey</P>
<P mce_keep="true">-&nbsp;En la pantalla “Select Measures” deseleccionaremos la entradas correspondientes a:<BR>&nbsp;&nbsp;&nbsp; o&nbsp;Promotion Key<BR>&nbsp;&nbsp;&nbsp; o&nbsp;Currency Key<BR>&nbsp;&nbsp;&nbsp; (Correspondientes a las tablas no incluidas en la Data Source View)</P>
<P>El resto de entradas quedaron seleccionadas como aparecen por defecto.</P>
<P mce_keep="true"><BR>-&nbsp;En la pantalla “Review New Dimensions” podemos elegir que dimensiones y atributos se incluirán en el cubo. En esta demo no necesitaremos el atributo “Large Photo” de la dimensión “Product” y por tanto lo deseleccionaremos.</P>
<P mce_keep="true">-&nbsp;Como último paso aceptaremos el nombre “Reseller Sales” como nombre del cubo.<BR>&nbsp;<BR><STRONG>Edición del cubo</STRONG></P>
<P>El primer paso que hemos de hacer antes de alterar nuestro cubo es procesarlo. Para ello haremos clic con el botón derecho sobre el nombre del cubo en el panel “Solution Explorer” y seleccionaremos la opción “Process…” (en la nueva pantalla que nos aparece haremos clic en el botón “Run...”)</P>
<P><STRONG>Jerarquías</STRONG></P>
<P>La primera edición que haremos del cubo será crear una nueva jerarquía de atributo dentro de una dimensión. Para ver los efectos de la edición del cubo de manera más gráfica haremos una exploración del cubo desde la pestaña Browser. Arrastraremos la medida “Sales Amount” al centro de la pantalla y luego añadiremos, al nivel de las filas, la jerarquía autodetectada “Dim Porduct Category – Dim Product Subcategory”.</P>
<P>Si expandimos los registros de las filas nos daremos cuenta que no vemos más que números, presumiblemente IDs de categoría, subcategoría y producto. Para tener una navegación más legible crearemos una nueva jerarquía de atributos de la dimensión “Dim Product” en la que aparezcan los nombres de las categorías, subcategorías y nombres de producto respectivamente.</P>
<P>-&nbsp;En la pestaña Cube Structure expandiremos la carpeta “Dim Product” del panel “Dimensions”.<BR>-&nbsp;Seleccionaremos la opción “Edit Dim Product”<BR>-&nbsp;En la nueva pantalla arrastraremos las siguientes medidas dentro de una jerarquía nueva:<BR>&nbsp;&nbsp;&nbsp; o&nbsp;English Product Categroy Name<BR>&nbsp;&nbsp;&nbsp; o&nbsp;English Product Subcategory name<BR>&nbsp;&nbsp;&nbsp; o&nbsp;English Product Name</P>
<P mce_keep="true">-&nbsp;Podemos llamar a la nueva jerarquía con el nombre “English Product Category – Subcategory – Name”</P>
<P>Si volvemos a la pestaña Browser y utilizamos la nueva jerarquía en lugar de la antigua comprobaremos que ahora ya podemos navegar la información del cubo de una manera más sencilla e intuitiva.</P>
<P>&nbsp;&nbsp;<BR><STRONG>KPI</STRONG></P>
<P>Para demostrar la funcionalidad de las KPI necesitamos hacer unos cuantos cambios al cubo que hemos creado, así demostramos también la alta flexibilidad del producto </P>
<P>Adición de una nueva tabla de hechos: <U>FactSalesQuota</U></P>
<P>-&nbsp;Volvemos al “Data Source View” Reseller Sales<BR>-&nbsp;Botón derecho sobre el area de trabajo y seleccionamos la opción “Add/Remove Tables…”<BR>-&nbsp;De la lista de tablas que nos aparece seleccionaremos “dbo.FactSalesQuota” y la añadiremos a las tablas seleccionadas.<BR>-&nbsp;Saltamos al cubo, pestaña Cube Structure<BR>-&nbsp;En el panel “Measures” hacemos botón clic derecho sobre el nodo raíz, “Reseller Sales” y seleccionamos la opción “New Measure Group”<BR>-&nbsp;En la nueva pantalla que aparece seleccionaremos la tabla “FactSalesQuota”. Esto creará un nuevo grupo de medidas para la nueva tabla de hechos y añadirá esta al cubo automáticamente.</P>
<P>Cambio de nombre de la jerarquía detectada en la dimensión DimTime</P>
<P>-&nbsp;Manteniéndonos en la pestaña Cube Structure expandiremos la dimensión Dim Time en el panel “Dimensions” y haremos clic en la opción Edit Dim Time<BR>-&nbsp;Renombraremos la jerarquía automáticamente detectada por SSAS a “Calendar Time”. Esto nos permitirá una edición más cómoda de la KPI que vamos a crear.</P>
<P>Con esto haremos un nuevo deploy del cubo y así propagar los cambios al servidor y poderlos utilizar en otras partes del proyecto.</P>
<P><STRONG>Creación de la KPI “Reseller Sales”</STRONG></P>
<P>-&nbsp;Nos dirigiremos a la pestaña KPIs<BR>-&nbsp;Botón derecho sobre el área KPI Organizar y seleccionamos la opción “New KPI”<BR>&nbsp;<BR>-&nbsp;La KPI tendrá los siguientes valores:<BR>&nbsp;&nbsp;&nbsp; o&nbsp;Nombre: Reseller Sales<BR>&nbsp;&nbsp;&nbsp; o&nbsp;Associated measures group: &lt;All&gt;<BR>&nbsp;&nbsp;&nbsp; o&nbsp;Value Expresion: [Measures].[Sales Amount]<BR>&nbsp;&nbsp;&nbsp; o&nbsp;Goal Expression: [Measures].[Sales Amount Quota]<BR>&nbsp;&nbsp;&nbsp; o&nbsp;Status:</P>
<BLOCKQUOTE>
<P>Case<BR>&nbsp;&nbsp;&nbsp; When [Measures].[Sales Amount] &gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Measures].[Sales Amount Quota]<BR>&nbsp;&nbsp;&nbsp; Then 1 <BR>&nbsp;&nbsp;&nbsp; When [Measures].[Sales Amount] &gt;=<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .90 * ( [Measures].[Sales Amount Quota] )<BR>&nbsp;&nbsp;&nbsp; Then .5 <BR>&nbsp;&nbsp;&nbsp; When [Measures].[Sales Amount] &gt;= <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .80 * ( [Measures].[Sales Amount Quota] ) <BR>&nbsp;&nbsp;&nbsp; Then 0<BR>&nbsp;&nbsp;&nbsp; When [Measures].[Sales Amount] &gt;= <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .70 * ( [Measures].[Sales Amount Quota] ) <BR>&nbsp;&nbsp;&nbsp; Then -.5<BR>&nbsp;&nbsp;&nbsp; Else -1<BR>End</P></BLOCKQUOTE>
<P>&nbsp;&nbsp;&nbsp; o&nbsp;Trend</P>
<BLOCKQUOTE>
<P>Case<BR>&nbsp;&nbsp;&nbsp; When IsEmpty([Dim Time].[Calendar Time].PrevMember) <BR>&nbsp;&nbsp;&nbsp; Then 1<BR>&nbsp;&nbsp;&nbsp; When [Measures].[Sales Amount] &gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ( [Dim Time].[Calendar Time].PrevMember, <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Measures].[Sales Amount Quota] )<BR>&nbsp;&nbsp;&nbsp; Then 1 <BR>&nbsp;&nbsp;&nbsp; When [Measures].[Sales Amount] &gt;=<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .95 * ( [Dim Time].[Calendar Time].PrevMember, <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Measures].[Sales Amount Quota] )<BR>&nbsp;&nbsp;&nbsp; Then .5 <BR>&nbsp;&nbsp;&nbsp; When [Measures].[Sales Amount] &gt;= <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .90 * ( [Dim Time].[Calendar Time].PrevMember, <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Measures].[Sales Amount Quota] )<BR>&nbsp;&nbsp;&nbsp; Then 0<BR>&nbsp;&nbsp;&nbsp; When [Measures].[Sales Amount] &gt;= <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .85 * ( [Dim Time].[Calendar Time]].PrevMember, <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Measures].[Sales Amount Quota] )<BR>&nbsp;&nbsp;&nbsp; Then -.5<BR>&nbsp;&nbsp;&nbsp; Else -1<BR>End</P></BLOCKQUOTE>
<P>Si examinamos las sentencias veremos que el objetivo es comparar el valor de las ventas contra el valor de la cuota, tanto en el valor presente como aquel en valores pasados.</P>
<P>Ahora ya podemos hacer otro deploy del cubo y hacer una primera visualización en el visor que nos viene incluido en SQL Server 2005.<BR>&nbsp;<BR>&nbsp;<BR><STRONG>Visualización del cubo en Excel 2007</STRONG></P>
<P>En Excel 2007 haremos una rápida visualización de los datos contenidos en el cubo. Para ello nos conectaremos a un origen de datos Analisys Services y consultaremos el cubo Reseller Sales de la base de datos Minidemo3.</P>
<P>-&nbsp;Abrimos Excel 2007<BR>-&nbsp;Clic en la pestaña Data<BR>-&nbsp;Seleccionamos “From Analysis Services” del menú “From Other Sources”<BR>-&nbsp;Introducimos el nombre de nuestro servidor<BR>-&nbsp;En la pantalla “Select Database and Table” seleccionamos la base de datos “Minidemo3” y el cubo “Reseller Sales”<BR>-&nbsp;Avanzamos hasta el final de los wizards</P>
<P>-&nbsp;Una vez podamos seleccionar las medidas y dimensiones seleccionaremos los siguientes valores:</P>
<P>&nbsp;&nbsp;&nbsp; o&nbsp;De “Fact Reseller Sales” : Sales Amount<BR>&nbsp;&nbsp;&nbsp; o&nbsp;De “Dim Product”: English Product Category – Subcategory – Name<BR>&nbsp;&nbsp;&nbsp; o&nbsp;De “Dim Sales Territory”: Dim Sales Territory.Sales Territory country</P>
<P>-&nbsp;Movemos el ultimo valor seleccionado a la casilla “Columns”<BR>-&nbsp;Como último paso podemos seleccionar los valores numéricos y aplicarles el formato “currency”</P>
<P><BR><STRONG>Nota Final</STRONG>: Para perfeccionar la demo os sugiero que renombréis las medidas y dimensiones para que tengan nombres “más humanos”. Igualmente en la visualización mediante Excel 2007 estaría bien demostrar las capacidades BI de visualización de datos de Excel 2007.<BR></P>]]></content:encoded>
    </item>
    <item>
      <title>Minidemo 2: Report Builder</title>
      <link>https://docs.microsoft.com/archive/blogs/jbartual/minidemo-2-report-builder</link>
      <pubDate>Wed, 29 Nov 2006 11:25:00 GMT</pubDate>
      <dc:creator><![CDATA[jbartual]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jbartual/2006/11/29/minidemo-2-report-builder/</guid>
      <description><![CDATA[En esta segunda minidemo nos centraremos en la funcionalidad de Reporting Services 2005 de capacitar...]]></description>
      <content:encoded><![CDATA[<P>En esta segunda minidemo nos centraremos en la funcionalidad de Reporting Services 2005 de capacitar al usuario final con la posibilidad de construirse sus propios informes. Para ello, este usuario utilizará la herramienta que conocemos con el nombre de Report Builder que a su vez se alimentará de un “modelo de datos” previamente definido por un desarrollador.</P>
<P>El informe objetivo será el mismo que en la minidemo 1, es decir la tabla que podemos encontrar al final del informe de ejemplo Employee Sales Summary de Adventure Works.</P>
<P><STRONG>Definición del “modelo de datos”</STRONG></P>
<P>Crearemos un nuevo proyecto en BI Development Studio del tipo “Report Model Project” con el nombre “My Report Models” (Este proyecto nos puede servir de base para múltiples modelos de datos)</P>
<P>Los modelos de datos se estructuran en 3 tipos de objetos:</P>
<P>1.&nbsp;<U>Data Sources</U>: Definen el origen de los datos.<BR>2.&nbsp;<U>Data Source Views</U>: Del conjunto de tablas y vistas disponibles en el origen de datos, un data source view acota con que tablas y vistas vamos a trabajar. Una vez seleccionadas las tablas y/o vistas podremos alterar su estructura en el data source view sin alterar el origen de datos.<BR>3.&nbsp;<U>Report Models</U>: Definen el modelo de datos que el usuario utilizará para crear su informe. Los report models se basan en “data source views” y al igual que estos también pueden alterar la estructura de las tablas/vistas sin afectar ni al origen de datos ni al data source view.</P>
<P><STRONG>Data Source</STRONG></P>
<P>-&nbsp;El primer paso será crear un “Data Source”. Para ello haremos clic con el botón derecho sobre la carpeta “Data Sources” del panel “Solution Explorer” y seguiremos el wizard para crear una conexión a la base de datos AdventureWorks de nuestro servidor SQL Server 2005.</P>
<P><STRONG>Data Source View</STRONG></P>
<P>-&nbsp;Para crear un “Data Source View” haremos clic derecho sobre la carpeta “Data Source Views” del panel “Solution Explorer”.<BR>&nbsp;&nbsp;&nbsp; o&nbsp;Utilizaremos el “Data Source” creado anteriormente como origen de datos.<BR>&nbsp;&nbsp;&nbsp; o&nbsp;Seleccionaremos las siguientes tablas para incluir dentro del “Data Source View”:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; · Sales.SalesPerson<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·&nbsp;Sales.SalesOrderHeader<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·&nbsp;Sales.SalesOrderDetail<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·&nbsp;Production.ProductSubcategory<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·&nbsp;Production.ProductCategory<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·&nbsp;Production.Product<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·&nbsp;Person.Contact<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·&nbsp;HumanResources.Employee</P>
<P mce_keep="true">-&nbsp;Llamaremos a la vista de datos “Product Sales by Employee and Product Category”</P>
<P><BR>Una vez creado el Data Source View lo abriremos para crear una relación inexistente en el origen de datos para las tablas escogidas.</P>
<P>-&nbsp;Doble clic en el Data Source View “Product Sales by Employee and Product Category”<BR>-&nbsp;De la tabla “SalesOrderDetail” seleccionamos el campo “ProductID”<BR>-&nbsp;Arrastramos el campo hasta el campo “ProductID” de la tabla “Product”<BR>-&nbsp;Para asegurarnos que la relación se ha creado correctamente haremos doble clic sobre la nueva relación creada y chequearemos que la relación haya sido creada correctamente.</P>
<P mce_keep="true">Nota: En este punto es bueno demostrar las diferentes capacidades de personalización que podemos hacer en un Data Source View como eliminar columnas o tablas, cambiar su nombre, crear o eliminar relaciones, añadir tablas desde cualquier origen de datos definido en el proyecto directamente o mediante una consulta, etc.<BR>&nbsp;<BR><STRONG>Report Model</STRONG></P>
<P>En este paso crearemos el modelo de datos utilizable por el usuario final para construirse sus propios informes.</P>
<P>-&nbsp;El primer paso será crear el “report model”. Para ello haremos clic derecho sobre la carpeta “Report Models” del panel “Solution Explorer” y seleccionaremos la opción “Add New Report Model”<BR>-&nbsp;Seleccionaremos el “Data Source View” anteriormente creado como base para la construcción del nuevo report model.<BR>-&nbsp;En la pantalla “Select report model generation rules” dejaremos todas las opciones por defecto y nos aseguraremos que el selector “Select model language” está configurado a “English (United States)”<BR>-&nbsp;En la pantalla “Collect Model Statistics” dejaremos la opción por defecto “Update model statistics before generating”<BR>-&nbsp;En la siguiente pantalla podemos cambiar el nombre del modelo a “Employee Sales Summary” y hacemos clic en el botón Run</P>
<P>Una vez creado el modelo ya podríamos publicarlo y dejar que los usuarios lo utilizaran, pero en lugar de eso lo editaremos para ver cuales son algunas de las posibilidades que nos ofrece Reporting Services.</P>
<P><U>Organización de entidades en carpetas</U></P>
<P>Los modelos de datos están formados por entidades que contienen atributos y relacionadas entre si mediante roles. Las entidades las podemos organizar con carpetas para ayudar al usuario final a identificar mejor las entidades. En este ejemplo crearemos 3 carpetas: Sales, Product y Employee</P>
<P>La manera de crear una carpeta es la siguiente:</P>
<P>-&nbsp;Clic con el botón derecho sobre “Model” en el panel “Report model” (normalmente el panel de la izquierda)<BR>-&nbsp;Seleccionamos New  Folder<BR>-&nbsp;Movemos las entidades a la nueva carpeta creada y renombramos la carpeta.<BR>-&nbsp;La estructura ha crear es la siguiente:<BR>&nbsp;&nbsp;&nbsp; o&nbsp;Product<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·&nbsp;Product<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·&nbsp;Product Category<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·&nbsp;Product Subcategory<BR>&nbsp;&nbsp;&nbsp; o&nbsp;Sales<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·&nbsp;Sales Order Header<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·&nbsp;Sales Order Detail<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·&nbsp;Sales Person<BR>&nbsp;&nbsp;&nbsp; o&nbsp;Employee<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·&nbsp;Employee<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ·&nbsp;Contact</P>
<P mce_keep="true">En este punto demostraremos otras funcionalidades como pueden ser ocultación/eliminación de atributos/roles, creación de carpetas dentro de entidades, creación de nuevos atributos mediante composición de otros atributos (por ejemplo con la concatenación de dos atributos), cambio de nombre, etc…</P>
<P>Una práctica muy utilizada para la ocultación masiva de atributos es la de crear una carpeta dentro de una entidad, mover todos aquellos atributos y roles que queramos ocultar y finalmente configurar el atributo “Hide” de la carpeta a “true”.</P>
<P mce_keep="true">Una vez finalizada la edición del modelo de datos ya estamos preparados para hacer un deploy y demostrar la funcionalidad de la herramienta cliente, el Report Builder.<BR>&nbsp;<BR><STRONG>Report Builder</STRONG></P>
<P>Report Builder es una herramienta cliente creada utilizando la tecnología “ClickOnce” que nos permite almacenar una aplicación en un servidor web IIS. Mediante un link el usuario final podrá acceder a la aplicación, que se instalará en su máquina cliente automáticamente. Cada vez que el usuario inicie una nueva sesión con la aplicación, esta chequeará que no haya una nueva versión disponible en el servidor.</P>
<P>Para acceder al Report Builder no tenemos más que hacer clic en la opción de menú “Report Builder” que se muestra en la interfaz web “Report Manager” o acceder a la URL <A href="http://<servername>/ReportServer/ReportBuilder/ReportBuilder.application">http://&lt;server<U>name&gt;/ReportServer/ReportBuilder/ReportBuilder.application</A></U></P>
<P>-&nbsp;Seleccionamos “Employee Sales Sumary”<BR>-&nbsp;Seleccionamos el atributo “Sales Order Number” de la entidad “Sales Order Header” en la carpeta “Sales”. Arrastramos el atributo al área principal de diseño<BR>-&nbsp;El siguiente atributo a añadir será “Name” de la entidad “Product Category” (accesible navegando a través de “Sales Order Details”&nbsp;-&gt; “Product”&nbsp;-&gt; “Product Subcategory”&nbsp;-&gt; “Product Category”)<BR>-&nbsp;El último atributo a añadir será “Total Line Total” en la entidad raíz “Sales Order Detail”</P>
<P>Si intentamos ejecutar el informe, Reporting Services nos informará que es necesario un filtro para ello.</P>
<P><STRONG>Definición de un filtro</STRONG></P>
<P>Definiremos los mismos filtros que teníamos en la Minidemo 1, es decir, Año y mes de pedido y empleado.</P>
<P>-&nbsp;Clic en el botón “Filter” del menú superior<BR>-&nbsp;De la entidad “Sales Order” expandimos el atributo “Order Date”<BR>-&nbsp;Arrastramos al área de la derecha los campos “Order Year” y “Order Month”<BR>-&nbsp;Añadiremos el campo “Last Name” de la entidad “Contact” que encontraremos navegando por las entidades “Sales Order Detail”&nbsp;-&gt; “Sales Order”&nbsp;-&gt; “Sales Person”&nbsp;-&gt; “Sales Person”&nbsp;-&gt; “Contact”<BR>-&nbsp;Cada una de las propiedades la configuraremos para que el usuario final sea quien informe de su valor. Botón derecho en el nombre de cada filtro y seleccionamos la opción “Prompt”.</P>
<P>Aplicaremos el formato “Currency” a la columna “Sales” seleccionando las tres casillas y accediendo a la opción “Format” mediante el botón derecho. En la nueva pantalla seleccionaremos el formato correspondiente a moneda.</P>
<P>Ahora ya estamos listos para ejecutar el informe y comprobar su funcionamiento. Los valores a utilizar para los parámetros son:<BR>-&nbsp;Order Year = 2003<BR>-&nbsp;Order Month = 12<BR>-&nbsp;Last Name = Campbell</P>
<P mce_keep="true">&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Minidemo 1: Overview de Reporting Services 2005</title>
      <link>https://docs.microsoft.com/archive/blogs/jbartual/minidemo-1-overview-de-reporting-services-2005</link>
      <pubDate>Tue, 28 Nov 2006 04:48:00 GMT</pubDate>
      <dc:creator><![CDATA[jbartual]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jbartual/2006/11/28/minidemo-1-overview-de-reporting-services-2005/</guid>
      <description><![CDATA[Primer guión de una serie que les llamaremos Minidemos. Cada minidemo demostrará un aspecto en...]]></description>
      <content:encoded><![CDATA[<P>Primer guión de una serie que les llamaremos Minidemos. Cada minidemo demostrará un aspecto en concreto de un producto o será un rápido overview de sus principales características. Todas las minidemos funcionarán con los datos de ejemplo incluidos en los productos tratados.</P>
<P>En esta primera minidemo veremos un overview de Reporting Services. El objetivo es mostrar rápidamente las principales caracteristicas del servidor de informes incluido en SQL Server 2005.</P>
<P>- Abrir IE e ir al servidor de informes (normalmente <A href="http://servername/reports" mce_href="http://servername/reports">http://servername/reports</A>). En esta pantalla explicaremos las características de la interfaz web:</P>
<BLOCKQUOTE>
<P>-&nbsp;Los informes se organizan en carpetas, al igual que lo hacen los ficheros en directorios en el sistema de ficheros.<BR>-&nbsp;La interfaz web no es más que un ejemplo de una aplicación renderizando los contenidos del servidor de informes. Cualquiera puede generarse su propia interfaz.</P></BLOCKQUOTE>
<P>- Hacer click en la carpeta “Adventure Works”. Dentro de esta carpeta nos encontramos con 7 informes de ejemplo creados por Microsoft.</P>
<P><STRONG>Seleccionar el informe llamado “Product Line Sales”</STRONG></P>
<P>-&nbsp;Explicar la funcionalidad de los parámetros. En este informe la lista de valores del parámetro “Subcategory” depende del valor seleccionado en el parámetro “Category”. Demostraremos la funcionalidad cambiando el valor en el parámetro “Category” y mostrando los valores diferentes en “Subcategory” así como la funcionalidad de selección múltiple.<BR>-&nbsp;Volveremos a los valores originales: Category = Bikes, Subcategory = Road Bikes.<BR>-&nbsp;Abrir los controles de calendario y mostrar la funcionalidad del control. Ya no es necesario entrar una fecha a mano o extender RS para soportar un control de calendario. Ahora ya viene incluido.<BR>-&nbsp;Por último hablar de las características de paginación (no aplicables a este informe), zoom, búsqueda, exportación (podemos hacer la prueba de exportar a PDF) e impresión (nuevo control propio de RS que mejora la impresión respecto a la impresión normal de IE)</P>
<P>- Mostrar y comentar el informe completo. Hacer click en “Campbell, David”. Esto nos llevará al informe “Employee Sales Summary”, demostrando así la posibilidad de linkar diferentes informes entre sí.<BR>&nbsp;<BR><STRONG>Employee Sales Summary</STRONG></P>
<P>&nbsp;- Este informe muestra las ventas realizadas por empleado. Al final del informe se nos muestra una tabla con 3 columnas (Order Number, Product Category, Sales). Características de la tabla:</P>
<BLOCKQUOTE>
<P>-&nbsp;La columna Order Number está enlazada con el informe “Sales Order Details”<BR>-&nbsp;Cada orden/pedido está agrupada por categoría de producto y contiene un subtotal<BR>-&nbsp;Al final de la tabla tenemos un total de todos los pedidos.</P></BLOCKQUOTE>
<P>Este será el informe que generaremos en nuestra demostración.<BR>&nbsp;<BR><STRONG>SQL BI Development Studio</STRONG></P>
<P>&nbsp;- Abrimos la solución de ejemplo de Adventure Works, normalmente la encontraremos en la ruta C:\Program Files\Microsoft SQL Server\90\Samples\Reporting Services\Report Samples\AdventureWorks Sample Reports</P>
<P>- Seleccionamos el informe “Employee Sales Summary”. Aquí mostraremos las diferentes partes de las que está compuesto un informe:</P>
<P>-&nbsp;Pestaña Data: Consultas a origenes de datos que contruyen datasets. Utilizando estos datasets mostraremos datos en los informes.<BR>-&nbsp;Pestaña Layout: Diseñador gráfico de informes. Mostrar la lista de controles disponibles para formatear los datos (Toolbox a la izquierda de la pantalla)<BR>-&nbsp;Peestaña Preview: El desarrollador puede ver el aspecto final del informe sin necesidad de hacer un deploy a un servidor de Reporting Services fuera de su máquina.<BR>&nbsp;<BR><STRONG>Creación de nuestro informe de ejemplo</STRONG></P>
<P>En la misma solución creamos un nuevo informe sin utilizar el wizard (botón derecho sobre Reports. Add -&gt; New Item. Seleccionar de tipo Report).</P>
<P>- El primer paso será crear un nuevo dataset. Este dataset será el que alimentará de datos nuestra tabla objetivo:</P>
<P>-&nbsp;En la pestaña Data  Desplegable Dataset: Seleccionamos &lt;New Dataset&gt;<BR>-&nbsp;Nombre: EmpSalesDetails<BR>-&nbsp;Query: Copiaremos la utilizada en el dataset EmpSalesDetails del informe “Employee Sales Summary” de la misma solución.<BR>-&nbsp;Ejecutaremos la query para comprobar su funcionamiento. Utilizaremos los siguiente valores como parámetros:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; o&nbsp;Report Year = 2003<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; o&nbsp;Report Month = 12<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; o&nbsp;EmpID = 283 (ID para David Campbell)</P>
<P>- El siguiente paso será crear una tabla en la pestaña Layout y utilizar los campos creados en el dataset</P>
<P>-&nbsp;En la pestaña Layout --&gt;&nbsp;Toolbox: Arrastramos un objeto de tipo Table al área principal de diseño.<BR>-&nbsp;Escribimos en la casillas superiores Sales Order, Product Category y Sales respectivamente<BR>-&nbsp;En las casillas a mitad de tabla arrastramos los siguientes campos del dataset:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; o&nbsp;SalesOrderNumber en la columna Sales Order<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; o&nbsp;ProdCat en la columna Product Category<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; o&nbsp;Sales en la columna Sales</P>
<P mce_keep="true">En este punto haremos el primer preview del informe. A partir de ahora iremos retocando el informe hasta darle el aspecto y la funcionalidad deseada.<BR>&nbsp;<BR><STRONG>Parámetros</STRONG></P>
<P>Para facilitar la ejecución del informe por parte del usuario daremos valores a los parámetros para que el usuario seleccione un valor, en lugar de introducirlo a mano.</P>
<P>Volvemos a la pestaña Data:</P>
<P>-&nbsp;En el menu superior de Visual Studio seleccionamos Report  Report Parameters<BR>-&nbsp;Para el parámetro Report Year introduciremos los valores 2003, 2002 y 2001 (con identica etiqueta) en el apartado Available values<BR>-&nbsp;Para el parámetro Report Month introduciremos los valores de ejemplo 12, 11 y 10 (con las etiquetas Diciembre, Novimbre y Octubre respectivamente)</P>
<P mce_keep="true">Para el parámetro EmpID en lugar de proporcionar los valores a mano como en los anteriores haremos una consulta a la base de datos y alimentaremos los valores y etiquetas con los registros devueltos.<BR>&nbsp;<BR>-&nbsp;Hacemos click en Ok para salir de la pantalla de Report Parameters<BR>-&nbsp;Crearemos un nuevo Dataset con el nombre SalesEmp y copiaremos la query del dataset del mismo nombre del informe “Employee Sales Summary”<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; o&nbsp;Esta query devuelve dos columnas, la primera con el ID del empleado y la segunda con el nombre y apellidos.</P>
<P>Report Parameters (Menu superior: Reports  Report Parameters)</P>
<P>-&nbsp;Seleccionar EmpID<BR>-&nbsp;En el apartado “Available Values” seleccionar “From query”<BR>-&nbsp;Configurar los diferentes campos con los siguientes valores:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; o&nbsp;Dataset = SalesEmp<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; o&nbsp;Value field = EmployeeID<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; o&nbsp;Label field = Employee</P>
<P><STRONG>Agruapaciones, totales y subtotales</STRONG></P>
<P>En este paso vamos a configurar los datos de la tabla para que estén agrupados de la manera correcta para obtener el resultado final deseado.</P>
<P>- Vamos a la pestaña Layout</P>
<P><U>Agrupaciones</U></P>
<P>-&nbsp;Botón derecho en el botón de la izquierda de la tabla a la altura de las casillas del medio que aparece al seleccionar la tabla.<BR>-&nbsp;Seleccionamos “Edit group…”<BR>-&nbsp;Aparece la pantalla “Grouping and Sorting Properties”. En la sección “Group on” seleccionamos primero el valor =Fields!SalesOrderNumber.Value y como segundo criterio de ordenación seleccionamos =Fields!ProdCat.Value<BR>-&nbsp;Aceptamos los cambios<BR>-&nbsp;Debido a que estamos agrupando, primero por número de orden de venta y luego por categoría de producto, necesitamos añadir una función de sumatorio a la columna que nos informa del importe. Editamos la casilla del medio de la columna Sales quedando con el valor =Sum(Fields!Sales.Value)</P>
<P mce_keep="true"><U>Subtotales</U></P>
<P>-&nbsp;Botón derecho en el botón de la izquierda de la tabla a la altura de las casillas del medio que aparece al seleccionar la tabla.<BR>-&nbsp;Seleccionar “Insert group”<BR>-&nbsp;En la pantalla “Grouping and Sorting Properties”, seleccionamos un criterio de agrupación con el valor =Fields!SalesOrderNumber.Value<BR>-&nbsp;En las opciones que aparecen al final de la pantalla deseleccionamos “Include group header”, quedando únicamente marcada la opción “Include group footer”<BR>-&nbsp;Automáticamente se añade una nueva fila a la tabla.<BR>-&nbsp;En la columna Sales de la última fila añadida insertaremos el valor =Sum(Fields!Sales.Value)<BR>&nbsp;<BR><U>Total</U></P>
<P>La última fila de la tabla que hemos incluido nos sirve para añadir valores e información a pie de la tabla. La utilizaremos para incluir un total de todas las ventas.</P>
<P>-&nbsp;Editar la celda en la última fila de la tabla en la columna sales añadiendo el siguiente valor: =Sum(Fields!Sales.Value)</P>
<P mce_keep="true"><STRONG>Enlace a otro informe</STRONG></P>
<P>La última funcionalidad que nos queda por demostrar es el enlace de un informe con otro. Para ello seguiremos los siguientes pasos:</P>
<P>-&nbsp;Botón derecho sobre la celda de la fila del medio de la columna Sales Order (la que tiene el valor =Fields!SalesOrderNumber.Value).<BR>-&nbsp;Seleccionar propiedades<BR>-&nbsp;Ir a la pestaña Navigation<BR>-&nbsp;En la sección “Hyperlink action” seleccionar la opción “Jump to report:”<BR>-&nbsp;Seleccionar el informe “Sales Order Details”<BR>-&nbsp;Click en el botón “Parameters”<BR>-&nbsp;Seleccionar el parámetro “SalesOrderNumber” en la columna “Parameter Name”<BR>-&nbsp;Seleccionar el valor “=Fields!SalesOrderNumber.Value” en la columna “Parameter Value”</P>
<P>Si quisieramos que el valor de “Sales Order” se mostrara subrayado seleccionariamos las propiedades de la celda y en la pestaña Font seleccionariamos el valor “Underline” en la opción “Decoration”</P>
<P><BR>Si además quisieramos que el valor de “Sales Order” únicamente apareciera una vez por grupo seleccionariamos la opción “Hide duplicates” en la pestaña General de las propiedades de la celda. Luego, seleccionariamos el valor “EmpSalesDetails” en la opción “Containing group or dataset”.</P>
<P mce_keep="true"><BR>El resto de detalles estéticos os los dejo a vosotros para que descubráis más funcionalidad y características del producto ;) Sólo una pista, la mayoría de efectos estéticos se pueden configurar con la venta de propiedades del elemento seleccionado (que aparece a la derecha-abajo en la configuración por defecto de Visual Studio).<BR></P>]]></content:encoded>
    </item>
    <item>
      <title>Como utilizar Integration Services como fuente de datos de Reporting Services</title>
      <link>https://docs.microsoft.com/archive/blogs/jbartual/como-utilizar-integration-services-como-fuente-de-datos-de-reporting-services</link>
      <pubDate>Fri, 17 Feb 2006 01:17:00 GMT</pubDate>
      <dc:creator><![CDATA[jbartual]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jbartual/2006/02/17/como-utilizar-integration-services-como-fuente-de-datos-de-reporting-services/</guid>
      <description><![CDATA[Reporting Services nos permite crear, de una manera rápida y sencilla, informes a partir de una...]]></description>
      <content:encoded><![CDATA[<P><FONT face=Arial size=2>Reporting Services nos permite crear, de una manera rápida y sencilla, informes a partir de una consulta a una fuente de datos. Es decir, podemos crear un informe que nos muestre una consulta en particular (una query T-SQL o un Stored Procedure) de una base de datos corriendo en SQL Server 2005.</FONT></P>
<P><FONT face=Arial size=2>Una de las características de Reporting Services es la capacidad de soportar diferentes tipos de fuentes de datos. Como ya viene siendo habitual, podemos extraer información de fuentes de datos "clásicas", como son OLE DB, ODBC, SQL Server u Oracle. Además de estas fuentes de datos relacionales, también podemos extraer los datos de fuentes de datos jerárquicas, ficheros XML, y fuentes de datos dimensionales, Analysis Services. Como añadido a todas estas fuentes de datos, Reporting Services (SSRS) puede conectarse a Integration Services (SSIS) y utilizarlo como fuente de datos. Cada vez que generemos de nuevo un report que utilize SSIS como fuente de datos, SSRS lanzará una petición a SSIS provocando que éste ejecute el paquete (unidad de ejecución de SSIS) de nuevo.</FONT></P>
<P><FONT face=Arial size=2>Sin más, vamos a pasar a explicar los pasos que tenemos que dar para habilitar esta funcionalidad y luego explicaremos como montar paso a paso un proyecto ejemplo que ilustre esta funcionalidad. Al final explicaremos un poco más los beneficios y posibles usos de esta solución.</FONT></P>
<P><STRONG><FONT face=Arial size=2>Activación de la fuente de datos SSIS</FONT></STRONG></P>
<P><FONT face=Arial size=2>Una vez tenemos instalados tanto SSRS como SSIS en la misma máquina, tendremos que "destapar los ojos" a SSRS para que pueda utilizar a SSIS como fuente de datos. Para ello seguiremos los siguientes pasos:</FONT></P>
<OL>
<LI><FONT face=Arial size=2>Nos dirigiremos al directorio &lt;drive&gt;:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies y abriremos el fichero RSReportDesigner.config con un editor de texto.</FONT></LI>
<LI><FONT face=Arial size=2>Habilitaremos el diseñador de reports para utilizar SSIS como fuente de datos. Para ello&nbsp;en la sección &lt;Data&gt; descomentaremos la siguiente línea: <BR>&lt;!-- &lt;Extension Name="SSIS" Type="Microsoft.SqlServer.Dts.DtsClient.DtsConnection,Microsoft.SqlServer.Dts.DtsClient, Version=9.0.242.0, Culture=neutral, </FONT><FONT face=Arial size=2>PublicKeyToken=89845dcd8080cc91"/&gt; --&gt;</FONT></LI>
<LI><FONT face=Arial size=2>Repetiremos la descomentación en la sección &lt;Designer&gt; para la línea: &lt;!-- &lt;Extension Name="SSIS" Type="Microsoft.ReportingServices.QueryDesigners.GenericQueryDesigner,Microsoft.ReportingServices.QueryDesigners"/&gt; --&gt;</FONT></LI>
<LI><FONT face=Arial size=2>Guardamos el fichero y salimos. Acordaros de guardaros una copia de seguridad antes de modificar cualquier fichero .config. ¡Más vale prevenir que curar!</FONT></LI>
<LI><FONT face=Arial size=2>El siguiente paso será activar la extensión SSIS de SSRS que permitirá la interacción entre ambos. Para ello nos dirigiremos a la carpeta &lt;drive&gt;:\Program Files\Microsoft SQL Server\MSSQL.n\Reporting Services\ReportServer y abriremos el fichero RSReportServer.config con el bloc de notas</FONT></LI>
<LI><FONT face=Arial size=2>Localizaremos la siguiente entrada y la descomentaremos: <BR>&lt;!-- &lt;Extension Name="SSIS" Type="Microsoft.SqlServer.Dts.DtsClient.DtsConnection,Microsoft.SqlServer.Dts.DtsClient, Version=9.0.242.0, Culture=neutral, </FONT><FONT face=Arial size=2>PublicKeyToken=89845dcd8080cc91"/&gt; --&gt;</FONT></LI></OL>
<P><FONT face=Arial size=2><STRONG>Solución de ejemplo</STRONG></FONT></P>
<P><FONT face=Arial size=2>Llegados a este punto ya tenemos tanto al diseñador de reports como a la extensión de SSRS capacitadas para lidiar con SSIS. Vamos a crear un pequeño ejemplo para ver la funcionalidad.</FONT></P>
<P><FONT face=Arial size=2>El primer paso será crear un proyecto SSIS (o SSRS) y añadirle a la solución creada un nuevo proyecto SSRS (o SSIS). Aunque no es necesario tener estos dos proyectos en la misma solución, nos ayudará a entender mejor el ejemplo.</FONT></P>
<P><FONT face=Arial size=2><STRONG>Configuración del paquete SSIS</STRONG></FONT></P>
<P><FONT face=Arial size=2>Seguiremos los siguientes pasos en el proyecto SSIS:</FONT></P>
<OL>
<LI><FONT face=Arial size=2>Crearemos un nuevo 'Connection Manager' haciendo click con el botón derecho en la zona inferior en la pestaña 'Control Flow' del paquete 'Package', que se creó automáticamente para nosotros</FONT></LI>
<LI><FONT face=Arial size=2>Seleccionamos 'New OLE DB Connection...'</FONT></LI>
<LI><FONT face=Arial size=2>Configuraremos la conexión para que se conecte a la base de datos Adventure Works de nuestra instancia de SQL Server</FONT></LI>
<LI><FONT face=Arial size=2>En la pestaña 'Control Flow' añadiremos un elemento de tipo 'Data Flow' (lo podemos encontrar en la barra de herramientas 'Toolbox' a la izquierda de la pantalla)</FONT></LI>
<LI><FONT face=Arial size=2>En la pestaña 'Data Flow' añadiremos un data source de tipo OLE DB arrastrándolo desde la Toolbox</FONT></LI>
<LI><FONT face=Arial size=2>También añadiremos un 'Data Flow Destination' del tipo 'DataReader Destination' desde la misma Toolbox (los 'Data Flow Destinations' se encuentran abajo del todo de la Toolbox)</FONT></LI>
<LI><FONT face=Arial size=2>Para darle un poco de juego, añadiremos una tarea de transformación del tipo 'Derived Column'</FONT></LI></OL>
<P><FONT face=Arial size=2>Configuramos la fuente de datos 'OLE DB Source'. Hacemos doble click sobre ella y seguimos los siguientes pasos:</FONT></P>
<OL>
<LI><FONT face=Arial size=2>Nos aseguramos que la está seleccionada la conexión que hemos definido antes y seleccionamos la tabla [Person].[Contact]</FONT></LI>
<LI><FONT face=Arial size=2>En el panel izquierdo seleccionamos 'Columns'. En esta ventana seleccionamos que columnas del origen queremos importar. Para el ejemplo únicamente dejaremos seleccionadas las columnas Title, FirstName, MiddleName, and LastName.</FONT></LI>
<LI><FONT face=Arial size=2>Click Ok</FONT></LI></OL>
<P><FONT face=Arial size=2>Configuramos la transformación 'Derived Column'. Esta transformación nos permite actualizar valores de la fuente de datos mediante funciones. Estas "actualizaciones" pueden sobreescribir el valor original o redirigirse a una columna nueva. Lo que nosotros vamos a hacer es juntar las columnas FirstName y LastName en una nueva columna llamada FullName. Para ello seguiremos los siguientes pasos:</FONT></P>
<OL>
<LI><FONT face=Arial size=2>Seleccionamos 'OLE DB Source' con un simple click. Arrastramos su flecha verde hasta la caja de la transformación 'Derived Column'. </FONT></LI>
<LI><FONT face=Arial size=2>Doble click sobre 'Derived Column'. En el panel inferior, en la columna 'Derived Column Name' escribimos FullName</FONT></LI>
<LI><FONT face=Arial size=2>Dejamos el valor &lt;add as a new column&gt; en la columna 'Derived Column'.</FONT></LI>
<LI><FONT face=Arial size=2>En la columna 'Expression' escribimos la siguiente expresión: [FirstName] + " " +&nbsp; [LastName] (los nombres de las columnas pueden ser arrastrados y soltados desde el panel superior)</FONT></LI>
<LI><FONT face=Arial size=2>Click Ok</FONT></LI></OL>
<P><FONT face=Arial size=2>Como último paso configuraremos el destino 'DataReaderDest'. Lo primero que haremos, con el fin de mejorara la claridad de lectura es modificar su nombre y le pasaremos a llamar simplemente DataReader. La configuración seguirá los siguientes pasos:</FONT></P>
<OL>
<LI><FONT face=Arial size=2>Enlazamos la transformación 'Derived Column' con el destino 'DataReader' mediante la unión por la flecha verde saliente de la transformación. Esto enviará los datos resultantes de la transformación a su&nbsp;destino.</FONT></LI>
<LI><FONT face=Arial size=2>Doble click sobre 'DataReader'. En la pestaña 'Input Columns', seleccionamos todas las columnas que nos aparecen.</FONT></LI>
<LI><FONT face=Arial size=2>Click Ok</FONT></LI></OL>
<P><FONT face=Arial size=2>El paquete SSIS ya está listo para ser utilizado desde SSRS. Para verificar que todo está correcto, ejecutaremos el paquete y tenemos que obtener 19,972 filas.</FONT></P>
<P><FONT face=Arial size=2><STRONG>Creación del report que utiliza SSIS como fuente de datos</STRONG></FONT></P>
<P><FONT face=Arial size=2>Todos los reports tienen como base una consulta a una fuente de datos. En el caso que utilizemos SSIS la fuente de datos será el paquete que hemos creado, el fichero .dtsx físicamente, y la consulta será el nombre que le hayamos dado al destino de datos, en este caso 'DataReader'. Vamos a ver como configuramos todo esto.</FONT></P>
<P><FONT face=Arial size=2>En el proyecto SSRS añadiremos un report sin la intervención del wizard. Para ello haremos click con el botón derecho sobre la carpeta 'Reports' y seleccionaremos la opción Add &gt; New Item. En la ventana 'Add New Item' seleccionaremos el objeto 'Report' (para la esta demostración el nombre Report1.rdl nos servirá).</FONT></P>
<P><FONT face=Arial size=2>La configuración de la fuente de datos seguirá los siguientes pasos:</FONT></P>
<OL>
<LI><FONT face=Arial size=2>En la pestaña 'Data', seleccionaremos el valor '&lt;New Dataset...&gt;' del desplegable 'Dataset:'</FONT></LI>
<LI><FONT face=Arial size=2>Cambiaremos el tipo (Type) al valor SSIS</FONT></LI>
<LI><FONT face=Arial size=2>En la caja de texto 'Connection string:' introduciremos el path completo de nuestro paquete .dtsx todo entrecomillas dobles y precedido por el modificador -f y un espacio. Por ejemplo: -f "c:\Demos\SSRS\SSIS\Integration Services Project1\Package.dtsx"</FONT></LI>
<LI><FONT face=Arial size=2>Click Ok</FONT></LI>
<LI><FONT face=Arial size=2>En el área principal, donde de normal se escribiría la consulta T-SQL, teclearemos el nombre del destino de datos del paquetes .dtsx. En este caso: 'DataReader'</FONT></LI>
<LI><FONT face=Arial size=2>Para comprobar el correcto funcionamiento, simplemente haremos click sobre el símbolo de admiración.</FONT></LI></OL>
<P><FONT face=Arial size=2>Como podéis comprobar&nbsp;SSIS nos han devuelto todas las columnas originales además de la nueva columna definida, FullName. Para finalmente tener un informe con estos datos únicamente nos queda crear una tabla en la pestaña 'Layout' que muestre los vuestros datos y publicar el informe. Estos últimos pasos no los explicaremos en este post al no ser su objetivo</FONT></P>
<P><FONT face=Arial size=2><STRONG>Funcionalidad y usos de la interconexión entre SSRS y SSIS</STRONG></FONT></P>
<P><FONT face=Arial size=2>Una de las principales ventajas de SSIS es su ejecución pipeline en memoria. Esto quiere decir que los datos van pasando a través de las diferentes transformaciones a medida que se van leyendo. Así para obtener el primer valor en la salida del paquete no se debe esperar a que el último valor haya sido procesado (existen excepciones que ya comentaremos en un post futuro cuando hablemos de SSIS). Una manera análoga con el mundo real de comprender este funcionamiento es pensar en la naturaleza o física de los líquidos. Si dejamos caer un flujo de agua escaleras abajo veremos como el agua va precipitándose escalón tras escalón sin esperar al resto del agua que hay por detrás. El líquido fluye a través de los escalones de la misma manera que los datos lo hacen a través de las transformaciones de SSIS.</FONT></P>
<P><FONT face=Arial size=2>La ventajas de este modo de funcionamiento son principalmente dos. En primer lugar este funcionamiento tiene un rendimiento muy bueno, a aprovechar perfectamente las capacidades de procesamiento multihilo de los procesadores y sistemas actuales. En segundo lugar, todo el procesamiento se hace en memoria y no necesitamos almacenes físicos de datos intermedios; agilizando la ejecución y abaratano costes.</FONT></P>
<P><FONT face=Arial size=2>Cuando SSRS está interconectado con SSIS lo que ocurre es que SSRS&nbsp;hace una llamada a SSIS cada vez que ha de generar el informe (una vez generado el informe puede ser configurado para permanecer en memoria caché). SSIS al recibir la petición por parte de SSRS ejecuta el paquete especificado pasando los datos a SSRS.</FONT></P>
<P><FONT face=Arial size=2>Un escenario típico de uso de este tipo de soluciones es cuando se quiere obtener informes de fuentes de datos que requieren de un tratamiento previo, pero que no se desea guardar una copia de los datos transformados. Estos datos pueden provenir de fuentes de datos OLE DB, ODBC, Oracle, etc. Eliminando la necesidad de una copia intermedia de los datos transformados ahorraremos en costes, complejidad, mantenimiento y&nbsp;desincronización.</FONT></P>
<P><FONT face=Arial size=2>Las capacidades de transformación de datos y ejecución pipeline de SSIS junto a la facilidad y flexibilidad en la generación de informes de SSRS forman una&nbsp;buena pareja de baile para&nbsp;afrontar una gran variedad de escenarios de reporting diferentes.</FONT></P>
<P><FONT face=Arial size=2>Espero que os haya servido de ayuda y buen ejemplo,</FONT></P>
<P><FONT face=Arial size=2>JB</FONT></P>
<P>&nbsp;</P>]]></content:encoded>
    </item>
    <item>
      <title>Primer post: SQL, Microsoft y la vida que nos rodea.</title>
      <link>https://docs.microsoft.com/archive/blogs/jbartual/primer-post-sql-microsoft-y-la-vida-que-nos-rodea</link>
      <pubDate>Fri, 17 Feb 2006 01:00:00 GMT</pubDate>
      <dc:creator><![CDATA[jbartual]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/jbartual/2006/02/17/primer-post-sql-microsoft-y-la-vida-que-nos-rodea/</guid>
      <description><![CDATA[Hola Mundo!
Creo que no hay mejor manera para empezar un blog que con esa, ya mítica para nosotros,...]]></description>
      <content:encoded><![CDATA[<P><FONT face=Arial size=2>Hola Mundo!</FONT></P>
<P><FONT face=Arial size=2>Creo que no hay mejor manera para empezar un blog que con esa, ya mítica para nosotros, frase.</FONT></P>
<P><FONT face=Arial size=2>Lo primero de todo presentarme un poco. Mi nombre completo es Jordi Bartual Paris y trabajo para Microsoft en la oficina de Barcelona, España. Tras unos cuantos años en el mundo del desarrollo de aplicaciones, habiendo pasado por múltiples proyectos, cir</FONT><FONT face=Arial size=2>cunstancias, superado 3 certificaciones de Microsoft,&nbsp;e incluso cambiado de país de residencia (algún día hablaré de este tema en profundidad), acabo de empezar un nueva y apasionante aventura en mi empresa favorita de todos los tiempos, Microsoft.</FONT></P>
<P><FONT face=Arial size=2>El título oficial de mi puesto de trabajo es algo así como Technical Sales Specialist in SQL Server. Lo que traducido a hechos prácticos viene a ser un experto en las funcionalidades de SQL Server (versión 2005 en curso y venideras), tanto las intrínsecas como las relacionadas con herramientas más allá del puro corazón de la base de datos, así como su relación con diferentes sistemas y entornos.</FONT></P>
<P><FONT face=Arial size=2>Sabiendo esto es fácil de imaginar que este blog&nbsp;girará entorno a SQL Server, la vida dentro de Microsoft, eventos a los que asista o curiosidades varias que viva y crea que son de interés y algún post se colará hablando sencillamente de la vida, tanto a nivel profesional como a nivel personal (en el fondo todos somos personas).</FONT></P>
<P><FONT face=Arial size=2>Esto es todo para el primer post. Espero que la información que vaya publicando os sea de interés y utilidad.</FONT></P>
<P><FONT face=Arial size=2>Saludos,</FONT></P>
<P><FONT face=Arial size=2>JB</FONT></P><FONT face=Arial size=2></FONT>]]></content:encoded>
    </item>
  </channel>
</rss>