【问题标题】:using like operator in spark sql databricks在 spark sql databricks 中使用 like 运算符
【发布时间】:2022-01-03 16:29:12
【问题描述】:

我正在使用 spark sql,并创建了一些 Vue 来加入一些数据。但我必须基于字符串列加入这些 Vue。这就是我必须使用 like 运算符的原因。

  select table.perfume,table2.perfume
  from global_temp.gv_table1 table1
  join global_temp.gv_table2 table2
   on(lower(table1.perfume) like CONCAT('%', lower(table2.perfume), '%') )

但是这个查询的问题并没有给出所有的结果,例如。 桌子上有一种香水叫“FlowerBomb”,桌子上有一种香水叫“Flowerbomb Eau du parfum”,加入后这款香水没有展示。 like 运算符有问题吗?

【问题讨论】:

    标签: sql apache-spark azure-databricks


    【解决方案1】:

    您的 like 表达式中的列顺序错误。

    由于table2.perfume包含table1.perfume,表达式应该是这样的:

    on(lower(table2.perfume) like CONCAT('%', lower(table1.perfume), '%') )
    

    【讨论】:

    • 表 2 保存更长的字符串值,所以它不应该像 on(CONCAT('%', lower(table1.perfume), '%') 像 lower(table2.perfume))
    • @NNM 不,like 运算符在 like 之后而不是在它之前查找搜索模式。
    【解决方案2】:

    您可能希望将其转换为 Spark API。它相当简单 -

    result = table1.alias('1').join(
        table2.alias('2'),
        F.expr("2.perfume like 1.perfume")
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-19
      • 1970-01-01
      • 2017-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多