You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在BigQuery中将字符串列转换为仅含时分秒的Interval类型

解决字符串转Interval并仅保留时分秒的问题

方案1:生成仅含时分秒的Interval类型列

无需重复删除重建列,直接提取原字符串中的时分秒部分转换为Interval即可。针对不同的原字符串格式,提供两种处理方式:

情况1:原字符串含日期+时分秒(如X days HH:MM:SS)或直接为HH:MM:SS

-- 1. 重命名原列以便后续处理
ALTER TABLE `scenic-arc-373908.Cyclistic_Data.04_2022` 
RENAME COLUMN ride_length TO ride_length_to_dump;

-- 2. 添加新的Interval类型列
ALTER TABLE `scenic-arc-373908.Cyclistic_Data.04_2022` 
ADD COLUMN ride_length INTERVAL;

-- 3. 提取时分秒片段并转换为Interval
UPDATE `scenic-arc-373908.Cyclistic_Data.04_2022` 
SET ride_length = CAST(
  REGEXP_EXTRACT(ride_length_to_dump, r'(\d+:\d+:\d+)') 
AS INTERVAL) 
WHERE ride_length_to_dump IS NOT NULL;

情况2:原字符串为总秒数(如900代表15分钟)

UPDATE `scenic-arc-373908.Cyclistic_Data.04_2022` 
SET ride_length = MAKE_INTERVAL(SECOND => CAST(ride_length_to_dump AS INT64))
WHERE ride_length_to_dump IS NOT NULL;

方案2:转换为HH:MM:SS格式的字符串列(更适配Tableau可视化)

如果Tableau对字符串格式的时分秒支持更友好,可直接生成纯时分秒字符串:

-- 1. 重命名原列
ALTER TABLE `scenic-arc-373908.Cyclistic_Data.04_2022` 
RENAME COLUMN ride_length TO ride_length_to_dump;

-- 2. 添加字符串类型列
ALTER TABLE `scenic-arc-373908.Cyclistic_Data.04_2022` 
ADD COLUMN ride_length STRING;

-- 3. 格式化为时分秒字符串
UPDATE `scenic-arc-373908.Cyclistic_Data.04_2022` 
SET ride_length = FORMAT_TIMESTAMP(
  "%H:%M:%S", 
  TIMESTAMP_ADD(TIMESTAMP("1970-01-01"), INTERVAL ride_length_to_dump SECOND)
) 
WHERE ride_length_to_dump IS NOT NULL;

Tableau端补充设置(针对Interval类型列)

若选择保留Interval类型,在Tableau中连接数据集后:

  • 选中ride_length列,右键点击「默认属性」→「数字格式」
  • 自定义格式为HH:mm:ss,即可在可视化中仅显示时分秒部分

内容的提问来源于stack exchange,提问作者atziri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 16:26:05