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

SSAS Cube中MDX如何实现类似LIKE '6%'的账户金额查询?

解决SSAS Cube中筛选以6开头的账户金额问题

嘿,这个需求在SSAS Cube里完全能搞定,给你几个实用的方案,你可以根据自己的场景来选:

方案一:用MDX Filter+Left函数实时筛选

这是最直接的写法,不需要修改Cube结构,直接通过MDX遍历并筛选成员:

SELECT 
  [Measures].[Amount] ON COLUMNS,
  Filter(
    [Account].[Syntetic account].Members,
    -- 这里根据实际情况选Name或Key,比如成员名称是纯编码就用Name,键包含前缀就处理Key
    Left([Account].[Syntetic account].CurrentMember.Name, 1) = '6'
  ) ON ROWS
FROM [你的Cube名称]

如果你的成员键格式是&[P]&[602]这种带前缀的,那可以拆分键来取编码部分:

Filter(
  [Account].[Syntetic account].Members,
  Left(Split([Account].[Syntetic account].CurrentMember.Key, "&").Item(2), 1) = '6'
)

这个方法的好处是灵活,不用改Cube,但如果账户成员很多,性能可能会稍差一点。

方案二:用StrToSet结合通配符快速匹配

如果你的账户成员的键/名称符合可通配的格式,SSAS支持用*作为通配符来匹配,写法更简洁:

SELECT 
  [Measures].[Amount] ON COLUMNS,
  StrToSet("[Account].[Syntetic account].[Syntetic account].&[P]&[6*]") ON ROWS
FROM [你的Cube名称]

注意:这个方法需要确保你的Cube维度支持模糊匹配,而且成员的键结构确实是&[P]&[xxx]这种,通配符*能正确匹配到以6开头的编码部分。

方案三:预计算属性(性能最优,适合频繁使用)

如果这个筛选是常用需求,建议直接在维度设计阶段添加一个计算属性,比如「账户首字符」:

  1. 在SSAS维度设计器中,找到账户维度的数据源视图,添加一个计算列,公式为:LEFT([你的账户编码字段], 1)
  2. 将这个计算列添加为维度的属性,部署Cube
  3. 之后查询时直接筛选这个属性即可:
SELECT 
  [Measures].[Amount] ON COLUMNS,
  [Account].[账户首字符].&[6] ON ROWS
FROM [你的Cube名称]

这个方法因为提前预计算了属性,查询性能会比实时筛选好很多,适合频繁使用该筛选的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 09:07:47