You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在两表无同名列场景下执行NATURALLEFTOUTERJOIN并解决列不兼容报错

报错根因

检测到不兼容的联接列(''[WeekName])。'NATURALLEFTOUTERJOIN'不支持对数据类型或数据沿袭不同的列执行联接

NATURALLEFTOUTERJOIN对自动匹配的关联列有两个强制要求,不符合任一都会触发上述报错:

  • 列名完全一致
  • 列的数据类型、数据沿袭完全一致

你代码中两个表生成的WeekName列分别来自DateTime[yDayFullName]和Mergetable[WeekDayName],属于两个不同的原始数据源,默认数据沿袭不互通,哪怕数据类型肉眼看起来一致也无法通过校验。

解决方案

方案一:兼容NATURALLEFTOUTERJOIN的修改方式

统一两个WeekName列的数据类型,同时切断和原始列的沿袭关联即可,修改后代码如下:

LeftOuterJoin = NATURALLEFTOUTERJOIN(
   SELECTCOLUMNS(
      GROUPBY(DateTime,DateTime[yDayFullName],
         "WEEKCOUNT", COUNTX(CURRENTGROUP(),DateTime[yDayFullName])),
         "WeekName", FORMAT(DateTime[yDayFullName], "General Text"),
         "WEEKCOUNT", [WEEKCOUNT]
   ),
   SELECTCOLUMNS(
      GROUPBY(FILTER(Mergetable,Mergetable[noShow]<>"true"),Mergetable[WeekDayName],
         "TOTALDURATION", SUMX(CURRENTGROUP(),Mergetable[MeetingDurationInHours])),
         "WeekName", FORMAT(Mergetable[WeekDayName], "General Text"),
         "TOTALDURATION", [TOTALDURATION]
   )
)

方案二:更稳定的替代写法

如果不想纠结数据类型和沿袭问题,可以直接改用TREATAS+ADDCOLUMNS的组合手动指定关联逻辑,兼容性更强,不会触发同类报错:

LeftOuterJoin = 
VAR WeekBase = 
    GROUPBY(DateTime,DateTime[yDayFullName],
        "WEEKCOUNT", COUNTX(CURRENTGROUP(),DateTime[yDayFullName]))
VAR WeekDuration = 
    GROUPBY(FILTER(Mergetable,Mergetable[noShow]<>"true"),Mergetable[WeekDayName],
        "TOTALDURATION", SUMX(CURRENTGROUP(),Mergetable[MeetingDurationInHours]))
RETURN
ADDCOLUMNS(
    WeekBase,
    "TOTALDURATION", CALCULATE(SUM(WeekDuration[TOTALDURATION]), TREATAS({WeekBase[yDayFullName]}, WeekDuration[WeekDayName]))
)

内容的提问来源于stack exchange,提问作者Deepak Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 03:27:05