产品销售数据备份#
需求背景#
背景
因数据库只能通过 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 |
注意事项#
注意
- 中台会刷新前一个月的数据,会导致数据存在差异。同步前先删除上个月数据,再同步上个月数据。
- 中台历史数据(包含一年前)会偶尔轻微变动,与保存的可能差个几块钱。