【问题标题】:dplyr/sparklyr "OR" Joindplyr/sparklyr "OR" 加入
【发布时间】:2019-01-15 22:03:36
【问题描述】:

我知道可以像这样使用sparklyr 加入两列:

final <- tbl1 %>% left_join(tbl2, by = c("x1" = "x2", "y1" = "y2"))

但是有没有办法在我的impala sql 查询中加入如下两列:

select 
 a.col1
,b.col2
from tbl1 a


left join
(select * from tbl1 )b
on a.id = b.id 
and(                           a.date1  = b.date1 
                                     or 
                          a.date2 = b.date2               )

我想它会是这样的:

final <-  tbl1 %>% left_join(tbl2, by = c("x1" = "x2",c("y1" = "y2" or "y3" = "y4")))

【问题讨论】:

  • 不,不是dplyr(据我所知)。但是您可以使用sqldf 包在SQL 中运行它。或者你可以将它分成几部分,做两个单独的连接,然后合并和去重复结果。
  • 合并然后过滤,类似于:left_join(tbl1, tbl2, by = c("x1" = "x2")) %&gt;% filter(y1 == y2 | y3 == y4)

标签: r dplyr sparklyr


【解决方案1】:

你可以只使用 SQL:

df1 %>% sdf_register("tbl1")
df2 %>% sdf_register("tbl2")

query <- "select ..."

result <- sc %>% spark_session() %>% invoke("sql", query) %>% sdf_register()

请注意,您可能必须为列设置别名以避免输出中出现重复名称。

【讨论】:

    猜你喜欢
    • 2019-04-03
    • 2018-08-21
    • 1970-01-01
    • 2019-10-02
    • 2018-10-05
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    相关资源
    最近更新 更多