产品销售数据备份#

需求背景#

背景

因数据库只能通过 JumpServer 访问,对导出的数据量有着限制。需要在本地建立一个备份,方便 Python / Power Query 的调用。

需求频率#

频率

不定时。

目录结构#

food_sales_sync
├─ main.py
└─ 产品销售
   ├─ 待同步
   │  └─ 202505.csv
   └─ 已同步
      ├─ 202501.csv
      ├─ 202502.csv
      ├─ 202503.csv
      ├─ 202504.csv
      ├─ 202505.csv
      ├─ 202506.csv
      ├─ 202507.csv
      ├─ 202508.csv
      ├─ 202509.csv
      ├─ 202510.csv
      ├─ 202511.csv
      ├─ 202512.csv
      ├─ 202601.csv
      ├─ 202602.csv
      ├─ 202603.csv
      └─ 202604.csv

数据查询及导出#

为保障能够正常导出数据,可逐月进行查询、导出。

SELECT 
	business_date AS 日期,
    stat_shop_id AS 门店编号,
    channel_name AS 渠道,
    item_name AS 产品名称,
    SUM(dp_total_amount) AS 流水,
    SUM(dp_pay_amount) AS 实收,
    SUM(dp_item_count) AS 销量
FROM ads_dbs_trade_food_di
WHERE business_date BETWEEN '20260101' AND '20260401'
GROUP BY business_date,stat_shop_id, channel_name, item_name;

保存文件至 待同步 文件夹。

数据校验#

分别在本地数据库与中台数据按月进行查询:

本地数据库:


SELECT 
    SUBSTR(日期, 1, 6) AS 月份,
    SUM(流水) AS 流水
FROM 日表
WHERE 日期 >= '20250101'
GROUP BY SUBSTR(日期, 1, 6) 
ORDER BY 月份;

中台数据:

SELECT 
    SUBSTR(business_date, 1, 6) AS 月份,
    SUM(dp_total_amount) AS 流水
FROM ads_dbs_trade_food_di
WHERE business_date >= '20250101'
GROUP BY SUBSTR(business_date, 1, 6) 
ORDER BY 月份;

比较各月数据是否一致。

校验结果:

月份 云端流水 本地流水 差额
202501 254446551 254447609 -1058
202502 221359462 221358803 659
202503 223620888 223620584 304
202504 230342129 230340867 1262
202505 313282515 313280889 1626
202506 323012777 323014791 -2014
202507 393247571 393240744 6827
202508 388048696 388047465 1231
202509 244951228 244949845 1383
202510 239025739 239025395 344
202511 222458793 222459615 -823
202512 199027603 199027524 78
202601 194985514 194984842 672
202602 270686437 270687820 -1383
202603 194120854 194120947 -93
202604 204229133 204228466 667
202605 241985753 241986275 -522
202606 257155412 257154716 697

注意事项#

注意
  • 中台会刷新前一个月的数据,会导致数据存在差异。同步前先删除上个月数据,再同步上个月数据。
  • 中台历史数据(包含一年前)会偶尔轻微变动,与保存的可能差个几块钱。

项目地址#