В моих таблицах из Google Analytics есть собственное измерение, которое называется "длина видео".Данные являются строковыми значениями, но некоторые принимают 3 из следующих форматов:
1) ЧЧ: ММ: СС (например, 1:54:55)
2) ММ: СС(например, 2:26)
3) # секунд (например, для видео длиной 2:26 длина будет 146 )
- Я попытался указать регистр в случаях, когда значение имело формат ЧЧ: ММ: СС или ММ: СС, а также длину символа.
- Я также добавил дополнительные нули к значениям, следующим за форматом MM: SS.
- Мне пришлось
CAST
, чтобы INT64
, чтобы я мог сложить значения, чтобы получить строку.
Запрос действителен, однако, когда я запускаю запрос, я получаю сообщение об ошибке «Не удалось разобрать входную строку»
select old_video_length,
case
when videoLength like "%:%" and length(videoLength) > 7 then cast(cast(parse_time("%E*S",videoLength) as string) as int64)+cast(cast(parse_time("%M",videoLength) as string) as int64)*60+cast(cast(parse_time("%H",videoLength) as string) as int64)*3600
when videoLength like "%:%" and length(videoLength) between 6 and 7 then cast(cast(parse_time("%E*S",concat("0",videoLength)) as string) as int64)+cast(cast(parse_time("%M",concat("0",videoLength)) as string) as int64)*60+cast(cast(parse_time("%H",concat("0",videoLength)) as string) as int64)*3600
when videoLength like "%:%" and length(videoLength) <= 5 then cast(cast(parse_time("%E*S",concat("00:",videoLength)) as string) as int64)+cast(cast(parse_time("%M",concat("00:",videoLength)) as string) as int64)*60+cast(cast(parse_time("%H",concat("00:",videoLength)) as string) as int64)*3600
else cast(videoLength as int64) end as video_length_converted
from vid_length_table
Ideally, I'd like the table to look like this:
old_video_length | video_length_converted
1:54:55 6895
2:26 146
146 146