You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Power BI中如何将度量值用作切片器实现库存状态筛选

Power BI中如何将度量值用作切片器实现库存状态筛选

嘿,我来帮你搞定这个需求!你已经写了判断库存状态的度量值逻辑,现在要把它做成切片器来筛选表格数据,核心思路是先建一个静态的状态选项表,再让度量值和切片器联动起来,具体步骤一步步来:


第一步:创建库存状态辅助表(切片器数据源)

度量值本身没法直接作为切片器的数据源,所以我们得先建一个包含所有库存状态选项的静态表:

  • 点击顶部菜单栏的「建模」→「新建表」
  • 输入下面的DAX代码生成选项表:
库存状态选项 = {"Under Stock", "Over Stock", "Optimal Stock"}

这个表会生成三行数据,正好对应你需要的三个筛选维度。

第二步:完善StockStatus度量值,实现切片器联动

你原来的度量值已经能判断单条数据的库存状态,但还需要加上响应切片器筛选的逻辑。我先把你未写完的Footwear部门逻辑补全,再添加切片器联动的代码:

StockStatus = 
VAR Department = SELECTEDVALUE('3_month_sales_&stock'[Department])
VAR StockHoldingDays = '3_month_sales_&stock'[StockHoldingDays]
VAR SelectedStatus = SELECTEDVALUE('库存状态选项'[Value]) -- 获取切片器选中的状态

RETURN
IF(
    ISBLANK(StockHoldingDays),
    "",
    VAR CurrentStatus = SWITCH(
        TRUE(),
        Department = "Kids", IF(StockHoldingDays > 120, "Over Stock", IF(StockHoldingDays < 90, "Under Stock", "Optimal Stock")),
        Department = "Ladies", IF(StockHoldingDays > 120, "Over Stock", IF(StockHoldingDays < 90, "Under Stock", "Optimal Stock")),
        Department = "Mens", IF(StockHoldingDays > 120, "Over Stock", IF(StockHoldingDays < 90, "Under Stock", "Optimal Stock")),
        Department = "Footwear", IF(StockHoldingDays > 120, "Over Stock", IF(StockHoldingDays < 90, "Under Stock", "Optimal Stock")),
        "" -- 其他无匹配的部门返回空值
    )
    RETURN
    -- 切片器无选中时返回所有状态,选中后只显示匹配的状态
    IF(ISBLANK(SelectedStatus), CurrentStatus, IF(CurrentStatus = SelectedStatus, CurrentStatus, BLANK()))

第三步:配置切片器和表格视觉

  • 从字段列表里找到新建的「库存状态选项」表,把「Value」字段拖到画布上,生成一个切片器
  • StockStatus度量值、部门、库存天数等你需要展示的字段拖进表格视觉组件
  • 现在点击切片器里的任意状态,表格就会自动筛选出对应状态的数据啦!

额外小技巧:如果数据量不大,也可以用计算列替代

如果你的数据集规模较小,直接把库存状态做成计算列会更简单,不需要辅助表就能直接当切片器用:

StockStatus_计算列 = 
VAR Department = '3_month_sales_&stock'[Department]
VAR StockHoldingDays = '3_month_sales_&stock'[StockHoldingDays]

RETURN
IF(
    ISBLANK(StockHoldingDays),
    "",
    SWITCH(
        TRUE(),
        Department = "Kids", IF(StockHoldingDays > 120, "Over Stock", IF(StockHoldingDays < 90, "Under Stock", "Optimal Stock")),
        Department = "Ladies", IF(StockHoldingDays > 120, "Over Stock", IF(StockHoldingDays < 90, "Under Stock", "Optimal Stock")),
        Department = "Mens", IF(StockHoldingDays > 120, "Over Stock", IF(StockHoldingDays < 90, "Under Stock", "Optimal Stock")),
        Department = "Footwear", IF(StockHoldingDays > 120, "Over Stock", IF(StockHoldingDays < 90, "Under Stock", "Optimal Stock")),
        ""
    )

做完计算列后,直接把它拖到画布上就能生成切片器,操作更省心~

备注:内容来源于stack exchange,提问作者THASNI HAKEEM

火山引擎 最新活动