Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

FILTER, ORDER E WHERE

Entendi o critério de ordenação e filtro. Tambem entendi o ROWS e COLUMNS... Mas ainda não entendi o que seria o WHERE. Sei bem o que é um WHERE em SQL. Mas no MDX ficou confuso...

Nesta consulta, para que serve o where em tempo?

SELECT
FILTER	(
            ORDER	(
            CROSSJOIN	(
                        ({[Cliente].[Regiao].&[Sul], [Cliente].[Regiao].&[Centro Oeste], [Cliente].[Regiao].&[Sudeste]}),
                        ({	[Produto].[Hierarquia Departamento].[Nivel Setor].&[Mercearia],
                            [Produto].[Hierarquia Departamento].[Nivel Setor].&[Carnes],
                            [Produto].[Hierarquia Departamento].[Nivel Setor].&[Laticínios],
                            [Produto].[Hierarquia Departamento].[Nivel Setor].&[Bebidas] })
                        )
                    , [Measures].[Valor Da Venda], BDESC -- coloca um B na clausula
                    )
        , [Measures].[Valor Da Venda] >= 1000000) -- Assim funciona. 
ON ROWS,
({ [Measures].[Valor Da Venda]  })
ON COLUMNS
FROM [DW ATACADEZ]
WHERE
({ [Tempo].[Ano].&[2021] });
2 respostas
solução!

Oi Ceilton,

Entendo sua confusão com o WHERE no MDX, especialmente quando comparado ao SQL.

No MDX, o WHERE funciona como um filtro de contexto, definindo quais membros de uma dimensão serão considerados no cálculo das medidas. 🤔

Na sua consulta, o WHERE ({ [Tempo].[Ano].&[2021] }) especifica que você quer analisar os dados apenas para o ano de 2021.

Ou seja, todas as medidas (como [Measures].[Valor Da Venda]) serão calculadas considerando apenas as vendas realizadas nesse ano.

Sem o WHERE, a consulta consideraria todos os anos disponíveis.

Enquanto o FILTER dentro do ROWS seleciona quais combinações de região e setor serão exibidas com base no valor da venda, o WHERE restringe o contexto temporal da análise. 💪

Para saber mais:

Continue explorando o MDX 😎

Obrigado Luis.