AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 153960
Accepted
Sir Swears-a-lot
Sir Swears-a-lot
Asked: 2016-11-02 16:37:48 +0800 CST2016-11-02 16:37:48 +0800 CST 2016-11-02 16:37:48 +0800 CST

SSAS 如何计算标准差

  • 772

我正在尝试跨标准偏差和平均值等一系列数据计算各种统计计算。

数据来自许多不同的“数据源”。这些都保存在一个维度中。

我尝试使用此示例STDDEVP中所示的函数,该函数对度量进行操作。

但结果是错误的。我认为这是错误的,因为它处理的是总数而不是原始数据。[Sum of Values] 是对事实表中的数据求和的标准聚合度量。

按照格雷格提供的链接,我现在正在使用这个:

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'; 

这给了我这个:

在此处输入图像描述

这仍然是不正确的。

使用 SQL 如果我使用STDDEV以下查询计算 Air Temp:

  SELECT stdevp([Value])
  FROM [EnvironmentalDataMart].[DDS_HILLTOP].[factTimeSeries]
  where [DETL_DataSourceSurrogateKey] = 78

我得到:6.13770334742149

如何让 MDX 查询计算STDDEV我的维度中的每个数据源?

我也尝试过使用“无聚合”的 Measure,但它没有返回任何内容。

ssas olap
  • 3 3 个回答
  • 1541 Views

3 个回答

  • Voted
  1. Best Answer
    GregGalloway
    2016-11-06T19:39:13+08:002016-11-06T19:39:13+08:00

    根据您传入的第一个参数,StDev 函数确实以汇总粒度运行。如果您总是想在最低级别计算 StDev,那么您可以编写一些数学上等效的度量并避免使用 StDev MDX 函数。此处描述了此方法。让我知道这是否没有意义。MDX 将是:

    (([Measures].[Sum of Square] - (([Measures].[Sum of Values]^2)/[Measures].[Count of Values]))/[Measures].[Count of Values])^0.5
    

    有关他所采取步骤的完整解释,请参阅彼得的回答。

    此外,如果您坚持使用当前使用的 MDX 方法,您将需要按如下方式修复第一个参数。您的代码将总计计入计算中。此 MDX 不会:

    STDDEVP( {[Data Source].[Data Source Name].[Data Source Name].MEMBERS},[Measures].[Total])
    
    • 3
  2. Sir Swears-a-lot
    2016-11-09T19:56:09+08:002016-11-09T19:56:09+08:00

    要使其正常工作,您需要:

    1. 在 DMV 中添加一列以生成原始值的平方。

      SELECT [Value], square([Value]) as ValueSquared
      FROM factTable 
      
    2. 对原始值求和的度量。[Sum of Values]

    3. 对原始值的平方求和的度量。[Sum of Square]

    4. 计数措施[Count of Values]

    5. 计算的度量语法是:

      CREATE MEMBER CURRENTCUBE.[Measures].[Standard Deviation]
      AS (([Measures].[Sum of Square] - (([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';
      
    • 3
  3. Hila DG
    2016-11-02T19:22:06+08:002016-11-02T19:22:06+08:00

    如果你想在原始数据上使用它(也就是说,在整个 SQL 表上)它应该在 SQL 级别上运行,不需要为此进行聚合。所以代码 1 的标准偏差有效,所以我建议:在您的 DMV 中添加一个列,该列是针对[数据源名称]上的整个列的标准偏差计算的。

    • 1

相关问题

  • 寻找 cognos express 的更轻量级替代品 [关闭]

  • SSAS:移动 tempdb 数据库

  • OLAP 多维数据集中的布尔字段

  • SQL Server 2008 分析服务 DSO 属性

  • SSAS 维度层次结构导致部署错误

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve