Pergunta

Quero criar um gráfico de barras com uma barra para cada mês e alguma medida.

Mas também quero filtrar em um intervalo de dias que pode não se sobrepor completamente em parte do mês.

Quando isso acontecer, gostaria que a contagem agregada desses meses agregasse apenas os dias que se enquadram no meu intervalo de datas e não obtivesse o agregado do mês inteiro.

Isso é possível com MDX e, se for, como deve ser a solicitação?

Foi útil?

Solução

Crie uma dimensão secundária, usando uma dimensão virtual da dimensão original.Use uma dimensão no Onde e outra no Select.

Isso geralmente acontece de qualquer maneira se algumas pessoas querem "tempo comercial" de trimestres e períodos, e outros preferem meses.Ou se você tiver um exercício que é executado em abril a abril.

Outras dicas

Você pode usar subseleção.Você pode encontrar mais informações sobre isso página e isto página:

Quando um membro é especificado na cláusula do eixo, esse membro com seus ascendentes e descendentes é incluído no espaço do sub -cubo para o subseleção;Todos os membros de irmãos não mencionados, na cláusula de eixo ou slicer, e seus descendentes são filtrados do subespaço.Dessa forma, o espaço da seleção externa foi limitado aos membros existentes na cláusula do eixo ou na cláusula de fatia, com seus ascendentes e descendentes, como mencionado anteriormente.

Aqui está um exemplo:

SELECT { [Customer].[Customer Geography].[Country].&[Australia]
       , [Customer].[Customer Geography].[Country].&[United States]
       } ON 1
     ,  {[Measures].[Internet Sales Amount], [Measures].[Reseller Sales Amount]} ON 0
  FROM ( SELECT {[Customer].[Customer Geography].[Country].&[Australia]
                 , [Customer].[State-Province].&[WA]&[US]} ON 0
           FROM [Adventure Works]
        )

O resultado conterá uma linha para Autralia e outro para United States.Com a subseleção, restrinjai o valor de United Stated para o Washington estado.

Uma maneira que encontrei de fazer isso com Mondrian é a seguinte

WITH MEMBER [Measures].[Units Shipped2] AS
SUM
(
 {
  exists([Store].[Store Country].currentmember.children,{[Store].[USA].[WA],[Store].[USA].[OR]})
 },[Measures].[Units Shipped]
)
MEMBER [Measures].[Warehouse Sales2] AS
SUM
(
 {
  exists([Store].[Store Country].currentmember.children,{[Store].[USA].[WA],[Store].[USA].[OR]})
 },[Measures].[Warehouse Sales]
)
SELECT 
{[Measures].[Units Shipped2],[Measures].[Warehouse Sales2]} ON 0,
NON EMPTY [Store].[Store Country].Members on 1
FROM [Warehouse]

Não tenho certeza se a filtragem será feita em SQL como abaixo e dará bom desempenho ou será executada localmente

select Country, sum(unit_shipped)
where state in ('WA','OR' )
group by Country 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top