背景
在我们推出 SHOPLINE QL 之前,商家可能已经在使用第三方查询引擎或服务,例如 BigQuery。考虑到现有数据迁移或分析需求,现在我们建议使用 SHOPLINE QL 来处理这些数据。
从 SHOPLINE QL API 获取数据
通过此 API,你可以获取订单数据、商品数据、客户数据等,然后将数据写入本地文件或中间件,例如 MySQL、Amazon S3、Google Cloud Storage 等。
写入本地文件示例
使用 Go 语言分页获取数据并写入 CSV 文件:
func StoreDataToLocalFile(fileName string) {
dataSetColumn := []string{"order_seq", "region", "province", "city", "sales_channel", "order_quantity", "refunds", "total_sales", "date_time"}
file, err := os.OpenFile(fileName, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0666)
defer file.Close()
pageNum := 1
pageSize := 500
for {
resp := slapi.GetDataFromOpenShoplineApi(pageNum, pageSize)
if resp == nil || len(resp) == 0 {
break
}
// 写入数据到文件...
pageNum++
}
}
写入 S3 示例
func StoreDataToAwsS3File(bodyByte io.Reader, fileName string) {
output, err := _client.PutObject(context.TODO(), &s3.PutObjectInput{
Bucket: aws.String(_s3Config.Bucket),
Key: aws.String("shopline_ql/" + fileName),
Body: bodyByte,
})
}
在 BigQuery 中创建项目、数据集和表
创建项目
- 在 Google Cloud 控制台点击 “创建项目”
- 输入项目名称(如:shopline-ql)
- 选择组织
- 点击创建
创建数据集
- 进入 BigQuery Studio
- 选择项目,点击 “…” → “创建数据集”
- 输入数据集 ID(如:shopline_ql)
- 选择位置类型(区域或多区域)
- 点击创建数据集
创建表
使用以下 Schema 创建 orders 表:
[
{"name": "order_seq", "type": "STRING", "mode": "REQUIRED"},
{"name": "region", "type": "STRING", "mode": "NULLABLE"},
{"name": "province", "type": "STRING", "mode": "NULLABLE"},
{"name": "city", "type": "STRING", "mode": "NULLABLE"},
{"name": "sales_channel", "type": "STRING", "mode": "NULLABLE"},
{"name": "order_quantity", "type": "INTEGER", "mode": "NULLABLE"},
{"name": "refunds", "type": "INTEGER", "mode": "NULLABLE"},
{"name": "total_sales", "type": "INTEGER", "mode": "NULLABLE"},
{"name": "date_time", "type": "DATETIME", "mode": "REQUIRED"}
]
设置 date_time 字段为分区列,分区粒度为小时。
定时任务配置
使用 BigQuery Data Transfer Service 定时从 S3 加载数据:
- 进入 BigQuery Studio → Data Transfers
- 选择 Source: Amazon S3
- 配置传输任务:
- 显示名称:SHOPLINE QL Schedule
- 重复频率:每 24 小时
- 数据集:shopline_ql
- 目标表:orders
- S3 URI:s3://your-bucket/shopline_ql/
- Access Key ID 和 Secret Access Key
- 文件格式:CSV
- 写入模式:WRITE_APPEND(追加)或 WRITE_TRUNCATE(覆盖)
配置完成后,系统会定时从 S3 加载前一天的数据到 BigQuery,然后你就可以在 BigQuery 中执行查询分析了。