【问题标题】:Databricks AnalysisException: Column 'l' does not existDatabricks AnalysisException:列 \'l\' 不存在
【发布时间】:2022-10-17 19:10:52
【问题描述】:

我的代码出现了一个非常奇怪的情况。

我不断收到错误

AnalysisException: Column 'homepage_url' does not exist

但是,当我使用交叉连接进行选择时,该列确实存在。 有人可以看看我的交叉连接,让我知道这是否是问题所在

SELECT DISTINCT
  account.xpd_relationshipstatus AS CRM_xpd_relationshipstatus
 ,REPLACE(owneridname,'Data.Import #','') AS MontaguOwner
 ,account.ts_montaguoffice AS Montagu_Office
 ,CAST(account.ts_reminderdatesetto AS DATE) AS CRM_ts_reminderdatesetto
 ,CAST(account.ts_lastdatestatuschanged AS DATE) AS YearofCRMtslastdatestatuschanged
 ,organizations.name AS nameCB
 ,organizations.homepage_url
 ,iff(e like 'www.%', e, 'www.' + e) AS website
 ,left(category_list,charindex(',',category_list  +','  )-1) AS category_CB
-- ,case when charindex(',',category_list,0) > 0 then left(category_list,charindex(',',category_list)-1) else category_list end as category_CB
 ,organizations.category_groups_list AS category_groups_CB

FROM basecrmcbreport.account
LEFT OUTER JOIN basecrmcbreport.CRM2CBURL_Lookup
  ON account.Id = CRM2CBURL_Lookup.Key
LEFT OUTER JOIN basecrmcbreport.organizations
  ON CRM2CBURL_Lookup.CB_URL_KEY = organizations.cb_url
cross Join (values (charindex('://', homepage_url))) a(a)
cross Join (values (iff(a = 0, 1, a + 3))) b(b)
cross Join (values (charindex('/', homepage_url, b))) c(c)
cross Join (values (iff(c = 0, length(homepage_url) + 1, c))) d(d)
cross Join (values (substring(homepage_url, b, d - b))) e(e)

没有交叉连接

【问题讨论】:

  • 原因是连接通常用于表而不是表值函数。将它们全部替换为 select 语句(或临时视图)。

标签: databricks azure-databricks


【解决方案1】:
  • 当您选择不使用表值函数时,交叉连接(或任何连接)识别列的主要原因是联接仅用于表.

  • 要使用表值函数,必须使用cross apply or outer apply。但这些在 Databricks sql 中不受支持。

  • 以下是我正在使用的演示数据:

  • 我尝试使用以下查询对表值函数使用内连接,但得到了相同的错误:
select d1.*,a from demo1 inner join (values(if(d1.team = 'OG',2,1))) a;

  • 相反,使用 select 查询,连接的工作方式是:
select d1.*,a.no_of_wins from demo1 d1 inner join (select id,case team when 'OG' then 2 when 'TS' then 1 end as no_of_wins from demo1) a on d1.id=a.id;

  • 因此,解决此问题的方法是用SELECT 语句替换所有使用连接的表值函数。

【讨论】:

    猜你喜欢
    • 2021-09-13
    • 2022-10-05
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    相关资源
    最近更新 更多