Вы можете выполнить кросс-соединение в BigQuery с помощью подзапроса, который добавляет значение постоянного ключа, а затем присоединяется к этому постоянному значению.
Например, вот запрос, который будет вычислять перекрестное соединение {1, 2, 3} и {2, 4, 6}:
SELECT t1.num as first, t2.num as second
FROM (
SELECT num, 1 as key
FROM (
SELECT 1 as num), (
SELECT 2 as num), (
SELECT 3 as num)) as t1
JOIN (
SELECT num, 1 as key
FROM (
SELECT 2 as num), (
SELECT 4 as num), (
SELECT 6 as num)) as t2
ON t1.key = t2.key
WHERE t1.num <> t2.num
ПримечаниеЭтот использует BigQuery "трюк" в создайте две входные таблицы. Если бы вы просто делали это с существующей таблицей, это выглядело бы так:
SELECT t1.num as first, t2.num as second
FROM (
SELECT foo as num, 1 as key
FROM [my_dataset.my_table]) as t1
JOIN (
SELECT foo as num, 1 as key
FROM [my_dataset.my_table]) as t2
ON t1.key = t2.key
WHERE t1.num <> t2.num
благодарит за ваш отзыв kordirko. Я ищу способ сделать это в google bigquery. – sunil