2016-03-22 4 views
1

表1BigQueryのキーがnull

+---------+-----------+--------+ 
| user_id | email  | action | 
+---------+-----------+--------+ 
| 1  | [email protected] | open | 
+---------+-----------+--------+ 
| 2  | null  | click | 
+---------+-----------+--------+ 
| 3  | [email protected] | click | 
+---------+-----------+--------+ 
| 4  | [email protected] | open | 
+---------+-----------+--------+ 

表2

+---------+-----------+--------+ 
| user_id | email  | event | 
+---------+-----------+--------+ 
| 1  | [email protected] | sent | 
+---------+-----------+--------+ 
| null | [email protected] | none | 
+---------+-----------+--------+ 
| 2  | [email protected] | sent | 
+---------+-----------+--------+ 
| 4  | [email protected] | sent | 
+---------+-----------+--------+ 

あるときにnullがあるとき、私はt1.user_id = t2.user_idに基づいて参加したいのですが、参加合体COALESCE(t1.user_id、t1.email)= COALESCE(t2.user_id、T2 ON)
1.キーは、t1.emailに参加=

t2.email私はBigQueryのに参加する複数の方法を試してみました。電子メール)
2.)t2.user_idがnullでない場合にオンになり、t1.user_id = t2.user_id else t1.email = t2.email end

いずれも機能しません。これはどうすればできますか?

+0

SQL「は区別されたに参加最初に逃したそれらのIDのために電子メールで参加"と" IS NOT DISTINCT "が表示されますが、BigQueryでは表示されません。 –

答えて

1

私は別の2に、このような参加に分割します:
ファースト - 第二のuser_idによって

SELECT * 
FROM table1 AS t1 
JOIN table2 AS t2 
ON t1.user_id = t2.user_id 

に参加 -

SELECT * 
FROM (
    SELECT * FROM table1 
    WHERE user_id NOT IN (
    SELECT t1.user_id 
    FROM table1 AS t1 
    JOIN table2 AS t2 
    ON t1.user_id = t2.user_id 
) 
) t1 
JOIN (
    SELECT * FROM table2 
    WHERE user_id NOT IN (
    SELECT t1.user_id 
    FROM table1 AS t1 
    JOIN table2 AS t2 
    ON t1.user_id = t2.user_id 
) 
) t2 
ON t1.email = t2.email 
+0

ありがとうございます。私は本当にCOALESCEを使うことを望んでいました。リンクに基づいて可能性があります。 BigQueryではサポートされていません。 http://stackoverflow.com/questions/5304184/proper-way-to-refer-to-coalescedvalue-in-select-statement – Blake

+0

しかし、そうではありません:o( –

+0

https://cloud.google.com/bigquery/query-reference#クエリ文法:join_predicate: field_from_one_side_of_the_join = field_from_the_other_side_of_the_join [AND ...] –

関連する問題