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

基于条件关联BigQuery双表:多车型版本匹配需求及代码请求

BigQuery多产品线版本校验实现方案与代码示例

核心思路

通过版本要求映射表(WITH子句定义)关联车辆信息表与更新记录表,实现可扩展的多条件版本校验,避免冗长的CASE WHEN嵌套,便于后续新增产品线规则。

代码示例

方案1:可扩展的版本规则映射(推荐)

此方案将所有产品线的版本校验规则集中管理,新增规则只需添加UNION ALL条目,维护成本低:

WITH version_requirements AS (
  -- 定义各产品线规则:model + model_year → 目标版本 + 指定app版本
  SELECT 'xxx' AS model, 'My21' AS model_year, '3.2.1' AS target_version, '1.0' AS app_version UNION ALL
  SELECT 'xyz' AS model, 'My22' AS model_year, '5.6.0' AS target_version, '1.3' AS app_version UNION ALL
  SELECT 'abc' AS model, 'My23' AS model_year, '4.0.0' AS target_version, '1.5' AS app_version -- 新增规则直接追加
)
SELECT
  vi.VehicleNum,
  vi.model,
  vi.model_year,
  up.Version AS installed_version,
  up.time AS update_time,
  vr.app_version
FROM
  `your-project.your-dataset.Vehicle_Information` vi
-- 关联版本规则表,匹配对应产品线的校验要求
LEFT JOIN version_requirements vr
  ON vi.model = vr.model AND vi.model_year = vr.model_year
-- 关联更新表,筛选已安装目标版本的记录
LEFT JOIN `your-project.your-dataset.Updates` up
  ON vi.VehicleNum = up.vehicleNum AND up.Version = vr.target_version
-- 可选:仅保留已成功安装目标版本的车辆
-- WHERE up.Version IS NOT NULL

方案2:CASE WHEN直接定义规则(适合少量规则场景)

若产品线规则较少,可直接用CASE WHEN实现:

SELECT
  vi.VehicleNum,
  vi.model,
  vi.model_year,
  up.Version AS installed_version,
  up.time AS update_time,
  CASE
    WHEN vi.model = 'xxx' AND vi.model_year = 'My21' AND up.Version = '3.2.1' THEN '1.0'
    WHEN vi.model = 'xyz' AND vi.model_year = 'My22' AND up.Version = '5.6.0' THEN '1.3'
    WHEN vi.model = 'abc' AND vi.model_year = 'My23' AND up.Version = '4.0.0' THEN '1.5'
    ELSE NULL -- 不符合规则的返回NULL
  END AS app_version
FROM
  `your-project.your-dataset.Vehicle_Information` vi
LEFT JOIN `your-project.your-dataset.Updates` up
  ON vi.VehicleNum = up.vehicleNum
-- 可选:仅保留符合规则的记录
WHERE
  (vi.model = 'xxx' AND vi.model_year = 'My21' AND up.Version = '3.2.1')
  OR (vi.model = 'xyz' AND vi.model_year = 'My22' AND up.Version = '5.6.0')
  OR (vi.model = 'abc' AND vi.model_year = 'My23' AND up.Version = '4.0.0')

关键注意事项

  • 字段大小写匹配:两张表的车辆编号字段分别为VehicleNum和vehicleNum,BigQuery默认区分大小写,若数据中存在大小写不一致情况,需用LOWER(vi.VehicleNum) = LOWER(up.vehicleNum)做关联。
  • 多版本记录处理:若同一车辆有多个版本更新记录,可通过GROUP BY vi.VehicleNum结合MAX(up.time)获取最新的更新时间。
  • 空值处理:使用LEFT JOIN会保留所有车辆,未安装目标版本的车辆installed_version和update_time会返回NULL,可根据业务需求调整为自定义标记(如'未安装')。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 21:18:10