2011-09-08 13 views
6

Estoy teniendo un momento extremadamente difícil con Excel siendo muy lento cuando interactúo con una tabla dinámica. Agregar/eliminar un campo, cambiar un filtro o una máquina de cortar, todos toman varios minutos de Excel congelado antes de responder.Mesa giratoria Slow Excel MDX?

Parece que el MDX generado es extremadamente ineficiente. Puedo apreciar que tienen que generar el MDX dinámicamente y deben admitir muchas características de las tablas dinámicas, pero ser 100 veces más lento es ridículo.

cuando generan MDX para un campo en una fila o columna, que utilizan DrilldownLevel (... [Dimensión Propiedad]. [Condado])

No estoy seguro de cuál es el propósito del enfoque más complicada de Excel es, pero espero que haya algunas opciones en algún lugar que pueda desmarcar para que Excel no necesite usar la función DrilldownLevel.

En cambio, por lo general omiten la función Drilldownlevel y sólo hacer [Inmueble Dimensión]. [Condado] . [Condado] para acceder al atributo.

Una consulta para el mismo conjunto de resultados lleva 5 minutos con el MDX de Excel y demora menos de 5 segundos con mi MDX.

He verificado que la lentitud no es un problema con la representación de Excel/formateo de los resultados, ya que tomé el MDX utilizado por Excel y lo ejecuté directamente en SSMS para verificar los tiempos. Puedo ver el administrador de tareas en el servidor y observar cómo se agita la CPU mientras procesa los resultados.

Nota, no estoy culpando al servidor ya que puedo crear consultas MDX que se ejecutan extremadamente rápido y proporcionan los mismos resultados.

¿Cómo puedo hacer que Excel genere MDX más eficiente? Estoy usando Excel 2010.

He oído que powerpivot genera MDX más eficiente, sin embargo Powerpivot no se puede utilizar en la parte superior de SSAS, ya que no aprovecha el cubo SSAS. Entonces, una breve diatriba sobre por qué Powerpivot encima de SSAS no funciona. Si importa datos desde SSAS a powerpivot, todo lo que está haciendo esencialmente es realizar un crossjoin gigante para migrar los datos de SSAS a una tabla de Powerpivot. Si ha intentado esto, encontrará que genera nombres/etiquetas de campo como "Nombre de Property DimensionCountyCounty" ... wow realmente? Entonces está trabajando con los datos utilizando el motor OLAP de Powerpivot local y, por lo tanto, depende de que la máquina del cliente tenga un sistema operativo de 64 bits para poder trabajar con un conjunto de datos de un tamaño razonable. Es como si estuvieras recortando SSAS, descartando todo tu trabajo en la construcción de una base de datos OLAP sofisticada y todos los metadatos, cálculos, agregaciones, etc. La mitad del motivo para usar SSAS es que puede resumir los datos granulares. antes de devolverlo al cliente, de modo que el cliente no necesite un sistema operativo de 64 bits y no necesite una gran cantidad de recursos en el cliente. Traté realmente de hacer PowerPivot contra SSAS utilizable, pero después de probar varios enfoques y de ida y vuelta con los usuarios, realmente no estaba cerca de ser utilizable. No golpee a Powerpivot, ya que veo que es útil en muchos otros escenarios, pero si su cubo SSAS es una parte importante de su sistema (es decir, cálculos, agregando grandes cantidades de registros en el lado del servidor, etc.), powerpivot parece ser la opción incorrecta .

Aquí es un ejemplo de mi consulta:

SELECT 
NON EMPTY CrossJoin(
{[Department Dimension].[Name].[Name]}, 
{[Finance Month].[Report Year].[Report Year]} 
) 
    ON COLUMNS , 
CrossJoin(
    {[Department Finance Line Type Dimension].[Display Order].[Display Order] }, 
    {[Department Finance Line Type Dimension].[Line Number].[Line Number]}, 
    {[Department Finance Line Type Dimension].[Display Name].[Display Name]} 
    ) 
    ON ROWS 
    FROM 
    (
    SELECT ({[Department Dimension].[County].&[Seminole],[Department Dimension].[County].&[Sarasota]}) ON COLUMNS FROM [HYP Data View] 
    ) 
    WHERE ([Department Finance Line Type Dimension].[Section Name].&[Part 1 - Balance Sheet], 
    [Measures].[Amount] 
    ) CELL PROPERTIES VALUE 

Y a continuación es lo que genera Excel. De hecho, ya había eliminado varios otros aspectos de la consulta de Excel cuando intenté simplificarlo para determinar cuál era el culpable. Así era como se veía la consulta cuando aún funcionaba lento, y luego el siguiente paso que tomé fue cuando eliminé el DrilldownLevel y lo reemplacé. [Todos] con.[Attribute Name] que comenzó a correr mucho más rápido.

consulta muy muy lento:

SELECT 
NON EMPTY CrossJoin(
{DrilldownLevel({[Department Dimension].[Name].[All]})}, 
{DrilldownLevel({[Finance Month].[Report Year].[All]})} 
) 
DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON COLUMNS , 
CrossJoin(
    {DrilldownLevel({[Department Finance Line Type Dimension].[Display Order].[All] })}, 
    {DrilldownLevel({[Department Finance Line Type Dimension].[Line Number].[All]})}, 
    {DrilldownLevel({[Department Finance Line Type Dimension].[Display Name].[All]})} 
    ) 
    DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON ROWS 
    FROM (
    SELECT ({[Department Dimension].[County].&[Seminole],[Department Dimension].[County].&[Sarasota]}) ON COLUMNS FROM [Afr Data View] 
    ) 
    WHERE ([Department Finance Line Type Dimension].[Section Name].&[Part 1 - Balance Sheet], 
    [Measures].[Amount] 
    ) CELL PROPERTIES VALUE 

¿Por qué necesita el DrilldownLevel (... [Todos])? ¿Existe alguna opción en alguna parte que pueda cambiar para que Excel no genere esa parte de la consulta para que se ejecute más rápido?

+0

Tal vez sea el crossjoin y el drilldownlevel, ya que la función drilldownlevel no es lenta. Combinar diferentes jerarquías de la misma dimensión puede llevar mucho tiempo (debe realizar autoexistencias en todas las combinaciones) ... no resuelve su problema, pero puede ayudarlo a comprender – ic3

+0

¿Es lento tanto para jerarquías de atributos como para jerarquías? –

Respuesta

0

Desafortunadamente, aunque he trabajado con Excel y tablas dinámicas en SSAS MOLAP Cubes, todavía no he encontrado un mecanismo en Excel puro para alterar las consultas que genera.

Sin embargo, he usado una herramienta de terceros llamada XLCubed que es bastante poderosa cuando se trabaja con Excel y consultas MDX desde cubos OLAP OLAP, ¿puedo sugerirle que lo intente? Incluso puede reemplazar el MDX que utilizará para una "Cuadrícula" con MDX totalmente personalizado como lo ha hecho anteriormente. Aunque encuentro que esto no suele ser necesario, su reemplazo de tablas dinámicas "Grid" parece generar un MDX mucho más eficiente en general.

Que los Dioses de SSAS te acompañen.