none
SSAS 2008: Exists aggregate_aware function? RRS feed

Respuestas

  • Hola.

    No debes duplicar los hilos. Muevo ahora el hilo a dicho foro y ya seguimos desde allí. El que ya tenías lo he eliminado.

    Sí, una misma dimensión puede apuntar a varias tablas de hechos. Una medida no. Si por el motivo que sea la suma de las ventas de las ciudades de un país no son las ventas de un país, entonces estamos hablando de un modelo en el que existe una complejidad que no se observa a la luz de lo que nos has contado (algo lógico por otra parte, estas cosas nunca son sencillas). Se conoce como medidas semiaditivas (como un distinct count, por ejemplo, que no se puede agregar).

    Puede parecer impracticable, a mí me parece infinitamente más sencillo que la alternativa que nos cuentas de otros productos, con una tabla de hechos para cada nivel de cada jerarquía. Otra cosa es que tu datamart esté diseñado desde un enfoque distinto. Es cuestión de adaptarse, revisando tu ETL para preparar la tabla de hechos de una forma más plana.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    jueves, 27 de diciembre de 2012 15:39
    Moderador
  • Hola.

    Ese concepto sí es muy común, se conoce como role-playing dimension (una de esas construcciones que es mejor no traducir). Es especialmente frecuente en la dimensión tiempo. Te dejo este link:

    http://msdn.microsoft.com/en-us/library/ms174487(v=sql.90).aspx



    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    jueves, 27 de diciembre de 2012 22:09
    Moderador

