Как объединить несколько больших таблиц с помощью Google BigQuery - PullRequest
0 голосов
/ 08 июня 2019

Я пытаюсь объединить несколько больших таблиц в одну большую таблицу с помощью Google BigQuery, чтобы было проще обрабатывать их в Tableau.

Я упорядочил файлы по размеру (от 131 МБ до 20,2 МБ и 1 3,96 КБ) в запросе и изменил левое соединение с 'LEFT JOIN' на 'LEFT JOIN EACH'

SELECT * FROM 
[Table 1 location] A
LEFT JOIN EACH [Table 2 Location] B
ON A.SUBNUM = B.SUBNUM 
AND A.VISITSEQ = B.VISITSEQ
LEFT JOIN EACH [Table 3 Location] C 
ON A.SUBNUM = C.SUBNUM 
AND A.VISITSEQ = C.VISITSEQ
LEFT JOIN EACH [Table 4 Location] D
ON A.SUBNUM = D.SUBNUM 
AND A.VISITSEQ = D.VISITSEQ
LEFT JOIN EACH [Table 5 Location] E 
ON A.SUBNUM = E.SUBNUM 
AND A.VISITSEQ = E.VISITSEQ
LEFT JOIN EACH [Table 6 Location] F
ON A.SUBNUM = F.SUBNUM
LEFT JOIN EACH[Table 7 Location] G 
ON A.SUBNUM = G.SUBNUM 
AND A.VISITSEQ = G.VISITSEQ
LEFT JOIN EACH[Table 8 Location] H 
ON A.SUBNUM = H.SUBNUM 
AND A.VISITSEQ = H.VISITSEQ
LEFT JOIN EACH [Table 9 Location] I 
ON A.SUBNUM = I.SUBNUM 
AND A.VISITSEQ = I.VISITSEQ
LEFT JOIN EACH[Table 10 Location] J
ON A.SUBNUM = J.SUBNUM 
AND A.VISITSEQ = J.VISITSEQ
LEFT JOIN EACH[Table 11 Location] K 
ON A.SITENUM = K.SITENUM

Я ожидаю, что это объединит все таблицы в одну массивную таблицу, но вместо этого я получаю ошибку «Ресурсы превышены во время выполнения запроса. Для получения дополнительной информации см. https://cloud.google.com/bigquery/troubleshooting-errors (код ошибки: resourcesExceeded) «

Ответы [ 3 ]

1 голос
/ 14 июня 2019

Поддержка Google Cloud здесь!

Полученная ошибка говорит о том, что ваш запрос использует слишком много ресурсов и не может быть обработан должным образом.Я бы предложил разделить его на несколько более простых подзапросов.Вместо того, чтобы объединять 11 больших таблиц одновременно, попробуйте, например, объединить 4, 4 и 3.Кроме того, использование EACH больше не рекомендуется в BigQuery, поскольку оно является частью устаревшего SQL , а BigQuery использует Стандартный SQL .Попробуйте удалить его из запроса.

Надеюсь, это поможет.

0 голосов
/ 21 июня 2019

Поскольку я впервые использовал Google BQ, я не знал о различии между Legacy и Standard SQL. После небольшого исследования и некоторого руководства от Гордона Линоффа и Алехандро я смог получить свой запрос для получения нужных мне результатов.

Я выбрал 504 столбца и наложил на них псевдоним SELECT ______ AS ________, присоединил к каждой таблице еще несколько столбцов, а затем завершил ее предложением WHERE, ограничивающим мои данные конкретной датой, когда данные были извлечены из базы данных. .

Спасибо всем за помощь и поддержку!

0 голосов
/ 08 июня 2019

Это слишком долго для комментария.

Сначала напишите запрос для стандартного SQL.Это версия SQL, которую вы должны использовать.

Во-вторых, я подозреваю, что ваши JOIN условия неверны.Итак, вам нужно отладить ваш запрос.

Создайте запрос по одному шагу за один раз, выполнив:

SELECT COUNT(*)
FROM [Table 1 location] A LEFT JOIN
     [Table 2 Location] B
     ON A.SUBNUM = B.SUBNUM 

Проверьте, является ли число разумным.Если это так, добавьте следующий JOIN.Если нет, выясните, почему правильные клавиши JOIN.

...