我正面临这个问题,我真的不知道如何在连接两个表时处理重复的行。
我想加入两个表
Value_x表:
ID Campaign Value_x
foo fb 1
foo twitter 3
bar fb 2
foobar ads 2
foo organic 3
Value_y表:
ID Campaign Value_y
foo organic 42
foobar organic 17
foo ads 12
foo twitter 23
bar twitter 35
由于“广告系列”列,每个表中的ID都不唯一,例如,左联接表输出如下:
ID t1.Campaign t2.Campaign Value_x Value_y
foo fb organic 1 42
foo fb ads 1 12
理想情况下,我希望获得以下输出
ID t1.Campaign t2.Campaign Value_x Value_y
foo fb null 1 null
foo twitter twitter 3 23
foo organic organic 3 42
foo null ads null 12
您将如何处理这种情况?我读了一些有关foreign keys
的内容...我对这个概念不熟悉,它在这种情况下如何提供帮助?还是有办法在广告系列一级执行加入?
答案 0 :(得分:2)
使用广告系列作为条件,看起来您想要 options:{
scales: {
yAxes : [{
ticks : {
max : 100,
min : 0
}
}]
}
}
}
:
full outer join
答案 1 :(得分:2)
以下是用于BigQuery标准SQL
#standardSQL
SELECT ID,
x.Campaign AS Campaign_x,
y.Campaign AS Campaign_y,
Value_x,
Value_y
FROM `project.dataset.tableX` x
FULL OUTER JOIN `project.dataset.tableY` y
USING(ID, Campaign)
您可以使用问题中的示例数据来测试,玩转上面的示例
#standardSQL
WITH `project.dataset.tableX` AS (
SELECT 'foo' ID, 'fb' Campaign, 1 Value_x UNION ALL
SELECT 'foo', 'twitter', 3 UNION ALL
SELECT 'bar', 'fb', 2 UNION ALL
SELECT 'foobar', 'ads', 2 UNION ALL
SELECT 'foo', 'organic', 3
), `project.dataset.tableY` AS (
SELECT 'foo' ID, 'organic' Campaign, 42 Value_y UNION ALL
SELECT 'foobar', 'organic', 17 UNION ALL
SELECT 'foo', 'ads', 12 UNION ALL
SELECT 'foo', 'twitter', 23 UNION ALL
SELECT 'bar', 'twitter', 35
)
SELECT ID,
x.Campaign AS Campaign_x,
y.Campaign AS Campaign_y,
Value_x,
Value_y
FROM `project.dataset.tableX` x
FULL OUTER JOIN `project.dataset.tableY` y
USING(ID, Campaign)
-- ORDER BY ID
有结果
Row ID Campaign_x Campaign_y Value_x Value_y
1 bar fb null 2 null
2 bar null twitter null 35
3 foo fb null 1 null
4 foo twitter twitter 3 23
5 foo organic organic 3 42
6 foo null ads null 12
7 foobar ads null 2 null
8 foobar null organic null 17