以下是一个使用SQL在BigQuery中查找记录类型ID数组并从辅助表中连接数据的示例解决方法:
CREATE TABLE main_table (
id INT64,
record_type STRING,
data STRING
);
CREATE TABLE auxiliary_table (
record_type STRING,
record_id INT64,
auxiliary_data STRING
);
INSERT INTO main_table (id, record_type, data)
VALUES
(1, 'TypeA', 'Data 1'),
(2, 'TypeB', 'Data 2'),
(3, 'TypeA', 'Data 3');
INSERT INTO auxiliary_table (record_type, record_id, auxiliary_data)
VALUES
('TypeA', 1, 'Auxiliary Data 1'),
('TypeA', 3, 'Auxiliary Data 2'),
('TypeB', 2, 'Auxiliary Data 3');
SELECT
m.id,
m.record_type,
m.data,
ARRAY_AGG(a.auxiliary_data) AS auxiliary_data_array
FROM
main_table AS m
LEFT JOIN
auxiliary_table AS a
ON
m.record_type = a.record_type
AND m.id = a.record_id
GROUP BY
m.id,
m.record_type,
m.data;
这将返回以下结果:
| id | record_type | data | auxiliary_data_array |
|----|-------------|---------|----------------------|
| 1 | TypeA | Data 1 | [Auxiliary Data 1] |
| 2 | TypeB | Data 2 | [Auxiliary Data 3] |
| 3 | TypeA | Data 3 | [Auxiliary Data 2] |
在这个示例中,我们使用LEFT JOIN
将主表和辅助表连接起来,并使用ARRAY_AGG
函数将辅助表的多个匹配行的auxiliary_data
字段合并为一个数组。