#sql #google-bigquery
#sql #google-bigquery
Вопрос:
Я хочу получить последнюю созданную дату из каждой таблицы в большом наборе данных запросов. Предполагая, что у меня есть наборы данных с именем myDataset и имеющие 10 таблиц: table_a, table_b, table_c и т.д… (и допустим, в каждой таблице есть столбец created_date) Я знаю, что могу сделать это для каждой таблицы, используя:
SELECT MAX(created_date)
FROM `myDataset.myTable`
Но могу ли я сделать это в одном запросе для всей таблицы в myDataset?
Мне просто нужно вывести что-то вроде этого и вставить его в новую таблицу:
| table_name | created_date |
|------------|--------------------------------|
| table_a | 2020-09-20 17:50:22.321449 UTC |
| table_b | 2020-09-20 17:50:22.321449 UTC |
| table_c | 2020-09-20 17:50:22.321449 UTC |
Уже пробовал:
mydataset.__TABLES__
и INFORMATION_SCHEMA
но я думаю, что предоставленные creation_time и last_modified_time не те, которые я ищу.
Найден способ получить список всех таблиц или столбцов в наборах данных с помощью
SELECT DISTINCT table_name
FROM `project_id`.myDataset.INFORMATION_SCHEMA.COLUMNS
ORDER BY table_name'
Все еще не уверен, как объединить / объединить это без указания каждой таблицы.
Редактировать: в итоге пришлось перебирать каждую таблицу в python, чтобы получить MAX (created_date), не знаю, возможно ли это, используя только SQL
Комментарии:
1. Я повторяю, чтобы получить MAX (created_date), используя язык программирования, не уверен, смогу ли я сделать это, используя только SQL
Ответ №1:
Если ваши таблицы имеют одинаковые столбцы (домен), вы можете использовать Union
.
Комментарии:
1. Хорошо, у меня есть значение для столбца created_date, но как получить значение table_name? которые ссылаются на каждое имя таблицы в наборах данных
Ответ №2:
Вы можете использовать union all
следующим образом:
SELECT '`table_a`' as table_name, MAX(created_date)
FROM `table_a`
UNION ALL
SELECT '`table_b`' as table_name, MAX(created_date)
FROM `table_b`
UNION ALL
SELECT '`table_c`' as table_name, MAX(created_date)
FROM `table_c`
Комментарии:
1. Я действительно ценю ваш ответ, спасибо, но есть ли другой метод без указания каждой таблицы? поскольку я получил более 300 таблиц в одном наборе данных. (уже обновил мой вопрос выше)