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

船舶振动数据建模与可视化:Order筛选及图表构建咨询

翻译后的问题

现有包含Vessel(船舶)、Date(日期)、Mode(模式)、Side(舷侧)、Plane(平面)等多维度的船舶振动数据集,需要将Order字段取最近半整数后筛选出{0.5,1.5,2.0,2.5,3.0}范围内的值,以此为系列构建Velocity(振动速度)vs Nominal Speed(标称转速)的散点/折线图。请问是否需要为每个细分维度(比如James船左舷轴向面950rpm)单独构建CALCULATETABLE(FILTER(ALL))表达式,再将这些数据集作为图表值?


解决方案建议

完全不用给每个细分维度单独写CALCULATETABLE(FILTER(ALL)),这种做法太冗余,推荐两种更高效的实现方式:

方式一:计算列+筛选器联动(直观易维护)

  1. 先给数据集新增计算列,处理Order字段取最近半整数:
    处理后Order = MROUND('振动数据集'[Order], 0.5)
    
  2. 再新增一个标记列,筛选出符合范围的值:
    符合条件Order = IF('振动数据集'[处理后Order] IN {0.5,1.5,2.0,2.5,3.0}, "是", "否")
    
  3. 直接使用原始数据集构建图表:
    • 将符合条件Order设为页面/图表级筛选器,只勾选"是"
    • 把Nominal Speed拖到X轴,Velocity拖到Y轴
    • 把Vessel、Side、Plane等细分维度拖到「图例」区域,图表会自动按维度分组生成对应系列,完全不用手动拆分数据集

方式二:度量值动态计算(无计算列场景适用)

如果不想新增计算列,直接写一个度量值控制有效数据的聚合:

有效振动速度 = 
CALCULATE(
    AVERAGE('振动数据集'[Velocity]), // 可根据需求替换为SUM/MAX等聚合函数
    FILTER(
        '振动数据集',
        MROUND('振动数据集'[Order], 0.5) IN {0.5,1.5,2.0,2.5,3.0}
    )
)

使用时把Nominal Speed拖到X轴,这个度量值拖到Y轴,再将细分维度拖到图例,图表会自动根据上下文拆分每个维度的系列,还能动态响应筛选器的变化。

核心逻辑

DAX的核心优势就是利用上下文自动分组,只要把细分维度字段放到图表的图例/筛选面板,它会自动帮你拆分每个维度的数据集,手动写N个CALCULATETABLE完全是做无用功,既浪费时间又不利于后期维护。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 14:32:33