У меня есть такая таблица:
[ID] [Country_Region] [Date1] [Date2] [Date3] ... [Date150]
Я написал запрос SQL в BigQuery, который возвращает набор данных, подобный этому:
[ID] [Country_Region] [Date.ColumnName] [Date.Value]
-----------------------------------------------------
1 China _1_22_20 12
2 China _1_23_20 34
[3 China _1_24_20 54] <----- I want this row and all the next ones to appear as well
Мой SQL запрос:
WITH timestamped_table AS
(
SELECT
Country_Region,
[STRUCT<timestamp STRING, timestamp_value INT64>
('2020-2-22', _2_22_20),
('2020-2-23', _2_23_20)] AS timestamp_data
FROM
`username.bq_timeseries_covid19.recovered_global`
WHERE
Country_Region = 'China' AND Province_State = 'Zhejiang'
)
SELECT
Country_Region, timestamp
FROM
timestamped_table
CROSS JOIN
UNNEST(timestamped_table.timestamp_data) AS timestamp
Теперь единственная проблема, с которой я столкнулся, заключается в том, что мне нужно расширить эти строки из запроса:
STRUCT<timestamp STRING, timestamp_value INT64>
('2020-2-22', _2_22_20),
('2020-2-23', _2_23_20)
, чтобы они включали все столбцы даты.
Я думаю, что это будет что-то вроде этого, если я буду расширять его с помощью какого-то сценария (что, я думаю, не лучшая идея?):
STRUCT<timestamp STRING, timestamp_value INT64>
for column in get_date_columns():
(timestamp_from_columnname(), column)
Я думаю, что написание SQL сценария / функция была бы лучше, но я не знаю, как начать с этого точно