dplyr / sparklyr“ OR”加入

时间:2018-08-08 15:10:19

标签: r dplyr sparklyr

我知道可以使用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")))

1 个答案:

答案 0 :(得分:1)

您可以只使用SQL:

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

query <- "select ..."

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

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