mdbq 3.5.1__py3-none-any.whl → 3.5.3__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
@@ -429,6 +429,130 @@ class MysqlDatasQuery:
|
|
429
429
|
)
|
430
430
|
return True
|
431
431
|
|
432
|
+
def _ald_wxt(self, db_name='聚合数据', table_name='奥莱店_主体报表', is_maximize=True):
|
433
|
+
start_date, end_date = self.months_data(num=self.months)
|
434
|
+
projection = {
|
435
|
+
'日期': 1,
|
436
|
+
'场景名字': 1,
|
437
|
+
'主体id': 1,
|
438
|
+
'花费': 1,
|
439
|
+
'展现量': 1,
|
440
|
+
'点击量': 1,
|
441
|
+
'总购物车数': 1,
|
442
|
+
'总成交笔数': 1,
|
443
|
+
'总成交金额': 1,
|
444
|
+
'自然流量曝光量': 1,
|
445
|
+
'直接成交笔数': 1,
|
446
|
+
'直接成交金额': 1,
|
447
|
+
'店铺名称': 1,
|
448
|
+
}
|
449
|
+
__res = []
|
450
|
+
for year in range(2024, datetime.datetime.today().year+1):
|
451
|
+
df = self.download.data_to_df(
|
452
|
+
db_name='推广数据_奥莱店',
|
453
|
+
table_name=f'主体报表_{year}',
|
454
|
+
start_date=start_date,
|
455
|
+
end_date=end_date,
|
456
|
+
projection=projection,
|
457
|
+
)
|
458
|
+
__res.append(df)
|
459
|
+
df = pd.concat(__res, ignore_index=True)
|
460
|
+
df.rename(columns={
|
461
|
+
'场景名字': '营销场景',
|
462
|
+
'主体id': '商品id',
|
463
|
+
'总购物车数': '加购量',
|
464
|
+
'总成交笔数': '成交笔数',
|
465
|
+
'总成交金额': '成交金额'
|
466
|
+
}, inplace=True)
|
467
|
+
df = df.astype({
|
468
|
+
'商品id': str,
|
469
|
+
'花费': 'float64',
|
470
|
+
'展现量': 'int64',
|
471
|
+
'点击量': 'int64',
|
472
|
+
'加购量': 'int64',
|
473
|
+
'成交笔数': 'int64',
|
474
|
+
'成交金额': 'float64',
|
475
|
+
'自然流量曝光量': 'int64',
|
476
|
+
'直接成交笔数': 'int64',
|
477
|
+
'直接成交金额': 'float64',
|
478
|
+
}, errors='raise')
|
479
|
+
df = df[df['花费'] > 0]
|
480
|
+
if is_maximize:
|
481
|
+
df = df.groupby(['日期', '店铺名称', '营销场景', '商品id', '花费', '点击量'], as_index=False).agg(
|
482
|
+
**{
|
483
|
+
'展现量': ('展现量', np.max),
|
484
|
+
'加购量': ('加购量', np.max),
|
485
|
+
'成交笔数': ('成交笔数', np.max),
|
486
|
+
'成交金额': ('成交金额', np.max),
|
487
|
+
'自然流量曝光量': ('自然流量曝光量', np.max),
|
488
|
+
'直接成交笔数': ('直接成交笔数', np.max),
|
489
|
+
'直接成交金额': ('直接成交金额', np.max)
|
490
|
+
}
|
491
|
+
)
|
492
|
+
else:
|
493
|
+
df = df.groupby(['日期', '店铺名称', '营销场景', '商品id', '花费', '点击量'], as_index=False).agg(
|
494
|
+
**{
|
495
|
+
'展现量': ('展现量', np.min),
|
496
|
+
'加购量': ('加购量', np.min),
|
497
|
+
'成交笔数': ('成交笔数', np.min),
|
498
|
+
'成交金额': ('成交金额', np.min),
|
499
|
+
'自然流量曝光量': ('自然流量曝光量', np.min),
|
500
|
+
'直接成交笔数': ('直接成交笔数', np.max),
|
501
|
+
'直接成交金额': ('直接成交金额', np.max)
|
502
|
+
}
|
503
|
+
)
|
504
|
+
df.insert(loc=1, column='推广渠道', value='万相台无界版') # df中插入新列
|
505
|
+
set_typ = {
|
506
|
+
'日期': 'date',
|
507
|
+
'推广渠道': 'varchar(100)',
|
508
|
+
'店铺名称': 'varchar(100)',
|
509
|
+
'营销场景': 'varchar(100)',
|
510
|
+
'商品id': 'bigint',
|
511
|
+
'花费': 'decimal(12,2)',
|
512
|
+
'展现量': 'int',
|
513
|
+
'点击量': 'int',
|
514
|
+
'加购量': 'int',
|
515
|
+
'成交笔数': 'int',
|
516
|
+
'成交金额': 'decimal(12,2)',
|
517
|
+
'自然流量曝光量': 'int',
|
518
|
+
'直接成交笔数': 'int',
|
519
|
+
'直接成交金额': 'decimal(12,2)',
|
520
|
+
}
|
521
|
+
|
522
|
+
if not self.update_service:
|
523
|
+
return
|
524
|
+
min_date = df['日期'].min()
|
525
|
+
max_date = df['日期'].max()
|
526
|
+
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
527
|
+
print(f'{now} 正在更新: mysql ({host}:{port}) {db_name}/{table_name} -> {min_date}~{max_date}')
|
528
|
+
m_engine.df_to_mysql(
|
529
|
+
df=df,
|
530
|
+
db_name=db_name,
|
531
|
+
table_name=table_name,
|
532
|
+
# icm_update=['日期', '推广渠道', '营销场景', '商品id', '花费'], # 增量更新, 在聚合数据中使用,其他不要用
|
533
|
+
move_insert=True, # 先删除,再插入
|
534
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
535
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
536
|
+
count=None,
|
537
|
+
filename=None, # 用来追踪处理进度
|
538
|
+
reset_id=True, # 是否重置自增列
|
539
|
+
set_typ=set_typ,
|
540
|
+
)
|
541
|
+
company_engine.df_to_mysql(
|
542
|
+
df=df,
|
543
|
+
db_name=db_name,
|
544
|
+
table_name=table_name,
|
545
|
+
# icm_update=['日期', '推广渠道', '营销场景', '商品id', '花费'], # 增量更新, 在聚合数据中使用,其他不要用
|
546
|
+
move_insert=True, # 先删除,再插入
|
547
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
548
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
549
|
+
count=None,
|
550
|
+
filename=None, # 用来追踪处理进度
|
551
|
+
reset_id=True, # 是否重置自增列
|
552
|
+
set_typ=set_typ,
|
553
|
+
)
|
554
|
+
return True
|
555
|
+
|
432
556
|
@try_except
|
433
557
|
def syj(self, db_name='聚合数据', table_name='生意经_宝贝指标'):
|
434
558
|
start_date, end_date = self.months_data(num=self.months)
|
@@ -2525,6 +2649,7 @@ class MysqlDatasQuery:
|
|
2525
2649
|
"""
|
2526
2650
|
df_tm = pd.DataFrame() # 天猫营销场景
|
2527
2651
|
df_tb = pd.DataFrame() # 淘宝营销场景
|
2652
|
+
df_al = pd.DataFrame() # 奥莱营销场景
|
2528
2653
|
df_tb_qzt = pd.DataFrame() # 淘宝全站推广
|
2529
2654
|
df_tm_pxb = pd.DataFrame() # 天猫品销宝
|
2530
2655
|
df_tm_living = pd.DataFrame() # 天猫超级直播
|
@@ -2568,6 +2693,33 @@ class MysqlDatasQuery:
|
|
2568
2693
|
'成交金额': ('总成交金额', np.max)
|
2569
2694
|
}
|
2570
2695
|
)
|
2696
|
+
# 奥莱店
|
2697
|
+
__res = []
|
2698
|
+
for year in range(2024, datetime.datetime.today().year + 1):
|
2699
|
+
df_al = self.download.data_to_df(
|
2700
|
+
db_name='推广数据_奥莱店',
|
2701
|
+
table_name=f'营销场景报表_{year}',
|
2702
|
+
start_date=start_date,
|
2703
|
+
end_date=end_date,
|
2704
|
+
projection=projection,
|
2705
|
+
)
|
2706
|
+
__res.append(df_al)
|
2707
|
+
df_al = pd.concat(__res, ignore_index=True)
|
2708
|
+
if len(df_al) > 0:
|
2709
|
+
df_al.rename(columns={'场景名字': '营销场景'}, inplace=True)
|
2710
|
+
df_al['店铺名称'] = df_al['店铺名称'].apply(lambda x: '万里马箱包outlet店' if x == 'Wanlima万里马箱包outlet店' else x)
|
2711
|
+
df_al = df_al.groupby(
|
2712
|
+
['日期', '店铺名称', '场景id', '营销场景', '花费', '展现量'],
|
2713
|
+
as_index=False).agg(
|
2714
|
+
**{
|
2715
|
+
# '展现量': ('展现量', np.max),
|
2716
|
+
'点击量': ('点击量', np.max),
|
2717
|
+
'加购量': ('总购物车数', np.max),
|
2718
|
+
'成交笔数': ('总成交笔数', np.max),
|
2719
|
+
'成交金额': ('总成交金额', np.max)
|
2720
|
+
}
|
2721
|
+
)
|
2722
|
+
# 淘宝店
|
2571
2723
|
__res = []
|
2572
2724
|
for year in range(2024, datetime.datetime.today().year + 1):
|
2573
2725
|
df_tb = self.download.data_to_df(
|
@@ -2801,7 +2953,7 @@ class MysqlDatasQuery:
|
|
2801
2953
|
df_jd_qzyx = df_jd_qzyx[['日期', '店铺名称', '营销场景', '花费', '展现量', '点击量', '成交笔数', '成交金额']]
|
2802
2954
|
df_jd_qzyx = df_jd_qzyx[df_jd_qzyx['花费'] > 0]
|
2803
2955
|
|
2804
|
-
_datas = [item for item in [df_tm, df_tb, df_tb_qzt, df_tm_pxb, df_tm_living, df_jd, df_jd_qzyx] if len(item) > 0] # 阻止空的 dataframe
|
2956
|
+
_datas = [item for item in [df_tm, df_tb, df_tb_qzt, df_al, df_tm_pxb, df_tm_living, df_jd, df_jd_qzyx] if len(item) > 0] # 阻止空的 dataframe
|
2805
2957
|
df = pd.concat(_datas, axis=0, ignore_index=True)
|
2806
2958
|
df['日期'] = pd.to_datetime(df['日期'], format='%Y-%m-%d', errors='ignore') # 转换日期列
|
2807
2959
|
df = df.groupby(
|
@@ -3906,6 +4058,7 @@ def query1(months=1, less_dict=[]):
|
|
3906
4058
|
sdq.months = months # 设置数据周期, 1 表示近 2 个月
|
3907
4059
|
sdq.update_service = True # 调试时加,true: 将数据写入 mysql 服务器
|
3908
4060
|
|
4061
|
+
sdq._ald_wxt(db_name='聚合数据', table_name='奥莱店_主体报表')
|
3909
4062
|
sdq._tb_wxt(db_name='聚合数据', table_name='淘宝_主体报表')
|
3910
4063
|
sdq.tg_wxt(db_name='聚合数据', table_name='天猫_主体报表')
|
3911
4064
|
sdq.syj(db_name='聚合数据', table_name='生意经_宝贝指标')
|
@@ -4020,21 +4173,11 @@ def main(days=150, months=3):
|
|
4020
4173
|
|
4021
4174
|
|
4022
4175
|
if __name__ == '__main__':
|
4023
|
-
main(
|
4024
|
-
|
4025
|
-
|
4026
|
-
)
|
4027
|
-
|
4028
|
-
# query_list = [query1, query2, query3]
|
4029
|
-
# # 使用 ThreadPoolExecutor 来并行运行
|
4030
|
-
# # with concurrent.futures.ThreadPoolExecutor() as executor:
|
4031
|
-
# with concurrent.futures.ProcessPoolExecutor() as executor:
|
4032
|
-
# for func_query in query_list:
|
4033
|
-
# future_to_function = {
|
4034
|
-
# executor.submit(
|
4035
|
-
# func_query,
|
4036
|
-
# months=1,
|
4037
|
-
# less_dict=[],
|
4038
|
-
# ),
|
4039
|
-
# }
|
4176
|
+
# main(
|
4177
|
+
# days=150, # 清理聚合数据的日期长度
|
4178
|
+
# months=3 # 生成聚合数据的长度
|
4179
|
+
# )
|
4040
4180
|
|
4181
|
+
sdq = MysqlDatasQuery() # 实例化数据处理类
|
4182
|
+
sdq.months = 3
|
4183
|
+
sdq._ald_wxt(db_name='聚合数据', table_name='奥莱店_主体报表')
|
@@ -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=Zsbt2LykpqRblIZhiSW1rgs41zygC8InefH0zpNIWp8,191284
|
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.5.
|
38
|
-
mdbq-3.5.
|
39
|
-
mdbq-3.5.
|
40
|
-
mdbq-3.5.
|
37
|
+
mdbq-3.5.3.dist-info/METADATA,sha256=yf9s77_Oyas62hqdqe2WdROtUdJqqoUykc16RPT-Yz8,243
|
38
|
+
mdbq-3.5.3.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
39
|
+
mdbq-3.5.3.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
|
40
|
+
mdbq-3.5.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|