尝试计算 MDX 中的四分位数

2024-01-16

我的数据如下所示:

ID                                   |PersonID  |CompanyID  |DateID  |Throughput |AmountType
33F467AC-F35B-4F24-A05B-FC35CF005981 |7         |53         |200802  |3          |0
04EE0FF0-511D-48F5-AA58-7600B3A69695 |18        |4          |201309  |5          |0
AB058AA5-6228-4E7C-9469-55827A5A34C3 |25        |69         |201108  |266        |0

大约有一百万行。列名 *ID 引用其他表,因此它们可以用作维度。

我有一个 OLAP 多维数据集,其中吞吐量列作为度量,其余作为维度。

我想计算吞吐量度量的第一和第三四分位数。

我遵循了这个指南:https://electricvoid.wordpress.com/2011/06/24/ssas-quartile/ https://electrovoid.wordpress.com/2011/06/24/ssas-quartile/连同这篇文章:在 Analysis Services 中计算四分位数 https://stackoverflow.com/questions/31532268/calculating-quartiles-in-analysis-services

我尝试使用此 MDX 查询:

WITH
SET selection as ([Dates].[Year].&[2014],[Dates].[Month].&[1])  

SET [NonEmptyIds] AS
 NonEmpty(
      [ThroughputID].[ID].[id]
   *[ThroughputID].[ID].[Id].ALLMEMBERS
  ,
  {[Measures].[Throughput]} * [selection]
 )
 SET [ThroughputData] AS 
ORDER
    (    
        [NonEmptyIds],  
        [Measures].[Throughput], 
        BASC
     )
MEMBER [Measures].[RowCount] AS COUNT (ThroughputData)
MEMBER [Measures].[i25] AS ( .25 *  ( [RowCount] - 1 ) ) + 1
MEMBER [Measures].[i25Lo] AS FIX([i25])   - 1
MEMBER [Measures].[i25Rem] AS ([i25] - FIX([i25]))
MEMBER [Measures].[n25Lo] AS (ThroughputData.Item([i25Lo]), [Throughput])
MEMBER [Measures].[n25Hi] AS (ThroughputData.Item([i25Lo] + 1), [Throughput])
MEMBER [Measures].[Quartile1] AS [n25Lo] + ( [i25Rem] * ( [n25Hi] - [Throughput] ))

SELECT
selection ON 0,
[Measures].[Quartile1]
ON 1
FROM (SELECT [Dates].[Y-H-Q-M].MEMBERS ON 0 FROM [Throughput])

但我得到:“Query (6, 7) ID 层次结构在 Crossjoin 函数中多次使用。”

我对 OLAP 和 MDX 还很陌生。任何想法出了什么问题以及我应该如何正确计算四分位数?

我在某处读到,在计算四分位数时,我需要 ID 维度才能获得包含所有值而不是聚合值的集合...


罪魁祸首是以下代码:

SET [NonEmptyIds] AS
 NonEmpty(
      [ThroughputID].[ID].[id]
   *[ThroughputID].[ID].[Id].ALLMEMBERS
  ,
  {[Measures].[Throughput]} * [selection]
 )

您不能在交叉连接中多次使用同一层次结构。这里你已经使用了[ThroughputID].[ID]两次。相反,请尝试以下操作:

