mdbq 1.6.0__py3-none-any.whl → 1.6.2__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/aggregation.py +18 -18
- mdbq/aggregation/query_data.py +94 -8
- mdbq/mysql/s_query.py +3 -0
- {mdbq-1.6.0.dist-info → mdbq-1.6.2.dist-info}/METADATA +1 -1
- {mdbq-1.6.0.dist-info → mdbq-1.6.2.dist-info}/RECORD +7 -7
- {mdbq-1.6.0.dist-info → mdbq-1.6.2.dist-info}/WHEEL +0 -0
- {mdbq-1.6.0.dist-info → mdbq-1.6.2.dist-info}/top_level.txt +0 -0
mdbq/aggregation/aggregation.py
CHANGED
@@ -906,16 +906,16 @@ def upload_dir(path, db_name, collection_name, dbs={'mysql': True, 'mongodb': Tr
|
|
906
906
|
host=host,
|
907
907
|
port=port,
|
908
908
|
)
|
909
|
-
username, password, host, port = get_myconf.select_config_values(
|
910
|
-
|
911
|
-
|
912
|
-
)
|
913
|
-
nas = mysql.MysqlUpload(
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
|
918
|
-
)
|
909
|
+
# username, password, host, port = get_myconf.select_config_values(
|
910
|
+
# target_service='nas',
|
911
|
+
# database='mysql',
|
912
|
+
# )
|
913
|
+
# nas = mysql.MysqlUpload(
|
914
|
+
# username=username,
|
915
|
+
# password=password,
|
916
|
+
# host=host,
|
917
|
+
# port=port,
|
918
|
+
# )
|
919
919
|
|
920
920
|
# 从本地 json 文件从读取 df 的数据类型信息
|
921
921
|
df_to_json = df_types.DataTypes()
|
@@ -1064,11 +1064,11 @@ if __name__ == '__main__':
|
|
1064
1064
|
# target_service='company',
|
1065
1065
|
# database='mysql'
|
1066
1066
|
# )
|
1067
|
-
|
1068
|
-
|
1069
|
-
|
1070
|
-
|
1071
|
-
|
1072
|
-
|
1073
|
-
|
1074
|
-
|
1067
|
+
db_name = '推广数据2'
|
1068
|
+
table_name = '超级直播'
|
1069
|
+
upload_dir(
|
1070
|
+
path='/Users/xigua/数据中心/原始文件2/推广报表/超级直播',
|
1071
|
+
db_name=db_name,
|
1072
|
+
collection_name=table_name,
|
1073
|
+
dbs={'mysql': True, 'mongodb': False},
|
1074
|
+
)
|
mdbq/aggregation/query_data.py
CHANGED
@@ -192,6 +192,33 @@ class MysqlDatasQuery:
|
|
192
192
|
)
|
193
193
|
return df
|
194
194
|
|
195
|
+
def tg_cjzb(self):
|
196
|
+
start_date, end_date = self.months_data(num=self.months)
|
197
|
+
projection = {
|
198
|
+
'日期': 1,
|
199
|
+
'场景名字': 1,
|
200
|
+
'人群名字': 1,
|
201
|
+
'计划名字': 1,
|
202
|
+
'花费': 1,
|
203
|
+
'展现量': 1,
|
204
|
+
'进店量': 1,
|
205
|
+
'粉丝关注量': 1,
|
206
|
+
'观看次数': 1,
|
207
|
+
'总购物车数': 1,
|
208
|
+
'总成交笔数': 1,
|
209
|
+
'总成交金额': 1,
|
210
|
+
'直接成交笔数': 1,
|
211
|
+
'直接成交金额': 1,
|
212
|
+
}
|
213
|
+
df = self.download.data_to_df(
|
214
|
+
db_name='推广数据2',
|
215
|
+
table_name='超级直播',
|
216
|
+
start_date=start_date,
|
217
|
+
end_date=end_date,
|
218
|
+
projection=projection,
|
219
|
+
)
|
220
|
+
return df
|
221
|
+
|
195
222
|
def idbm(self):
|
196
223
|
""" 用生意经日数据制作商品 id 和编码对照表 """
|
197
224
|
data_values = self.download.columns_to_list(
|
@@ -397,6 +424,7 @@ class GroupBy:
|
|
397
424
|
'总成交笔数': '成交笔数',
|
398
425
|
'总成交金额': '成交金额'
|
399
426
|
}, inplace=True)
|
427
|
+
df.fillna(0, inplace=True)
|
400
428
|
df = df.astype({
|
401
429
|
'商品id': str,
|
402
430
|
'花费': float,
|
@@ -409,7 +437,6 @@ class GroupBy:
|
|
409
437
|
'直接成交笔数': int,
|
410
438
|
'直接成交金额': float,
|
411
439
|
}, errors='raise')
|
412
|
-
df.fillna(0, inplace=True)
|
413
440
|
if is_maximize:
|
414
441
|
df = df.groupby(['日期', '营销场景', '商品id', '花费', '展现量', '点击量'], as_index=False).agg(
|
415
442
|
**{'加购量': ('加购量', np.max),
|
@@ -477,6 +504,7 @@ class GroupBy:
|
|
477
504
|
'总成交笔数': '成交笔数',
|
478
505
|
'总成交金额': '成交金额'
|
479
506
|
}, inplace=True)
|
507
|
+
df.fillna(0, inplace=True)
|
480
508
|
df = df.astype({
|
481
509
|
'商品id': str,
|
482
510
|
'花费': float,
|
@@ -488,7 +516,6 @@ class GroupBy:
|
|
488
516
|
'直接成交笔数': int,
|
489
517
|
'直接成交金额': float,
|
490
518
|
}, errors='raise')
|
491
|
-
df.fillna(0, inplace=True)
|
492
519
|
if is_maximize:
|
493
520
|
df = df.groupby(['日期', '营销场景', '商品id', '花费', '展现量', '点击量', '人群名字'], as_index=False).agg(
|
494
521
|
**{'加购量': ('加购量', np.max),
|
@@ -518,6 +545,7 @@ class GroupBy:
|
|
518
545
|
'总成交笔数': '成交笔数',
|
519
546
|
'总成交金额': '成交金额'
|
520
547
|
}, inplace=True)
|
548
|
+
df.fillna(0, inplace=True)
|
521
549
|
df = df.astype({
|
522
550
|
'商品id': str,
|
523
551
|
'花费': float,
|
@@ -529,7 +557,6 @@ class GroupBy:
|
|
529
557
|
'直接成交笔数': int,
|
530
558
|
'直接成交金额': float,
|
531
559
|
}, errors='raise')
|
532
|
-
df.fillna(0, inplace=True)
|
533
560
|
if is_maximize:
|
534
561
|
df = df.groupby(['日期', '营销场景', '商品id', '词类型', '词名字/词包名字', '花费', '展现量', '点击量'], as_index=False).agg(
|
535
562
|
**{'加购量': ('加购量', np.max),
|
@@ -551,6 +578,55 @@ class GroupBy:
|
|
551
578
|
)
|
552
579
|
df.insert(loc=1, column='推广渠道', value='万相台无界版') # df中插入新列
|
553
580
|
return df
|
581
|
+
elif '超级直播' in table_name:
|
582
|
+
df.rename(columns={
|
583
|
+
'观看次数': '观看次数',
|
584
|
+
'总购物车数': '加购量',
|
585
|
+
'总成交笔数': '成交笔数',
|
586
|
+
'总成交金额': '成交金额',
|
587
|
+
'场景名字': '营销场景',
|
588
|
+
}, inplace=True)
|
589
|
+
df.fillna(0, inplace=True)
|
590
|
+
df = df.astype({
|
591
|
+
'花费': float,
|
592
|
+
# '点击量': int,
|
593
|
+
'加购量': int,
|
594
|
+
'成交笔数': int,
|
595
|
+
'成交金额': float,
|
596
|
+
'进店量': int,
|
597
|
+
'粉丝关注量': int,
|
598
|
+
'观看次数': int,
|
599
|
+
}, errors='raise')
|
600
|
+
if is_maximize:
|
601
|
+
df = df.groupby(['日期', '营销场景', '人群名字', '计划名字', '花费', '观看次数', '展现量'],
|
602
|
+
as_index=False).agg(
|
603
|
+
**{
|
604
|
+
'进店量': ('进店量', np.max),
|
605
|
+
'粉丝关注量': ('粉丝关注量', np.max),
|
606
|
+
'加购量': ('加购量', np.max),
|
607
|
+
'成交笔数': ('成交笔数', np.max),
|
608
|
+
'成交金额': ('成交金额', np.max),
|
609
|
+
'直接成交笔数': ('直接成交笔数', np.max),
|
610
|
+
'直接成交金额': ('直接成交金额', np.max),
|
611
|
+
}
|
612
|
+
)
|
613
|
+
else:
|
614
|
+
df = df.groupby(['日期', '营销场景', '人群名字', '计划名字', '花费', '观看次数', '展现量'],
|
615
|
+
as_index=False).agg(
|
616
|
+
**{
|
617
|
+
'进店量': ('进店量', np.min),
|
618
|
+
'粉丝关注量': ('粉丝关注量', np.min),
|
619
|
+
'加购量': ('加购量', np.min),
|
620
|
+
'成交笔数': ('成交笔数', np.min),
|
621
|
+
'成交金额': ('成交金额', np.min),
|
622
|
+
'直接成交笔数': ('直接成交笔数', np.min),
|
623
|
+
'直接成交金额': ('直接成交金额', np.min),
|
624
|
+
}
|
625
|
+
)
|
626
|
+
df.insert(loc=1, column='推广渠道', value='万相台无界版') # df中插入新列
|
627
|
+
# df.insert(loc=2, column='营销场景', value='超级直播') # df中插入新列
|
628
|
+
# df = df.loc[df['日期'].between(start_day, today)]
|
629
|
+
return df
|
554
630
|
elif '宝贝指标' in table_name:
|
555
631
|
""" 聚合时不可以加商家编码,编码有些是空白,有些是 0 """
|
556
632
|
df['宝贝id'] = df['宝贝id'].astype(str)
|
@@ -890,6 +966,10 @@ class GroupBy:
|
|
890
966
|
df.to_excel(os.path.join(path, filename + '.xlsx'), index=index, header=header, engine=engine, freeze_panes=freeze_panes)
|
891
967
|
|
892
968
|
|
969
|
+
def g_group():
|
970
|
+
pass
|
971
|
+
|
972
|
+
|
893
973
|
def data_aggregation_one(service_databases=[{}], months=1):
|
894
974
|
"""
|
895
975
|
# 单独处理某一个聚合数据库,修改添加 data_dict 的值
|
@@ -911,9 +991,9 @@ def data_aggregation_one(service_databases=[{}], months=1):
|
|
911
991
|
data_dict = [
|
912
992
|
{
|
913
993
|
'数据库名': '聚合数据',
|
914
|
-
'集合名': '
|
915
|
-
'唯一主键': ['日期', '
|
916
|
-
'数据主体': sdq.
|
994
|
+
'集合名': '天猫_超级直播',
|
995
|
+
'唯一主键': ['日期', '推广渠道', '营销场景', '花费'],
|
996
|
+
'数据主体': sdq.tg_cjzb(),
|
917
997
|
},
|
918
998
|
]
|
919
999
|
######################################################
|
@@ -1024,6 +1104,12 @@ def data_aggregation(service_databases=[{}], months=1):
|
|
1024
1104
|
'唯一主键': ['日期', '推广渠道', '营销场景', '商品id', '花费', '词类型', '词名字/词包名字',],
|
1025
1105
|
'数据主体': sdq.tg_gjc(),
|
1026
1106
|
},
|
1107
|
+
{
|
1108
|
+
'数据库名': '聚合数据',
|
1109
|
+
'集合名': '天猫_超级直播',
|
1110
|
+
'唯一主键': ['日期', '推广渠道', '营销场景', '花费'],
|
1111
|
+
'数据主体': sdq.tg_cjzb(),
|
1112
|
+
},
|
1027
1113
|
]
|
1028
1114
|
for items in data_dict: # 遍历返回结果
|
1029
1115
|
db_name, table_name, unique_key_list, df = items['数据库名'], items['集合名'], items['唯一主键'], items['数据主体']
|
@@ -1081,7 +1167,7 @@ def data_aggregation(service_databases=[{}], months=1):
|
|
1081
1167
|
|
1082
1168
|
|
1083
1169
|
if __name__ == '__main__':
|
1084
|
-
data_aggregation(service_databases=[{'
|
1085
|
-
|
1170
|
+
# data_aggregation(service_databases=[{'home_lx': 'mysql'}], months=1) # 正常的聚合所有数据
|
1171
|
+
data_aggregation_one(service_databases=[{'home_lx': 'mysql'}], months=1) # 单独聚合某一个数据库,具体库进函数编辑
|
1086
1172
|
# optimize_data.op_data(service_databases=[{'company': 'mysql'}], days=3650) # 立即启动对聚合数据的清理工作
|
1087
1173
|
|
mdbq/mysql/s_query.py
CHANGED
@@ -61,6 +61,9 @@ class QueryDatas:
|
|
61
61
|
if value == 1 and key in cols_exist:
|
62
62
|
columns_in.append(key) # 提取值为 1 的键并清理不在数据表的键
|
63
63
|
columns_in = [f"`{item}`" for item in columns_in]
|
64
|
+
if not columns_in:
|
65
|
+
print(f'传递的参数 projection,在数据库中没有找到匹配的列,请检查 projection: {projection}')
|
66
|
+
return df
|
64
67
|
columns_in = ', '.join(columns_in)
|
65
68
|
if '日期' in cols_exist: # 不论是否指定, 只要数据表有日期,则执行
|
66
69
|
sql = (f"SELECT {columns_in} FROM `{db_name}`.`{table_name}` "
|
@@ -1,11 +1,11 @@
|
|
1
1
|
mdbq/__init__.py,sha256=Il5Q9ATdX8yXqVxtP_nYqUhExzxPC_qk_WXQ_4h0exg,16
|
2
2
|
mdbq/__version__.py,sha256=y9Mp_8x0BCZSHsdLT_q5tX9wZwd5QgqrSIENLrb6vXA,62
|
3
3
|
mdbq/aggregation/__init__.py,sha256=EeDqX2Aml6SPx8363J-v1lz0EcZtgwIBYyCJV6CcEDU,40
|
4
|
-
mdbq/aggregation/aggregation.py,sha256=
|
4
|
+
mdbq/aggregation/aggregation.py,sha256=Fb74FW6EgYGlFiTqcITgBEWeHUAv13A2VN5EIKojOxQ,61703
|
5
5
|
mdbq/aggregation/df_types.py,sha256=oQJS2IBU3_IO6GMgbssHuC2yCjNnbta0QPGrFOwNLnU,7591
|
6
6
|
mdbq/aggregation/mysql_types.py,sha256=DQYROALDiwjJzjhaJfIIdnsrNs11i5BORlj_v6bp67Y,11062
|
7
7
|
mdbq/aggregation/optimize_data.py,sha256=u2Kl_MFtZueXJ57ycy4H2OhXD431RctUYJYCl637uT0,4176
|
8
|
-
mdbq/aggregation/query_data.py,sha256=
|
8
|
+
mdbq/aggregation/query_data.py,sha256=TG2J72xQ_oiluW3WRk8Sh2lW9dGXyCAyYo8Mjsdjuxc,56244
|
9
9
|
mdbq/bdup/__init__.py,sha256=AkhsGk81SkG1c8FqDH5tRq-8MZmFobVbN60DTyukYTY,28
|
10
10
|
mdbq/bdup/bdup.py,sha256=LAV0TgnQpc-LB-YuJthxb0U42_VkPidzQzAagan46lU,4234
|
11
11
|
mdbq/clean/__init__.py,sha256=A1d6x3L27j4NtLgiFV5TANwEkLuaDfPHDQNrPBbNWtU,41
|
@@ -25,7 +25,7 @@ mdbq/mongo/__init__.py,sha256=SILt7xMtQIQl_m-ik9WLtJSXIVf424iYgCfE_tnQFbw,13
|
|
25
25
|
mdbq/mongo/mongo.py,sha256=v9qvrp6p1ZRWuPpbSilqveiE0FEcZF7U5xUPI0RN4xs,31880
|
26
26
|
mdbq/mysql/__init__.py,sha256=A_DPJyAoEvTSFojiI2e94zP0FKtCkkwKP1kYUCSyQzo,11
|
27
27
|
mdbq/mysql/mysql.py,sha256=Fiha5MUqac36UUhLfOoRybhwbRftub9qUBi63wVz1Pc,43329
|
28
|
-
mdbq/mysql/s_query.py,sha256=
|
28
|
+
mdbq/mysql/s_query.py,sha256=fIQvQKPyV7rvSUuxVWXv9S5FmCnIM4GHKconE1Zn5BA,8378
|
29
29
|
mdbq/mysql/year_month_day.py,sha256=VgewoE2pJxK7ErjfviL_SMTN77ki8GVbTUcao3vFUCE,1523
|
30
30
|
mdbq/other/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
|
31
31
|
mdbq/other/porxy.py,sha256=UHfgEyXugogvXgsG68a7QouUCKaohTKKkI4RN-kYSdQ,4961
|
@@ -35,7 +35,7 @@ mdbq/pbix/__init__.py,sha256=Trtfaynu9RjoTyLLYBN2xdRxTvm_zhCniUkVTAYwcjo,24
|
|
35
35
|
mdbq/pbix/pbix_refresh.py,sha256=JUjKW3bNEyoMVfVfo77UhguvS5AWkixvVhDbw4_MHco,2396
|
36
36
|
mdbq/pbix/refresh_all.py,sha256=tgy762608HMaXWynbOURIf2UVMuSPybzrDXQnOOcnZU,6102
|
37
37
|
mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
|
38
|
-
mdbq-1.6.
|
39
|
-
mdbq-1.6.
|
40
|
-
mdbq-1.6.
|
41
|
-
mdbq-1.6.
|
38
|
+
mdbq-1.6.2.dist-info/METADATA,sha256=tHulrCtoamc5pSt-mVLU3aM_dIs0AqKv8Pd8SX7-bzE,245
|
39
|
+
mdbq-1.6.2.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
40
|
+
mdbq-1.6.2.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
|
41
|
+
mdbq-1.6.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|