You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MDX查询中添加第二个度量,实现双度量滚动12个月数据查询?

MDX查询添加多度量滚动12个月数据的解决方案

问题原因

原查询在WHERE子句(切片器)中指定多个度量成员导致报错,因为MDX的切片器用于筛选多维数据集的单一切片,对Measures维度而言,切片器仅支持指定单个成员作为过滤条件,无法直接通过切片器返回多个度量的结果。

修改后的可行查询

方式1:将度量与时间周期交叉放在列轴

SELECT 
  NON EMPTY 
    CrossJoin(
      {LastPeriods(12,[Time].[By Fiscal Year].[Period].&[Jul-21])},
      {[Measures].[measure1], [Measures].[measure2]}
    ) ON COLUMNS
 ,[Customer].[CustomerName].[CustomerName].MEMBERS ON ROWS
FROM 
(
  SELECT 
    [CustomerNamedSet] ON COLUMNS
  FROM [CSIS]
  WHERE 
    {[Time].[By Fiscal Year].[Period].&[Jul-21]}
);

方式2:将度量与客户交叉放在行轴

SELECT 
  NON EMPTY 
    {LastPeriods(12,[Time].[By Fiscal Year].[Period].&[Jul-21])} ON COLUMNS
 ,NON EMPTY
    CrossJoin(
      [Customer].[CustomerName].[CustomerName].MEMBERS,
      {[Measures].[measure1], [Measures].[measure2]}
    ) ON ROWS
FROM 
(
  SELECT 
    [CustomerNamedSet] ON COLUMNS
  FROM [CSIS]
  WHERE 
    {[Time].[By Fiscal Year].[Period].&[Jul-21]}
);

关键修改说明

  1. 移除切片器中的度量集合:将原本放在WHERE子句的多度量移至查询的轴(COLUMNS或ROWS)中,这是MDX展示多度量的标准方式。
  2. 使用CrossJoin关联维度:通过CrossJoin函数将时间周期与度量(或客户与度量)进行交叉,确保每个时间周期的两个度量值都能被返回。
  3. 保留原有筛选逻辑:子查询对CustomerNamedSet的筛选、时间基准周期的设定均保持不变,保证滚动12个月的计算逻辑正确。

内容的提问来源于stack exchange,提问作者kpsr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 21:11:05