应用Levenshtein距离时遇GENERATESERIES参数不能为空错误求助
解决DAX中GENERATESERIES触发的“generate series cannot be blank”错误
你遇到的错误根源在于:当SlicerText或TableText为空时,LEN()函数返回0,MAX(LEN(SlicerText), LEN(TableText))的结果就变成0,此时GENERATESERIES(1, 0, 1)因为起始值大于结束值,直接抛出“generate series cannot be blank”异常。
下面是修正后的度量值代码,重点处理了空值场景,确保GENERATESERIES参数合法:
Measure = VAR SlicerText = SELECTEDVALUE('Slicer Table'[TestColumn]) VAR TableText = SELECTEDVALUE('Table'[TestColumn]) -- 判断是否有文本为空 VAR IsEmpty = ISBLANK(SlicerText) || ISBLANK(TableText) VAR length = IF( IsEmpty, 0, MAX(LEN(SlicerText), LEN(TableText)) ) VAR TestTable = IF( length = 0, BLANK(), ADDCOLUMNS( GENERATESERIES(1, length, 1), "InSlicer", MID(SlicerText, [Value], 1), "InTable", MID(TableText, [Value], 1) ) ) RETURN IF( IsEmpty, BLANK(), -- 要是需要空值时返回0,直接把BLANK()改成0就行 COUNTROWS(FILTER(TestTable, [InSlicer] = [InTable])) / COUNTROWS(TestTable) )
关键修改说明:
- 新增
IsEmpty变量提前检测空值,避免后续计算出现非法参数 - 调整
length变量,空值场景下强制设为0,不让GENERATESERIES接收起始值大于结束值的参数 - 给
TestTable和最终返回结果加了空值判断,保证整个计算逻辑的合法性
内容的提问来源于stack exchange,提问作者donald smith
相关产品推荐
相关产品推荐