Todas las respuestas

  • Hola.

    Te contesto en Español, ya que es el idioma del foro. Como tal no me suena (aunque desde la perspectiva de SSAS no entiendo su sentido al 100%, que se ataque al agregado para ganar rendimiento es lo que hace siempre que puede el motor de SSAS). ¿Qué es lo que pretendes conseguir? ¿Es lento el mdx que estás preparando?

    La pregunta es de Analysis Services, moveremos el hilo al foro adecuado en algún momento.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    miércoles, 26 de diciembre de 2012 16:22
    Moderador
  • Hola,

    Soy nueva usando esta herramienta, pero en otras herramientas BI como la de Business Objects o Microstrategy, te permiten crear atributos o medidas referenciados al mismo campo en múltiples tablas. Eso es lo que quiero hacer, referenciar una medida a diferentes tablas y lo mismo para atributos (dimensiones). De esa manera, dependiendo de los objetos que se consulten y de la granularidad,  generan la consulta óptima de acuerdo a las estrategias de diseño. Esto es lo que estoy tratando de hacer, ya que mi modelo de BD es multiestrella, es decir ya tengo los datos precalculados y desnormalizados a todos los niveles y sólo quiero mostrarlos. Osea que los mismos atributos y medidas están en muchas tablas de diferentes granularidades. No sé si me explico...

    Marta

    miércoles, 26 de diciembre de 2012 16:46
  • Hola.

    No sé si será la explicación o yo, pero no acabo de comprenderlo. Por ejemplo, no entiendo qué significa tener los datos desnormalizados a todos los niveles, ni que una medida, para una tabla de hechos dada, pueda estar a varias granularidades. O está a una y de ahí se agrupa o tienes varias tablas de hechos para una dimensión. Pero lo que ya no veo de ninguna forma es cómo una misma medida puede referenciar a diferentes tablas (siendo la misma medida). ¿Puedes poner un ejemplo sencillo, a ver si así podemos dar con lo que buscas?

    Es seguramente una cuestión de terminología, se podrá conseguir, pero se le llamará de otra manera.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    miércoles, 26 de diciembre de 2012 17:18
    Moderador
  • Tengo muchas tablas de hechos con casi todas las combinaciones de dimensiones posibles, ya agrupadas y precalculadas en BD. 

    Ejemplo: las dimensiones siguen dos jerarquías, geográfica (país-ciudad) y temporal (año-mes).

    Tengo las siguientes tablas:

    1. Ventas por país y año.

    2. Ventas por país, año y mes.

    3. Ventas por país, ciudad y año.

    4. Ventas por país, ciudad, año y mes.

    Quiero definir:

    Medida (sólo una): ventas (que puede ser de cualquiera de las 4 tablas)

    Dimensiones: País (que puede ser de 3 tablas), Ciudad (de 2 tablas), Año (de 4 tablas), Mes (de dos tablas).

    Dependiendo de los objetos que ponga en el informe quiero que consulte una tabla u otra. De manera que si pongo las 4 dimensiones quiero que consulte la tabla 4, pero si pongo sólo país y año en el informe quiero que consulte la tabla 1. Y así sucesivamente.

    miércoles, 26 de diciembre de 2012 17:44
  • Hola.

    Comprendido. En SSAS no se hace de ese modo. Te resumo un poco.

    Se crea un única tabla de hechos con el dato de cada venta, y con la referencia geográfica y temporal (como la tabla 4, las demás sobran). Estas referencias geográfica y temporal son dos dimensiones jerarquizadas. Puedes combinarlas o no y consultar a cualquier nivel de la jerarquía. El rendimiento será bueno, y si no lo es, puedes preparar agregaciones, que son comparables a tablas en relacional, y que vienen a cubrir eso que desde esos otros sistemas de BI se hace con nuevas tablas, ya que no dejan de ser cálculos de distintas combinaciones, destinadas a mejorar los tiempos de respuesta.

    Es muy resumido y simplificado. Si sigues teniendo dudas, nos dices.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    miércoles, 26 de diciembre de 2012 20:19
    Moderador
  • Tu propuesta de diseño es más elegante sin duda, pero en este caso tengo que utilizar estas tablas porque los valores agregados no son exactamente iguales, sino que se hacen operaciones complejas para obtenerlos con mucho procesado, no son agregaciones simples (funciones matemáticas).

    Entonces, ¿no se puede hacer que una misma dimensión o medida apunte a varias tablas? Porque entonces tendré que hacer 4 medidas para ventas,  otras 4 dimensiones para año, y así sucesivamente. Y eso sí que me parece impracticable.

    Tomo nota de lo que comentas de preparar agregaciones, lo investigaré porque me parece interesante, aunque no para este caso concreto.

    Marta


    P.S. He descubierto el tema de SSAS, así que lo he publicado allí también. Gracias.
    • Editado MartaHG jueves, 27 de diciembre de 2012 13:54
    miércoles, 26 de diciembre de 2012 22:43
  • Hola.

    No debes duplicar los hilos. Muevo ahora el hilo a dicho foro y ya seguimos desde allí. El que ya tenías lo he eliminado.

    Sí, una misma dimensión puede apuntar a varias tablas de hechos. Una medida no. Si por el motivo que sea la suma de las ventas de las ciudades de un país no son las ventas de un país, entonces estamos hablando de un modelo en el que existe una complejidad que no se observa a la luz de lo que nos has contado (algo lógico por otra parte, estas cosas nunca son sencillas). Se conoce como medidas semiaditivas (como un distinct count, por ejemplo, que no se puede agregar).

    Puede parecer impracticable, a mí me parece infinitamente más sencillo que la alternativa que nos cuentas de otros productos, con una tabla de hechos para cada nivel de cada jerarquía. Otra cosa es que tu datamart esté diseñado desde un enfoque distinto. Es cuestión de adaptarse, revisando tu ETL para preparar la tabla de hechos de una forma más plana.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    jueves, 27 de diciembre de 2012 15:39
    Moderador
  • Hola,

    Estoy de acuerdo, pero no está en mi mano modificar ETL's ni BD, tengo que jugar con las cartas que me han dado. ¿Podrías pasarme algún link referente a cómo implementar una dimensión que apunte a varias tablas de hechos? Eso me sería de mucha ayuda.

    Gracias por la paciencia.

    Marta

    jueves, 27 de diciembre de 2012 15:47
  • Hola.

    Ese concepto sí es muy común, se conoce como role-playing dimension (una de esas construcciones que es mejor no traducir). Es especialmente frecuente en la dimensión tiempo. Te dejo este link:

    http://msdn.microsoft.com/en-us/library/ms174487(v=sql.90).aspx



    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    jueves, 27 de diciembre de 2012 22:09
    Moderador