mdbq 3.4.9__py3-none-any.whl → 3.5.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
mdbq/aggregation/query_data.py
CHANGED
@@ -305,6 +305,130 @@ class MysqlDatasQuery:
|
|
305
305
|
)
|
306
306
|
return True
|
307
307
|
|
308
|
+
def _tb_wxt(self, db_name='聚合数据', table_name='淘宝_主体报表', is_maximize=True):
|
309
|
+
start_date, end_date = self.months_data(num=self.months)
|
310
|
+
projection = {
|
311
|
+
'日期': 1,
|
312
|
+
'场景名字': 1,
|
313
|
+
'主体id': 1,
|
314
|
+
'花费': 1,
|
315
|
+
'展现量': 1,
|
316
|
+
'点击量': 1,
|
317
|
+
'总购物车数': 1,
|
318
|
+
'总成交笔数': 1,
|
319
|
+
'总成交金额': 1,
|
320
|
+
'自然流量曝光量': 1,
|
321
|
+
'直接成交笔数': 1,
|
322
|
+
'直接成交金额': 1,
|
323
|
+
'店铺名称': 1,
|
324
|
+
}
|
325
|
+
__res = []
|
326
|
+
for year in range(2024, datetime.datetime.today().year+1):
|
327
|
+
df = self.download.data_to_df(
|
328
|
+
db_name='推广数据_淘宝店',
|
329
|
+
table_name=f'主体报表_{year}',
|
330
|
+
start_date=start_date,
|
331
|
+
end_date=end_date,
|
332
|
+
projection=projection,
|
333
|
+
)
|
334
|
+
__res.append(df)
|
335
|
+
df = pd.concat(__res, ignore_index=True)
|
336
|
+
df.rename(columns={
|
337
|
+
'场景名字': '营销场景',
|
338
|
+
'主体id': '商品id',
|
339
|
+
'总购物车数': '加购量',
|
340
|
+
'总成交笔数': '成交笔数',
|
341
|
+
'总成交金额': '成交金额'
|
342
|
+
}, inplace=True)
|
343
|
+
df = df.astype({
|
344
|
+
'商品id': str,
|
345
|
+
'花费': 'float64',
|
346
|
+
'展现量': 'int64',
|
347
|
+
'点击量': 'int64',
|
348
|
+
'加购量': 'int64',
|
349
|
+
'成交笔数': 'int64',
|
350
|
+
'成交金额': 'float64',
|
351
|
+
'自然流量曝光量': 'int64',
|
352
|
+
'直接成交笔数': 'int64',
|
353
|
+
'直接成交金额': 'float64',
|
354
|
+
}, errors='raise')
|
355
|
+
df = df[df['花费'] > 0]
|
356
|
+
if is_maximize:
|
357
|
+
df = df.groupby(['日期', '店铺名称', '营销场景', '商品id', '花费', '点击量'], as_index=False).agg(
|
358
|
+
**{
|
359
|
+
'展现量': ('展现量', np.max),
|
360
|
+
'加购量': ('加购量', np.max),
|
361
|
+
'成交笔数': ('成交笔数', np.max),
|
362
|
+
'成交金额': ('成交金额', np.max),
|
363
|
+
'自然流量曝光量': ('自然流量曝光量', np.max),
|
364
|
+
'直接成交笔数': ('直接成交笔数', np.max),
|
365
|
+
'直接成交金额': ('直接成交金额', np.max)
|
366
|
+
}
|
367
|
+
)
|
368
|
+
else:
|
369
|
+
df = df.groupby(['日期', '店铺名称', '营销场景', '商品id', '花费', '点击量'], as_index=False).agg(
|
370
|
+
**{
|
371
|
+
'展现量': ('展现量', np.min),
|
372
|
+
'加购量': ('加购量', np.min),
|
373
|
+
'成交笔数': ('成交笔数', np.min),
|
374
|
+
'成交金额': ('成交金额', np.min),
|
375
|
+
'自然流量曝光量': ('自然流量曝光量', np.min),
|
376
|
+
'直接成交笔数': ('直接成交笔数', np.max),
|
377
|
+
'直接成交金额': ('直接成交金额', np.max)
|
378
|
+
}
|
379
|
+
)
|
380
|
+
df.insert(loc=1, column='推广渠道', value='万相台无界版') # df中插入新列
|
381
|
+
set_typ = {
|
382
|
+
'日期': 'date',
|
383
|
+
'推广渠道': 'varchar(100)',
|
384
|
+
'店铺名称': 'varchar(100)',
|
385
|
+
'营销场景': 'varchar(100)',
|
386
|
+
'商品id': 'bigint',
|
387
|
+
'花费': 'decimal(12,2)',
|
388
|
+
'展现量': 'int',
|
389
|
+
'点击量': 'int',
|
390
|
+
'加购量': 'int',
|
391
|
+
'成交笔数': 'int',
|
392
|
+
'成交金额': 'decimal(12,2)',
|
393
|
+
'自然流量曝光量': 'int',
|
394
|
+
'直接成交笔数': 'int',
|
395
|
+
'直接成交金额': 'decimal(12,2)',
|
396
|
+
}
|
397
|
+
|
398
|
+
if not self.update_service:
|
399
|
+
return
|
400
|
+
min_date = df['日期'].min()
|
401
|
+
max_date = df['日期'].max()
|
402
|
+
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
403
|
+
print(f'{now} 正在更新: mysql ({host}:{port}) {db_name}/{table_name} -> {min_date}~{max_date}')
|
404
|
+
m_engine.df_to_mysql(
|
405
|
+
df=df,
|
406
|
+
db_name=db_name,
|
407
|
+
table_name=table_name,
|
408
|
+
# icm_update=['日期', '推广渠道', '营销场景', '商品id', '花费'], # 增量更新, 在聚合数据中使用,其他不要用
|
409
|
+
move_insert=True, # 先删除,再插入
|
410
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
411
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
412
|
+
count=None,
|
413
|
+
filename=None, # 用来追踪处理进度
|
414
|
+
reset_id=True, # 是否重置自增列
|
415
|
+
set_typ=set_typ,
|
416
|
+
)
|
417
|
+
company_engine.df_to_mysql(
|
418
|
+
df=df,
|
419
|
+
db_name=db_name,
|
420
|
+
table_name=table_name,
|
421
|
+
# icm_update=['日期', '推广渠道', '营销场景', '商品id', '花费'], # 增量更新, 在聚合数据中使用,其他不要用
|
422
|
+
move_insert=True, # 先删除,再插入
|
423
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
424
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
425
|
+
count=None,
|
426
|
+
filename=None, # 用来追踪处理进度
|
427
|
+
reset_id=True, # 是否重置自增列
|
428
|
+
set_typ=set_typ,
|
429
|
+
)
|
430
|
+
return True
|
431
|
+
|
308
432
|
@try_except
|
309
433
|
def syj(self, db_name='聚合数据', table_name='生意经_宝贝指标'):
|
310
434
|
start_date, end_date = self.months_data(num=self.months)
|
@@ -1439,6 +1563,9 @@ class MysqlDatasQuery:
|
|
1439
1563
|
)
|
1440
1564
|
__res.append(df)
|
1441
1565
|
df = pd.concat(__res, ignore_index=True)
|
1566
|
+
# df['日期'] = pd.to_datetime(df['日期'], format='%Y-%m-%d', errors='ignore') # 转换日期列
|
1567
|
+
df = df.astype({'访客数': 'int64'}, errors='ignore')
|
1568
|
+
df = df[df['访客数'] > 0]
|
1442
1569
|
df.drop_duplicates(subset=['日期', '店铺名称', '类别', '来源构成', '一级来源', '二级来源', '三级来源', '访客数'], keep='last', inplace=True, ignore_index=True)
|
1443
1570
|
# 包含三级来源名称和预设索引值列
|
1444
1571
|
# 截取 从上月1日 至 今天的花费数据, 推广款式按此数据从高到低排序(商品图+排序)
|
@@ -3779,6 +3906,7 @@ def query1(months=1, less_dict=[]):
|
|
3779
3906
|
sdq.months = months # 设置数据周期, 1 表示近 2 个月
|
3780
3907
|
sdq.update_service = True # 调试时加,true: 将数据写入 mysql 服务器
|
3781
3908
|
|
3909
|
+
sdq._tb_wxt(db_name='聚合数据', table_name='淘宝_主体报表')
|
3782
3910
|
sdq.tg_wxt(db_name='聚合数据', table_name='天猫_主体报表')
|
3783
3911
|
sdq.syj(db_name='聚合数据', table_name='生意经_宝贝指标')
|
3784
3912
|
sdq.idbm(db_name='聚合数据', table_name='商品id编码表')
|
@@ -3892,10 +4020,10 @@ def main(days=150, months=3):
|
|
3892
4020
|
|
3893
4021
|
|
3894
4022
|
if __name__ == '__main__':
|
3895
|
-
|
3896
|
-
|
3897
|
-
|
3898
|
-
|
4023
|
+
main(
|
4024
|
+
days=3, # 清理聚合数据的日期长度
|
4025
|
+
months=1 # 生成聚合数据的长度
|
4026
|
+
)
|
3899
4027
|
|
3900
4028
|
# query_list = [query1, query2, query3]
|
3901
4029
|
# # 使用 ThreadPoolExecutor 来并行运行
|
@@ -3910,11 +4038,3 @@ if __name__ == '__main__':
|
|
3910
4038
|
# ),
|
3911
4039
|
# }
|
3912
4040
|
|
3913
|
-
optimize_data.op_data(
|
3914
|
-
db_name_lists=['聚合数据'],
|
3915
|
-
days=60, # 清理聚合数据的日期长度
|
3916
|
-
is_mongo=False,
|
3917
|
-
is_mysql=True,
|
3918
|
-
)
|
3919
|
-
|
3920
|
-
|
@@ -4,7 +4,7 @@ mdbq/aggregation/__init__.py,sha256=EeDqX2Aml6SPx8363J-v1lz0EcZtgwIBYyCJV6CcEDU,
|
|
4
4
|
mdbq/aggregation/aggregation.py,sha256=-yzApnlqSN2L0E1YMu5ml-W827qpKQvWPCOI7jj2kzY,80264
|
5
5
|
mdbq/aggregation/datashow.py,sha256=1AYSIDkdUx-4as1Ax2rPj0cExM9d-qFMrFYLAaPHNuk,54962
|
6
6
|
mdbq/aggregation/optimize_data.py,sha256=RXIv7cACCgYyehAxMjUYi_S7rVyjIwXKWMaM3nduGtA,3068
|
7
|
-
mdbq/aggregation/query_data.py,sha256=
|
7
|
+
mdbq/aggregation/query_data.py,sha256=21rrtUZzoCXlvoVCAAy70MO19Iu3l5cLvX_f6KTdshw,184530
|
8
8
|
mdbq/bdup/__init__.py,sha256=AkhsGk81SkG1c8FqDH5tRq-8MZmFobVbN60DTyukYTY,28
|
9
9
|
mdbq/bdup/bdup.py,sha256=LAV0TgnQpc-LB-YuJthxb0U42_VkPidzQzAagan46lU,4234
|
10
10
|
mdbq/config/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
|
@@ -34,7 +34,7 @@ mdbq/pbix/refresh_all.py,sha256=OBT9EewSZ0aRS9vL_FflVn74d4l2G00wzHiikCC4TC0,5926
|
|
34
34
|
mdbq/pbix/refresh_all_old.py,sha256=_pq3WSQ728GPtEG5pfsZI2uTJhU8D6ra-htIk1JXYzw,7192
|
35
35
|
mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
|
36
36
|
mdbq/spider/aikucun.py,sha256=zOacjrJ3MvToyuugA68xB-oN6RKj8K3GxMKudnln9EA,22207
|
37
|
-
mdbq-3.
|
38
|
-
mdbq-3.
|
39
|
-
mdbq-3.
|
40
|
-
mdbq-3.
|
37
|
+
mdbq-3.5.1.dist-info/METADATA,sha256=ZXZpAXwq4LS90LN9dqJF28UDs3iA4T70Ij9DYQYgcj4,243
|
38
|
+
mdbq-3.5.1.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
39
|
+
mdbq-3.5.1.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
|
40
|
+
mdbq-3.5.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|