Search This Blog

Monday, July 11, 2011

Graficas de multiples Datasets

Hace un tiempo recibi la siguiente duda:

"Estoy realizando una grafica y tengo dos datasets de dos bases de datos diferentes (ORACLE), necesito unir los dos para un solo resultado
y me lo visualice en la grafica."

Bien, antes que nada quiero agradecerles por sus preguntas, hacen que esto sea mas util... si tienen alguna, pueden escribirme a twitter @jbocachica, o a traves del form para el libro 101 Preguntas sobre SQL Server Reporting Services.

El problema:
Tenemos 2 datasets, necesitan unirlo para tener un solo resultado...

Las condiciones:
Es muy importante que tengan en cuenta lo siguiente, deben tener almenos un elemento que relacione los datasets, es decir, la integracion que haremos de los datasets es de tipo JOIN y no de tipo UNION, el JOIN esta soportado entre multiples datasets, sin embargo el UNION no.

El como:
Hace algun tiempo hice un post para usar la funcion Lookup, disponible ahora en SQL Server Reporting Services, esta funcion permite unir o mezclar 2 datasets, esto de la siguiente manera
  1. Cree los 2 datasets
  2. En el dataset primario, cree un campo calculado, este campo utilizara la siguiente funcion =Lookup(CampoDataSet1, CampoDataSet2, CampoQueQueremosTraer, DataSetSecundario)
  3. El CampoDataSet1 es el campo que se encuentra en el dataset primario y que usaremos para hacer JOIN con CampoDataSet2, este CampoDataSet2 es el campo que se encuentra en el dataset secundario y es aquel que hace el JOIN.
  4. CampoQueQueremosTraer hace referencia al campo que se encuentra en el DataSetSecundario.
  5. El DataSetSecundario es el nombre del dataset con el que haremos el JOIN y es de tipo String.
  6. Este dataset se puede usar de forma natural en graficas, tablas, matices, listas, etc...

Si deseas mas detalle, te invito a visitar el post - http://www.sqlgeek.net/2010/10/unir-o-mezclar-datasets-en-reporting.html

Friday, February 11, 2011

Para que sirve la N en SQL Server

Hace poco tuve la oportunidad de asistir a una conferencia sobre SQL Server y BI, quería ver si quizá había algo nuevo para ver y/o aprender, durante el proceso de la misma, el speaker usaba con mucha frecuencia los asistentes de consultas, el asistente siempre anteponía la letra N a las cadenas de texto, de la siguiente manera (Ejemplo)

Ejemplo de codigo
  1. Select * from CM_Bitacora
  2. where observaciones = N'Prueba 2'

Recuerdo que un asistente pregunto el porque de la letra N en las consultas, la respuesta por parte del speaker me pareció la verdad un poco injusta, ya que al no saber, prefirió asegurar que esto era un Best Practice de diseño de consultas.

Pues no, la letra N no se trata de un Best Practice para diseño de consultas en TSQL, la letra N corresponde a un “CAST”, muchas personas me han preguntado la diferencia entre VARCHAR y NVARCHAR, bien, la diferencia entre estos 2 tipos de datos es la misma diferencia que hay entre usar la N o no usarla.

Varchar equivale a Variable-Lenght Character String, es decir, una cadena de caracteres de tamaño variable.

NVARCHAR, no es mas que un VARCHAR Unicode, es decir, un VARCHAR que soporta caracteres de 2 bytes, la idea de este tipo de datos es el poder soportar caracteres que no hacen parte del idioma ingles, como por ejemplo, querer guardar nombres en Ingles y en Japonés, o en Mandarín…

En conclusión, la letra N que se antepone a las cadenas de caracteres, simplemente convierten la cadena en UNICODE (Estándar de la industria)

Unicode permite garantizar el estándar de escritura, ya que en Unicode existe una representación numérica única para cada carácter.

Para saber mas acerca de Unicode visita http://es.wikipedia.org/wiki/Unicode

Wednesday, October 20, 2010

Unir o Mezclar Datasets en Reporting Services

