在 BigQuery 中编写查询

BigQuery 入门

Matt Forrest

Field CTO

编写简单查询

在 BigQuery 中的简单查询

-- 注意表名结构

SELECT
    * 
FROM 
    `project.ecommerce.order_items`
BigQuery 入门

在 BigQuery 中运行查询

我们可以通过以下方式在 BigQuery 中运行查询:

  • BigQuery Studio
  • 客户端库(如 Python)
  • Google Cloud 命令行工具
  • Pandas

BigQuery 控制台

BigQuery 入门

使用正确的表名

-- 使用完整表名结构


SELECT
    * 
FROM 
    `project.ecommerce.ecomm_order_details`
/* 使用简写的
表名结构 */

SELECT
    * 
FROM 
    ecommerce.ecomm_order_details
BigQuery 入门

GoogleSQL

GoogleSQL 的数据类型参考

BigQuery 入门

我们的数据集:Olist 电商

  • 订单:订单号与订单商品信息
  • 订单明细:客户 ID、下单与发货日期
  • 支付:支付方式、分期、金额
  • 商品:商品类别、描述、尺寸

拿着包裹的人

1 https://www.kaggle.com/datasets/olistbr/brazilian-ecommerce
BigQuery 入门

商品

  • product_id - 唯一商品 ID
  • product_photos_qty - 商品图片数
  • product_weight_g - 商品重量(克)
  • product_category_name_english - 商品类别名

拿着包裹的人

BigQuery 入门

订单

  • order_id - 唯一订单 ID
  • order_items - 包含订单商品信息的 STRUCT
    • order_item_id - 订单内的商品序号
    • product_id - 唯一商品 ID
    • seller_id - 唯一卖家 ID
    • price - 订单商品价格

拿着包裹的人

BigQuery 入门

订单明细

  • order_id - 唯一订单 ID
  • customer_id - 唯一客户 ID
  • order_status - 当前订单状态
  • order_purchase_timestamp - 下单时间
  • order_approved_at - 审核通过时间
  • order_delivered_carrier_date - 承运商揽收时间
  • order_delivered_customer_date - 客户签收时间
  • order_estimated_delivery_date - 预计送达日期时间
BigQuery 入门

支付

  • order_id - 唯一订单 ID
  • payment_type - 支付方式
  • payment_sequential - 支付序号
  • payment_installments - 分期数
  • payment_value - 本次支付金额

拿着包裹的人

BigQuery 入门

聚合与连接回顾

-- 每位客户的订单数

SELECT
    d.customer_id,
    COUNT(o.order_id)
FROM 
    ecommerce.ecomm_order_details d
JOIN 
    ecommerce.ecomm_orders o
USING (order_id)
GROUP BY
    d.customer_id

五个关键部分:

  1. 聚合函数
  2. 左侧数据集
  3. 右侧数据集
  4. 连接条件
  5. 分组条件
BigQuery 入门

开始练习!

BigQuery 入门

Preparing Video For Download...