基于非关联门店阶段字段在DAX中计算库存数量
数据概览
ID表
ID 001 002
REQ表
ID ITEM QUANT 001 chips 20 002 chips 100
注:实际商品为 corn chips
SCHEDULE表
1 001 cleaning 1 002 normal 2 001 normal 2 002 remodel 3 001 normal 3 002 remodel 4 001 remodel 4 002 cleaning
目标计算结果表
| id_store | 1 | 2 | 3 | 4 | |
|---|---|---|---|---|---|
| 001 | phase | cleaning | normal | normal | remodel |
| quant | 0 | 20 | 20 | 5 | |
| 002 | phase | normal | remodel | remodel | cleaning |
| quant | 100 | 5 | 5 | 0 |
需求说明
需根据门店所处阶段计算对应库存数量(quant),规则如下:
- 门店处于
cleaning阶段时,quant为0 - 门店处于
remodel阶段时,quant为5 - 其余情况取REQ表中对应门店的quant值
DAX表达式实现
通过LOOKUPVALUE获取当前上下文的门店阶段,再结合SWITCH函数实现规则判断:
Calculated Quant = VAR CurrentStore = SELECTEDVALUE('ID'[ID]) VAR CurrentPeriod = SELECTEDVALUE('SCHEDULE'[Period]) -- 需匹配SCHEDULE表中周期列的实际名称 VAR StorePhase = LOOKUPVALUE( 'SCHEDULE'[Phase], -- 需匹配SCHEDULE表中阶段列的实际名称 'SCHEDULE'[ID], CurrentStore, 'SCHEDULE'[Period], CurrentPeriod ) VAR BaseQuant = LOOKUPVALUE( 'REQ'[QUANT], 'REQ'[ID], CurrentStore ) RETURN SWITCH( TRUE(), StorePhase = "cleaning", 0, StorePhase = "remodel", 5, BaseQuant )
注意:请根据实际表结构调整表达式中的字段名称;若模型中ID表、REQ表、SCHEDULE表已通过ID字段建立关联,上下文传递会更顺畅。
内容的提问来源于stack exchange,提问作者manny
相关产品推荐
相关产品推荐

