# #sql #casting #google-bigquery
Вопрос:
Предполагая, что в моем наборе данных есть много таблиц, которые имеют одинаковые имена столбцов, но где некоторые типы столбцов разные, например, столбец «ДЕНЬ РОЖДЕНИЯ» иногда может быть датой, а в других случаях это будет строка.
При выполнении следующего запроса я столкнусь с проблемами:
select * from `my-project.my_dataset.table_*`
Это скажет мне об этом Cannot read field 'BIRTHDAY' of type STRING as DATE
.
Я надеялся, что смогу сказать «просто верните все как строку», что-то в строке:
select cast(* as string) from `my-project.my_dataset.table_*`
Есть ли какой-либо способ массового преобразования всех столбцов в текст, подобный этому? Я напрасно экспериментировал с парой вариантов, таких как :
select as value cast(t as string) from `my-project.my_dataset.table_*` as t
Примечание: Я использую подстановочный знак, потому что (а) я на самом деле использую предложение where, чтобы сузить область действия _table_suffix
, и потому что (б) это намного аккуратнее, чем десятки союзов.