Estou tentando calcular uma variedade de cálculos estatísticos em uma variedade de dados, como desvio padrão e média.
Os dados vêm de muitas "fontes de dados" diferentes. Estes são mantidos em uma dimensão.
Tentei usar STDDEVP
a função conforme mostrado neste exemplo , que opera em uma medida.
Mas os resultados estavam errados. Presumo que esteja errado porque está trabalhando com totais em vez de dados brutos. [Soma de valores] é uma medida agregada padrão que soma os dados na tabela de fatos.
Seguindo o link fornecido por Greg, agora estou usando isso:
CREATE MEMBER CURRENTCUBE.[Measures].[Standard Deviation]
AS (([Measures].[Sum of Values]^2 - (([Measures].[Sum of Values]^2)/[Measures].[Count of Values])/[Measures].[Count of Values])^0.5),
FORMAT_STRING = "#,##0.00;-#,##0.00", VISIBLE = 1 , ASSOCIATED_MEASURE_GROUP = 'Fact TS Data';
O que me dá isso:
O que ainda não está correto.
Usando SQL Se eu calcular STDDEV
a temperatura do ar com a seguinte consulta:
SELECT stdevp([Value])
FROM [EnvironmentalDataMart].[DDS_HILLTOP].[factTimeSeries]
where [DETL_DataSourceSurrogateKey] = 78
Eu recebo: 6.13770334742149
Como faço para obter a consulta MDX para calcular uma STDDEV
fonte de dados por na minha dimensão?
Também já tentei usar uma Medida com "Sem agregação" mas não retornou nada.
A função StDev opera em uma granulação cumulativa de acordo com o primeiro parâmetro que você passa. Se você sempre deseja calcular o StDev no nível mais baixo, pode escrever algumas medidas matematicamente equivalentes e evitar a função StDev MDX. Essa abordagem é descrita aqui . Deixe-me saber se isso não faz sentido. O MDX seria:
Veja a resposta de Peter para uma explicação completa dos passos que ele deu.
Além disso, se você continuar com a abordagem MDX que está usando atualmente, deverá corrigir o primeiro parâmetro da seguinte maneira. Seu código está considerando o total geral no cálculo. Este MDX não:
Para fazer isso funcionar você precisa:
Para adicionar uma coluna em seu DMV para produzir o quadrado do valor bruto.
Uma medida que soma os valores brutos.
[Sum of Values]
Uma medida que soma o quadrado dos valores brutos.
[Sum of Square]
Uma medida de contagem
[Count of Values]
A sintaxe da medida calculada é:
Se você quiser usá-lo em dados brutos (ou seja, em toda a tabela SQL), ele deve ser executado no nível SQL, sem necessidade de agregação para isso. Portanto, o desvio padrão no código 1 funciona, então sugiro: Em seu DMV, adicione uma coluna que é calculada para o desvio padrão da coluna inteira sobre o [nome da fonte de dados].