SET [NonEmptyIds] AS
 NonEmpty(
      [ThroughputID].[ID].[Id].ALLMEMBERS
  ,
  {[Measures].[Throughput]} * [selection]
 )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试计算 MDX 中的四分位数 的相关文章

  • 交叉连接同一个表中的 N 组行

    我有一个通用的 Dimension 和 DimensionMember 表 CREATE TABLE dbo Dimension ID int NOT NULL IDENTITY 1 1 Label nvarchar 255 CREATE
  • SQL INNER JOIN 语法

    下面的两位 SQL 得到相同的结果 SELECT c name o product FROM customer c order o WHERE c id o cust id AND o value 150 SELECT c name o p
  • 结合 2 df 使用 cross_join 的先前结果和增长率进行预测

    在我之前的问题中here https stackoverflow com questions 76621713 combine 2 df with a for loop to make projections noredirect 1 co
  • SSAS - 显示行上的度量

    总的来说 我对 MDX 和 SSAS 很陌生 我正在尝试以漂亮的表格形式获取所有措施和日期 所以像这样 Measure Date Value Meas1 D1 3 Meas1 D2 8 Meas1 D3 9 Meas2 D1 7 Meas2
  • MDX - NON EMPTY 函数更快?

    我当时的假设是NON EMPTY必须尽可能避免使用该子句 因此 当我意外地发现它实际上使查询速度更快时 我感到震惊 示例如下 select Measures Count Of Requests on 0 Client Client Numb
  • SSAS 计算成员聚合问题

    我有一个非常简单的计算成员 CREATE MEMBER CURRENTCUBE Account Account Parent amp NA 1 Beginning Subscribers AS Account Account Parent
  • Excel 中具有多个条件的 CUBESET() 函数

    我正在尝试在 Excel 中创建 CUBESET 函数 但我不知道如何使用多个条件过滤它同一维度内 这就是我迄今为止所遵循的一个标准 示例1 CUBESET ThisWorkbookDataModel Facebook Bucket C A
  • 在单个 MDX 查询中多次使用 IIF() 函数时无法正常工作

    我需要使用单个 MDX 查询根据两个条件获取聚合值 Am having below data 我在下面的查询中使用 IIF 函数创建了两个计算函数 WITH MEMBER Measures Expression1 AS IIF EMPLOY
  • 强制 mdx 查询返回列名

    从 powerpivot 连接到 SSAS 时 我遇到以下问题 如果由于某种原因 mdx 查询没有返回行 也不会返回列名 并且 powerpivot 会给出错误 在 SSMS 中执行此类查询时 如果 mdx 什么也不返回 则得到 0 行 如
  • MDX 查询返回记录数

    以下是我的 MDX 查询 SELECT NON EMPTY Measures Fact Sample Count ON COLUMNS NON EMPTY Fact Sample Sample Reference No Sample Ref
  • MDX - TopCount 加“其他”或“其余”

    我创建了一个 MDX 查询 用于计算前 10 个邮政编码 根据我的患者住院测量 如下所示 WITH MEMBER Discharge Date Y M D Aggregation AS AGGREGATE EXISTING Current
  • PySpark 中内存高效的笛卡尔连接

    我有一个大型字符串 id 数据集 可以放入 Spark 集群中单个节点的内存中 问题是它消耗了单个节点的大部分内存 这些 ID 的长度约为 30 个字符 例如 ids O2LWk4MAbcrOCWo3IVM0GInelSXfcG HbDck
  • 在尝试删除集合之前测试它是否存在

    In SQL在删除表之前 我将首先检查它是否存在 以免导致错误 如下所示 IF OBJECT ID TEMPDB table IS NOT NULL BEGIN DROP TABLE table END In MDX我可以用一种方法来检查是
  • sql 中交叉连接的组合(不是排列)

    如果我有一个表想要交叉连接到自身 如何删除重复的行 或者换句话说 我怎样才能进行 顺序无关紧要 的交叉连接 例如 如果我有一个表 T field A B C 我交叉连接到自身 这样我就不会得到 A 一行 T as t1 cross join
  • 将列列表作为向量传递给 data.table 的 CJ

    我有以下代码 main cols lt c num let dt lt data table num 1 5 let letters 1 5 dt new dt lt dt CJ num num let let unique TRUE on
  • 计算成员中的 WHERE 子句

    我面临一些通过比较维度值来计算值的问题 我有 3 个维度 数据类型 客户 产品 和一个度量 GrossSales 如果我想要 ProductID 1 2 3 且 Dataype 4 5 6 的 GrossSales MDX 查询是什么 这里
  • 如何在MDX查询中的行上显示多个维度?

    我有一个叫做Sales KG在我的立方体和二维中 Groups and Formats 有没有办法在单行中显示最后一个 我有这样的疑问 select Measures Sales KG on Columns Formats Format T
  • 基于不同 ID 的 SSAS 聚合

    我希望将不同 ID 值的默认聚合从 SUM 更改为 SUM 这是当前的行为 ID Amount 1 10 1 10 2 20 3 30 3 30 Sum Total 90 默认情况下 我会收到 90 美元 我希望对不同的 id 进行求和并得
  • 使用 MDX 查询列出维度成员

    有没有办法列出维度成员而不获取每个成员的默认度量 您可以在相反的轴上选择任何内容 SELECT on 0 DESCENDANTS Dimension Hierarchy on 1 FROM Cube 选择空集可防止 SSAS 在相反轴上添加
  • 以编程方式添加 Adomd 参数 C#

    下午都 我正在构建一个 Web 应用程序 并尝试从 SSAS 多维数据集中提取一些数据 我想在 c 中复制以下 MDX 但添加一些参数 即两个参数 一个用于公司 123 另一个用于位置 1 SELECT NON EMPTY Dim Unit

随机推荐