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

MDX查询需求:按年份列、街区行展示出行量占比(百分比)

MDX查询修正方案

问题分析

原代码的核心问题在于分母的总出行量计算逻辑错误:

  • 原分母使用[start station].[start station]未明确指定全量成员,无法正确获取总出行量;
  • 未根据需求锁定分母的筛选范围(是按年份总出行量还是全时段总出行量)。

根据你给出的示例(2015年Downtown占比基于当年总出行量),以下是两种场景的修正方案:


场景1:占比为「街区当年出行量 / 当年所有街区总出行量」

修正后的MDX代码:

WITH 
  MEMBER [Measures].[Percentage] AS 
    Divide(
      [Measures].[Trip Count],
      -- 计算当前年份下所有街区的总出行量
      ([Measures].[Trip Count], [start station].[neighborhood].AllMembers)
    ) 
   ,FORMAT_STRING = "percent" 
SELECT 
  [start time].[start time].[YearL].[2014] : [2015] ON COLUMNS
 ,[start station].[start station].[neighborhood] ON ROWS
FROM [Cube];

修正点说明

  • 分母使用[start station].[neighborhood].AllMembers,确保计算当前年份下所有街区的总出行量;
  • Divide函数自动处理除零情况,避免报错;
  • 保留FORMAT_STRING = "percent"确保结果以百分比格式显示。

场景2:占比为「街区当年出行量 / 全时段所有街区总出行量」

如果需要以所有年份的总出行量为基准,修正代码如下:

WITH 
  MEMBER [Measures].[Percentage] AS 
    Divide(
      [Measures].[Trip Count],
      -- 计算所有年份、所有街区的总出行量,不受行列筛选影响
      ([Measures].[Trip Count], [start station].[neighborhood].AllMembers, [start time].[YearL].AllMembers)
    ) 
   ,FORMAT_STRING = "percent" 
SELECT 
  [start time].[start time].[YearL].[2014] : [2015] ON COLUMNS
 ,[start station].[start station].[neighborhood] ON ROWS
FROM [Cube];

修正点说明

  • 分母额外添加[start time].[YearL].AllMembers,排除时间维度的筛选,获取全时段总出行量;
  • 确保每个单元格的占比都基于全局总出行量计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 22:55:16