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

在BigQuery中将布尔值数组转换为日期、开始时间与结束时间的独立行

实现BigQuery数据转换的方法

核心思路

通过UNNEST函数将daysBitArray数组拆分为单行记录,结合数组索引(OFFSET)映射对应的星期几,过滤掉不营业的日期后,即可得到目标格式。

假设原表结构

假设你的源表名为restaurant_operating_hours,字段如下:

  • restaurant_name: 餐厅名称(字符串类型)
  • daysBitArray: 营业日期数组(整数数组,索引0对应周一,元素1表示营业,0表示不营业)
  • start_time: 营业开始时间(字符串类型)
  • end_time: 营业结束时间(字符串类型)

转换SQL代码

SELECT
  restaurant_name,
  -- 将数组索引映射为对应星期名称
  CASE day_offset
    WHEN 0 THEN 'Monday'
    WHEN 1 THEN 'Tuesday'
    WHEN 2 THEN 'Wednesday'
    WHEN 3 THEN 'Thursday'
    WHEN 4 THEN 'Friday'
    WHEN 5 THEN 'Saturday'
    WHEN 6 THEN 'Sunday'
  END AS day_of_week,
  start_time,
  end_time
FROM
  `your-project.your-dataset.restaurant_operating_hours`,
  -- 拆分数组并获取每个元素的索引
  UNNEST(daysBitArray) WITH OFFSET AS (is_open, day_offset)
-- 仅保留营业日期
WHERE
  is_open = 1
ORDER BY
  restaurant_name, day_offset

代码说明

  1. UNNEST WITH OFFSET:把daysBitArray的每个元素拆成单独一行,同时用day_offset记录元素在数组中的索引(对应星期几)。
  2. CASE语句:将索引0-6映射为周一到周日的英文名称,匹配目标格式的输出要求;如果需要中文星期,直接替换CASE里的字符串即可。
  3. WHERE过滤:只保留标记为营业(is_open=1)的日期行。
  4. 排序:按餐厅名称和星期顺序排序,让结果更规整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 09:50:08