Excel 是否可以将DAX函数转换为度量值,以便使用切片器进行过滤?
我只是在用DAX之类的东西把我的脚弄湿,我知道我正在寻找的解决方案可能非常简单和简单,但它是我所知的最前沿 我真的希望你能帮我:) 我处理的数据是一个巨大的索赔清单 当Excel 是否可以将DAX函数转换为度量值,以便使用切片器进行过滤?,excel,dax,powerpivot,slicers,Excel,Dax,Powerpivot,Slicers,我只是在用DAX之类的东西把我的脚弄湿,我知道我正在寻找的解决方案可能非常简单和简单,但它是我所知的最前沿 我真的希望你能帮我:) 我处理的数据是一个巨大的索赔清单 当'Claim ID'已'Ready for Review'且'Complete' 由于业务的性质,有时索赔在“完成”后会返回到“准备审查”,因此一些“索赔ID”可以有多行标记为“准备审查” 现在我有三个DAX函数来计算索赔当前是否已准备好进行审查 栏目等: RFE状态历史记录是表 Timestamp将日期和时间向下显示到第二个 索
'Claim ID'
已'Ready for Review'
且'Complete'
由于业务的性质,有时索赔在“完成”后会返回到“准备审查”,因此一些“索赔ID”
可以有多行标记为“准备审查”
现在我有三个DAX函数来计算索赔当前是否已准备好进行审查
栏目等:
RFE状态历史记录是表
Timestamp
将日期和时间向下显示到第二个
索赔Id
是索赔编号
状态标签
将为“准备好查看”或“完成”
它按索赔编号过滤,然后输出批次的最新日期
IsLatest: =
IF('RFE State History'[Timestamp]='RFE State History'[MaxDate],"Latest")
当MaxDate
值等于此行的日期时,输出“Latest”
当列IsLatest
为“最新”时,输出“1”
然后,我在透视表中使用“Redy for Review”来总结在特定时刻有多少索赔准备好进行审查
我需要做的是:
我希望能够使用切片器告诉您在过去的任何一天有多少索赔准备好进行审查(并且分别:在一天中的每个小时,以便我们可以跟踪一天中的进度)
在谷歌上搜索了几个星期后,我发现了这些:
~
~
~
~
这让我相信我需要编写一个度量,它基本上可以同时使用FILTER和summarizecolumn实现三个DAX函数(MaxDate
、IsLatest
、和Ready for Review
),这样就可以使用切片器对它们进行过滤
就像我在上面说的:我非常确定解决方案非常简单;我试过用我的手来调整它们,但运气不好。我在DAX世界才刚刚起步,所以我知道还有很多我不知道,也没有完全掌握
我真的希望你能帮我,为我指明正确的方向
提前感谢:)如果我理解正确,您想计算在您使用切片机选择的给定日期或小时内准备好进行审查的索赔数量吗
如果是这种情况,您可以:
使用以下代码创建新的计算表。您可以在“建模”菜单中计算列的按钮旁边找到它
DateTime =
ADDCOLUMNS (
CROSSJOIN (
CALENDAR ( DATE ( 2000, 1, 1 ), DATE ( 2025, 12, 31 ) ),
UNION (
ROW ( "Time", TIME ( 1, 0, 0 ) ),
ROW ( "Time", TIME ( 2, 0, 0 ) ),
ROW ( "Time", TIME ( 3, 0, 0 ) ),
ROW ( "Time", TIME ( 4, 0, 0 ) ),
ROW ( "Time", TIME ( 5, 0, 0 ) ),
ROW ( "Time", TIME ( 6, 0, 0 ) ),
ROW ( "Time", TIME ( 7, 0, 0 ) ),
ROW ( "Time", TIME ( 9, 0, 0 ) ),
ROW ( "Time", TIME ( 10, 0, 0 ) ),
ROW ( "Time", TIME ( 11, 0, 0 ) ),
ROW ( "Time", TIME ( 12, 0, 0 ) ),
ROW ( "Time", TIME ( 13, 0, 0 ) ),
ROW ( "Time", TIME ( 14, 0, 0 ) ),
ROW ( "Time", TIME ( 15, 0, 0 ) ),
ROW ( "Time", TIME ( 16, 0, 0 ) ),
ROW ( "Time", TIME ( 17, 0, 0 ) ),
ROW ( "Time", TIME ( 18, 0, 0 ) ),
ROW ( "Time", TIME ( 19, 0, 0 ) ),
ROW ( "Time", TIME ( 20, 0, 0 ) ),
ROW ( "Time", TIME ( 21, 0, 0 ) ),
ROW ( "Time", TIME ( 22, 0, 0 ) ),
ROW ( "Time", TIME ( 23, 0, 0 ) ),
ROW ( "Time", TIME ( 24, 0, 0 ) )
)
),
"DateTime", [Date] + [Time],
"Hour", HOUR ( [Time] )
)
感谢您在本文中给出的答案:
为以前的计算创建度量值
Ready for Review =
var _selectedPeriod = MAX ( DateTime[DateTime] ) // Grab DateTime from the selected value in DateTime. This can be a single value or the end of a period. Default is last available date in DateTime
RETURN
COUNTX (
'RFE State History' ,
var _maxDate =
CALCULATE(
MAX ( 'RFE State History'[Timestamp] ) ,
ALL ( 'RFE State History' ) ,
'RFE State History'[Claim Id] = EARLIER( 'RFE State History'[Claim Id] ) ,
'RFE State History'[Timestamp] <= _selectedPeriod
)
var _isLast =
_maxDate = 'RFE State History'[Timestamp]
RETURN
IF( AND ( _isLast = TRUE() , 'RFE State History'[Status Label] = "Ready for Review" ) , 1 )
)
Ready for Review=
var _selectedPeriod=MAX(DateTime[DateTime])//从DateTime中的所选值获取DateTime。这可以是单个值,也可以是周期的结束。默认值是DateTime中的最后一个可用日期
回来
伯爵(
“RFE州历史记录”,
var\u maxDate=
算计(
最大值('RFE状态历史记录'[时间戳]),
全部(‘RFE状态历史’),
“RFE状态历史记录”[Claim Id]=更早的('RFE状态历史记录'[Claim Id]),
“RFE State History”[Timestamp]真棒:D我在步骤1中遇到了问题哈哈。我想我不知道将代码放在何处来生成日历:我将它放在一个空白查询中,但什么也没有发生;我将该空白查询放在Power Pivot Editor中,并尝试将代码放在一个空白单元格中,然后得到错误:“表达式引用了多列。多列无法转换为标量值。”我尝试将其放入高级编辑器(思考:可能这是一些M代码),仍然不行。我仍在尝试,但我觉得我错过了一些明显的东西。哈哈,我会编辑我的帖子,让它更详细,给我一点时间。啊哈!这更有意义。显然,计算表是从Excel 2016中取出来的()。在Power Pivot编辑器中,有一个按钮可以创建一个非常方便的新日期表,尽管它不占用时间。我最终会找到解决方案(即使我必须自己手动创建一个!)也许可以尝试从其他来源导入定制的excel表格。您也可以尝试免费的PowerBI桌面,这还可以让您在条形图中直观地显示随时间推移的“随时可供查看”计数。我没有忘记您:)我已手动制作了一个小时表格,正在尝试使数据模型立即与之配合使用。(DateTime未正确连接或诸如此类)。看起来您的代码正在通过总数,因此我将其标记为解决方案。非常感谢您的帮助!(当它工作时,我将再次发表评论)
DateTime =
ADDCOLUMNS (
CROSSJOIN (
CALENDAR ( DATE ( 2000, 1, 1 ), DATE ( 2025, 12, 31 ) ),
UNION (
ROW ( "Time", TIME ( 1, 0, 0 ) ),
ROW ( "Time", TIME ( 2, 0, 0 ) ),
ROW ( "Time", TIME ( 3, 0, 0 ) ),
ROW ( "Time", TIME ( 4, 0, 0 ) ),
ROW ( "Time", TIME ( 5, 0, 0 ) ),
ROW ( "Time", TIME ( 6, 0, 0 ) ),
ROW ( "Time", TIME ( 7, 0, 0 ) ),
ROW ( "Time", TIME ( 9, 0, 0 ) ),
ROW ( "Time", TIME ( 10, 0, 0 ) ),
ROW ( "Time", TIME ( 11, 0, 0 ) ),
ROW ( "Time", TIME ( 12, 0, 0 ) ),
ROW ( "Time", TIME ( 13, 0, 0 ) ),
ROW ( "Time", TIME ( 14, 0, 0 ) ),
ROW ( "Time", TIME ( 15, 0, 0 ) ),
ROW ( "Time", TIME ( 16, 0, 0 ) ),
ROW ( "Time", TIME ( 17, 0, 0 ) ),
ROW ( "Time", TIME ( 18, 0, 0 ) ),
ROW ( "Time", TIME ( 19, 0, 0 ) ),
ROW ( "Time", TIME ( 20, 0, 0 ) ),
ROW ( "Time", TIME ( 21, 0, 0 ) ),
ROW ( "Time", TIME ( 22, 0, 0 ) ),
ROW ( "Time", TIME ( 23, 0, 0 ) ),
ROW ( "Time", TIME ( 24, 0, 0 ) )
)
),
"DateTime", [Date] + [Time],
"Hour", HOUR ( [Time] )
)
Ready for Review =
var _selectedPeriod = MAX ( DateTime[DateTime] ) // Grab DateTime from the selected value in DateTime. This can be a single value or the end of a period. Default is last available date in DateTime
RETURN
COUNTX (
'RFE State History' ,
var _maxDate =
CALCULATE(
MAX ( 'RFE State History'[Timestamp] ) ,
ALL ( 'RFE State History' ) ,
'RFE State History'[Claim Id] = EARLIER( 'RFE State History'[Claim Id] ) ,
'RFE State History'[Timestamp] <= _selectedPeriod
)
var _isLast =
_maxDate = 'RFE State History'[Timestamp]
RETURN
IF( AND ( _isLast = TRUE() , 'RFE State History'[Status Label] = "Ready for Review" ) , 1 )
)