PowerBI中如何使用DAX对含文本的HOURS_SPENT对应字符串列求和
DAX计算字符串类型列的数值总和(HOURS_SPENT)
由于ANSWER列是字符串类型且无法修改,直接用SUM函数会因类型不匹配报错。你需要用迭代函数SUMX,在遍历符合条件的行时动态将字符串转换为数值,再进行累加。
基础解决方案
使用SUMX配合VALUE函数,先过滤出ANSWER_NO为HOURS_SPENT的行,再逐行转换并求和:
Sum of hours = SUMX ( FILTER ( FACT_FORMS_ANSWERS, FACT_FORMS_ANSWERS[ANSWER_NO] = "HOURS_SPENT" ), VALUE ( FACT_FORMS_ANSWERS[ANSWER] ) )
容错优化方案
如果HOURS_SPENT对应的ANSWER存在非数值内容(比如空值、异常字符串),可以用TRY函数捕获错误,返回0避免报表报错:
Sum of hours = SUMX ( FILTER ( FACT_FORMS_ANSWERS, FACT_FORMS_ANSWERS[ANSWER_NO] = "HOURS_SPENT" ), TRY( VALUE ( FACT_FORMS_ANSWERS[ANSWER] ), 0 ) )
说明
SUMX是迭代函数,会逐个处理过滤后的行,所以能在每一行完成字符串到数值的转换,这是普通SUM函数做不到的。- 该度量值仅在计算时动态转换,不会修改原
ANSWER列的类型,完全兼容报表其他部分对该列的使用需求。
内容的提问来源于stack exchange,提问作者Michael Simmons
相关产品推荐
相关产品推荐

