none
Rendimiento en miembros calculados RRS feed

  • Pregunta

  • Hola compañeros,

    Primero os pongo en situación:

    Tengo un cubo de compras en Analysis Services 2005 donde hay una serie de miembros calculados que muestran datos de cantidad e importe acumulados a una fecha.  Estos miembros los calculo mediante la función ParallelPeriod.

    Cuando utilizo estos miembros mostrando una dimensión el rendimiento es muy bueno, por ejemplo utilizando la dimensión categorías:

    FILTRO Fecha:31/12/2012

    CATEGORIA

    IMPORTE ACUMULADO MES

    IMPORTE ACUMULADO MES ANTERIOR

    Ajo

    500 150

    Acelga

    1000

    1150

    Tomate

    2000

    1900


    Sin embargo si utilizo estas mismas dimensiones utilizando 2 dimensiones el rendimiento es muy muy malo, tanto que es imposible ejecutar la consulta, por ejemplo utilizando las dimensiones cliente y categoría:

    FILTRO Fecha:31/12/2012

    CLIENTES

    CATEGORIA

    IMPORTE ACUMULADO MES

    IMPORTE ACUMULADO MES ANTERIOR

    0001

    Ajo

    250

    100

    0001

    Acelga

    1000

    1150

    0002

    Ajo

    250

    50

    0002

    Tomate

    2000

    1900


    ¿Que puede estar pasando para que haya esta pérdida de rendimiento? 

    Gracias.



    • Editado dortizalm jueves, 17 de enero de 2013 13:14 La tabla no se mostraba bien.
    jueves, 17 de enero de 2013 13:05

Respuestas

Todas las respuestas

  • Hola.

    Realiza un diseño de agregaciones (es un wizard). Si con las agregaciones que crees no logras que el rendimiento mejore, nos dices.

    http://msdn.microsoft.com/es-es/library/ms180144(v=sql.90).aspx

    Y para algo más en profundidad, revisa este artículo introductorio:

    http://www.solidq.com/sqj/es/Pages/2011-February-Issue/Analysis-Services-Aggregations.aspx


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

    sábado, 19 de enero de 2013 16:22
    Moderador
  • Hola,

    Las agregaciones funcionan bien, desgraciadamente en SSAS 2005 las agregaciones que se crean las hace completamente el motor, funcionan mucho pero en muchos caso, es necesario definir uno las agregaciones, para ello tendras que hacer un Profile y analizarlo para luego crear las agregaciones sobre eso.

    Otro detalle muy importante es saber si tu cubo es muy grande, puede que requieras particiones de tablas de hecho que te ayudara a mejorar el rendimiento.

    Otra cosa super importante es saber la infraestructura donde esta montado tu SSAS, si el sistema es de 32bits, 64bits, si tiene una edicion standar de SQL, si los calculos que estas realizando son directos de una tabla FACT o si son MDX que se generan a solicitud, etc.

    Como menciona alberto lo primero es crear agregaciones, eso deberia mejorar tu rendimiento, aunque debes tomar en cuenta que crear agregaciones te impacta en tu tiempo de procesamiento, por ello se recomienda manejar al menos 2 particiones, una para historia de datos que sabes que no cambiaran y la otras para los datos que aun cambiaran.

    Saludos, mi amigo


    Ahias Portillo

    domingo, 20 de enero de 2013 15:07
  • Hola Compañeros,

    Primero quiero agradecer las respuestas. Gracias!!

    Me voy a poner a leer con detenimiento los enlaces que ha comentado Qwalgrande sobre las agregaciones y me pondré manos a la obra.  Ya os comentaré los resultados.

    Ahias, lo que comentas como súper importante, la infraestructura donde tenemos montado el SSAS es un Server 2008 de 32bits y estamos usando la versión Standard de SQL 2005.  Los campos que van lentos son cálculos de MDX, como comentaba estoy utilizando la función ParallelPeriod para calcular estos campos.

    Un saludo.

    lunes, 21 de enero de 2013 11:30
  • Hola.

    Añadir a lo comentado por Ahias, yo pensaría en migrar a SQL Server 2008 R2 por lo menos. El salto de calidad en el rendimiento que hay en SSAS es muy grande (por los cálculos de celdas vacías), y el coste de migración muy pequeño.

    Haz un piloto, en un PC o una máquina virtual, no siempre pasa, pero es frecuente que en máquinas de mucho menores prestaciones se obtienen rendimientos mucho mejores sólo por contar con el motor 2008 R2.


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

    martes, 22 de enero de 2013 21:06
    Moderador
  • Hola,

    Perdonad la tardanza, pero quería estar seguro antes de decir nada. 

    Tras revisar primero las relaciones entre atributos y crear agregaciones para el cubo se ha mejorado el rendimiento, pero aun sigue yendo algo lento cuando utilizan dimensiones con muchos miembros, como son Proveedores y Cuentas Contables.

    Como me comentáis, voy a proponer migrar a SQL Server 2008 R2, aunque antes haré lo que propones de hacer un piloto en una máquina virtual.

    Gracias.

    lunes, 28 de enero de 2013 9:31