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

BigQuery单查询实现金属类红色产品统计及比率计算需求

优化方案:单查询实现需求并避免重复WHERE

你可以通过单次预过滤CTE结合BigQuery的多语句脚本,在一个可调度查询里完成所有操作,彻底避免重复编写WHERE material = 'metal'的过滤条件。

完整查询脚本

-- 预过滤所有material为metal的产品,仅执行一次过滤逻辑
WITH metal_products AS (
  SELECT product, maker, color, material
  FROM `your-project.your-dataset.products`
  WHERE material = 'metal'
)

-- 写入错误列表metal_red表
INSERT INTO `your-project.your-dataset.metal_red` (product, maker, color, material)
SELECT product, maker, color, material
FROM metal_products
WHERE color = 'red';

-- 计算比率并写入red_metal_ratio表
INSERT INTO `your-project.your-dataset.red_metal_ratio` (count_metals_all, count_metals_red, red_metals_ratio)
SELECT
  COUNT(*) AS count_metals_all,
  SUM(CASE WHEN color = 'red' THEN 1 ELSE 0 END) AS count_metals_red,
  SAFE_DIVIDE(SUM(CASE WHEN color = 'red' THEN 1 ELSE 0 END), COUNT(*)) AS red_metals_ratio
FROM metal_products;

核心优化说明

  • 单次过滤复用:metal_products CTE只执行一次material = 'metal'的过滤,后续所有操作都基于这个已过滤的数据集,完全消除重复WHERE子句
  • 单脚本多操作:BigQuery支持在单个查询脚本中执行多个INSERT语句,直接将整个脚本设为调度任务即可满足“1个可调度查询”的要求
  • 数据一致性保障:所有计算和插入都基于同一批次的metal_products数据,避免多次查询原表可能出现的数据不一致问题
  • 匹配业务需求:同时生成metal_red错误排查表和red_metal_ratioKPI追踪表,完全覆盖你的业务目标

注意事项

  • 替换脚本中的your-project.your-dataset为你的实际项目和数据集名称
  • 默认INSERT为追加模式,若需要覆盖表数据,可改用INSERT OVERWRITE
  • SAFE_DIVIDE用于避免分母为0的报错,提升比率计算的鲁棒性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:22:39