Esta quizá ha sido una de las preguntas que mas me han hecho en lo que refiere a SQL Server Reporting Services “Como hago para unir 2 Datasets”… bueno, la verdad siempre logre resolverlo con T-SQL y en algunos casos con MDX, sin embargo llego la hora de investigar como hacerlo, ahora que lo logre, es hora de compartirlo con ustedes.

El siguiente ejemplo es de caracter explicativo, SQLGeek entiende que la solución se puede tener fácilmente a través de TSQL, sin embargo el objetivo es explicar el uso de las funciones en SSRS.


Usaremos la base de datos AdventureWorks

Dataset1

   1: SELECT TOP 10 YEAR(OrderDate) Anho, 



   2: SUM(SubTotal) Subtotal, SUM(TaxAmt) Impuestos, 



   3: SalesPersonID 



   4: FROM Sales.SalesOrderHeader 



   5: GROUP BY SalesPersonID, YEAR(OrderDate)


   6: ORDER BY SalesPersonID 





Dataset2





   1: SELECT TOP 10 SalesPersonID, SalesQuota  



   2: FROM SALES.SalesPerson



   3: Order by SalesPersonID 





Estos datasets devolverán la siguiente información





   1: Anho        Subtotal              Impuestos             SalesPersonID



   2: ----------- --------------------- --------------------- -------------



   3: 2002        6530343.5264          522427.5036           NULL



   4: 2003        9791060.2977          783284.8498           NULL



   5: 2001        3266373.6566          261309.8975           NULL



   6: 2004        9770899.74            781671.9792           NULL



   7: 2004        302131.667            24170.5335            268



   8: 2001        34682.5602            2774.6049             268



   9: 2002        479976.9232           38398.1537            268



  10: 2003        552833.499            44226.6801            268



  11: 2001        903229.8296           72258.3864            275



  12: 2004        1858626.9289          148690.1544           275






   1: SalesPersonID SalesQuota



   2: ------------- ---------------------



   3: 268           NULL



   4: 275           300000.00



   5: 276           250000.00



   6: 277           250000.00



   7: 278           250000.00



   8: 279           300000.00



   9: 280           250000.00



  10: 281           250000.00



  11: 282           250000.00



  12: 283           250000.00




Ahora bien, una vez llevamos esto a SSRS en Datasets Separados podríamos tener 2 reportes, 2 tablas, 2 gráficos, 2 matrices o 2 listas…



image



Sin embargo muchas personas me han consultado para poder llegar a algo así



image



Pero me dicen que al intentar hacerlo, SSRS devuelve un error así



image



La solución esta en el uso de la función Lookup, disponible en SQL Server Reporting Services, y que nos permite que podamos hacer este tipo de cosas, la sintaxis de la función es la siguiente:



=Lookup(CampoDataSet1, CampoDataSet2, CampoQueQueremosTraer, DataSetSecundario)



La función Lookup es el equivalente a un Join, solo que lastimosamente con esta función podemos traer un campo a la vez, así que si deseamos traer mas de un campo, tendremos que poner la función mas de una vez.



Si aplicamos esto a nuestro ejemplo, nuestra función quedaría de la siguiente manera.



=Lookup(Fields!SalesPersonID.Value, Fields!SalesPersonID.Value, Fields!SalesQuota.Value, "DataSet2")


Obteniendo los siguientes resultados



image



Espero les sea de mucha utilidad…



Si tienen dudas o desean que tratemos algun tema en el blog, no duden en escribirme a jbocachica (arroba) sqlgeek.net



Descárgate el RDL aquí 



http://tinyurl.com/sqlgeek1

Thursday, July 22, 2010

SQL Azure “Houston” - CTP Disponible

El CTP 1 de “Houston” esta dispobible para descarga…

http://blogs.msdn.com/b/sqlazure/archive/2010/07/21/10040258.aspx

Datos espaciales

Creando bases de datos Geoespaciales de alto rendimiendo https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032455540&Culture=es-AR

Performance point

Produciendo Dashboards con PerformancePoint Services https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032455537&Culture=es-AR

LinkWithin

Related Posts Plugin for WordPress, Blogger...