mdbq 1.7.3__tar.gz → 1.7.4__tar.gz
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-1.7.3 → mdbq-1.7.4}/PKG-INFO +1 -1
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/aggregation/aggregation.py +3 -3
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/aggregation/query_data.py +111 -11
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/mysql/mysql.py +1 -1
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq.egg-info/PKG-INFO +1 -1
- {mdbq-1.7.3 → mdbq-1.7.4}/setup.py +1 -1
- {mdbq-1.7.3 → mdbq-1.7.4}/README.txt +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/__init__.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/__version__.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/aggregation/__init__.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/aggregation/df_types.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/aggregation/mysql_types.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/aggregation/optimize_data.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/bdup/__init__.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/bdup/bdup.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/clean/__init__.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/clean/data_clean.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/company/__init__.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/company/copysh.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/config/__init__.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/config/get_myconf.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/config/products.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/config/set_support.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/config/update_conf.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/dataframe/__init__.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/dataframe/converter.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/log/__init__.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/log/mylogger.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/mongo/__init__.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/mongo/mongo.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/mysql/__init__.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/mysql/s_query.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/mysql/year_month_day.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/other/__init__.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/other/porxy.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/other/pov_city.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/other/ua_sj.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/pbix/__init__.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/pbix/pbix_refresh.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/pbix/refresh_all.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq/spider/__init__.py +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq.egg-info/SOURCES.txt +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq.egg-info/dependency_links.txt +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/mdbq.egg-info/top_level.txt +0 -0
- {mdbq-1.7.3 → mdbq-1.7.4}/setup.cfg +0 -0
@@ -1082,10 +1082,10 @@ if __name__ == '__main__':
|
|
1082
1082
|
# database='mysql'
|
1083
1083
|
# )
|
1084
1084
|
|
1085
|
-
db_name = '
|
1086
|
-
table_name = '
|
1085
|
+
db_name = '推广数据2'
|
1086
|
+
table_name = '超级直播'
|
1087
1087
|
upload_dir(
|
1088
|
-
path='/Users/xigua/数据中心/原始文件2
|
1088
|
+
path='/Users/xigua/数据中心/原始文件2/推广报表/超级直播',
|
1089
1089
|
db_name=db_name,
|
1090
1090
|
collection_name=table_name,
|
1091
1091
|
dbs={'mysql': True, 'mongodb': False},
|
@@ -219,6 +219,31 @@ class MysqlDatasQuery:
|
|
219
219
|
)
|
220
220
|
return df
|
221
221
|
|
222
|
+
def pxb_zh(self):
|
223
|
+
start_date, end_date = self.months_data(num=self.months)
|
224
|
+
projection = {
|
225
|
+
'日期': 1,
|
226
|
+
'报表类型': 1,
|
227
|
+
'搜索量': 1,
|
228
|
+
'搜索访客数': 1,
|
229
|
+
'展现量': 1,
|
230
|
+
# '自然流量增量曝光': 1,
|
231
|
+
'消耗': 1,
|
232
|
+
'点击量': 1,
|
233
|
+
'宝贝加购数': 1,
|
234
|
+
'成交笔数': 1,
|
235
|
+
'成交金额': 1,
|
236
|
+
# '成交访客数': 1
|
237
|
+
}
|
238
|
+
df = self.download.data_to_df(
|
239
|
+
db_name='推广数据2',
|
240
|
+
table_name='品销宝',
|
241
|
+
start_date=start_date,
|
242
|
+
end_date=end_date,
|
243
|
+
projection=projection,
|
244
|
+
)
|
245
|
+
return df
|
246
|
+
|
222
247
|
def idbm(self):
|
223
248
|
""" 用生意经日数据制作商品 id 和编码对照表 """
|
224
249
|
data_values = self.download.columns_to_list(
|
@@ -442,7 +467,12 @@ class GroupBy:
|
|
442
467
|
"""
|
443
468
|
if isinstance(df, pd.DataFrame):
|
444
469
|
if len(df) == 0:
|
445
|
-
print(f' query_data.groupby函数中 {table_name} 传入的 df 数据长度为0')
|
470
|
+
print(f' query_data.groupby 函数中 {table_name} 传入的 df 数据长度为0')
|
471
|
+
self.data_tgyj.update(
|
472
|
+
{
|
473
|
+
table_name: pd.DataFrame(),
|
474
|
+
}
|
475
|
+
)
|
446
476
|
return pd.DataFrame()
|
447
477
|
else:
|
448
478
|
print(f'query_data.groupby函数中 {table_name} 传入的 df 不是 dataframe 结构')
|
@@ -625,6 +655,7 @@ class GroupBy:
|
|
625
655
|
'总成交金额': '成交金额',
|
626
656
|
'场景名字': '营销场景',
|
627
657
|
}, inplace=True)
|
658
|
+
df['营销场景'] = '超级直播'
|
628
659
|
df.fillna(0, inplace=True)
|
629
660
|
df = df.astype({
|
630
661
|
'花费': float,
|
@@ -683,6 +714,63 @@ class GroupBy:
|
|
683
714
|
}
|
684
715
|
)
|
685
716
|
return df
|
717
|
+
elif '天猫_品销宝账户报表' in table_name:
|
718
|
+
df = df[df['报表类型'] == '账户']
|
719
|
+
df.fillna(value=0, inplace=True)
|
720
|
+
df.rename(columns={
|
721
|
+
'消耗': '花费',
|
722
|
+
'宝贝加购数': '加购量',
|
723
|
+
'搜索量': '品牌搜索量',
|
724
|
+
'搜索访客数': '品牌搜索人数'
|
725
|
+
}, inplace=True)
|
726
|
+
df = df.astype({
|
727
|
+
'花费': float,
|
728
|
+
'展现量': int,
|
729
|
+
'点击量': int,
|
730
|
+
'加购量': int,
|
731
|
+
'成交笔数': int,
|
732
|
+
'成交金额': float,
|
733
|
+
'品牌搜索量': int,
|
734
|
+
'品牌搜索人数': int,
|
735
|
+
}, errors='raise')
|
736
|
+
if is_maximize:
|
737
|
+
df = df.groupby(['日期', '报表类型', '花费', '展现量', '点击量'], as_index=False).agg(
|
738
|
+
**{
|
739
|
+
'加购量': ('加购量', np.max),
|
740
|
+
'成交笔数': ('成交笔数', np.max),
|
741
|
+
'成交金额': ('成交金额', np.max),
|
742
|
+
'品牌搜索量': ('品牌搜索量', np.max),
|
743
|
+
'品牌搜索人数': ('品牌搜索人数', np.max),
|
744
|
+
}
|
745
|
+
)
|
746
|
+
else:
|
747
|
+
df = df.groupby(['日期', '报表类型', '花费', '展现量', '点击量'], as_index=False).agg(
|
748
|
+
**{
|
749
|
+
'加购量': ('加购量', np.min),
|
750
|
+
'成交笔数': ('成交笔数', np.min),
|
751
|
+
'成交金额': ('成交金额', np.min),
|
752
|
+
'品牌搜索量': ('品牌搜索量', np.min),
|
753
|
+
'品牌搜索人数': ('品牌搜索人数', np.min),
|
754
|
+
}
|
755
|
+
)
|
756
|
+
df.insert(loc=1, column='推广渠道', value='品销宝') # df中插入新列
|
757
|
+
df.insert(loc=2, column='营销场景', value='品销宝') # df中插入新列
|
758
|
+
df_new = df.groupby(['日期', '推广渠道', '营销场景'], as_index=False).agg(
|
759
|
+
**{
|
760
|
+
'花费': ('花费', np.sum),
|
761
|
+
'展现量': ('展现量', np.sum),
|
762
|
+
'点击量': ('点击量', np.sum),
|
763
|
+
'加购量': ('加购量', np.sum),
|
764
|
+
'成交笔数': ('成交笔数', np.sum),
|
765
|
+
'成交金额': ('成交金额', np.sum)
|
766
|
+
}
|
767
|
+
)
|
768
|
+
self.data_tgyj.update(
|
769
|
+
{
|
770
|
+
table_name: df_new,
|
771
|
+
}
|
772
|
+
)
|
773
|
+
return df
|
686
774
|
elif '宝贝指标' in table_name:
|
687
775
|
""" 聚合时不可以加商家编码,编码有些是空白,有些是 0 """
|
688
776
|
df['宝贝id'] = df['宝贝id'].astype(str)
|
@@ -932,7 +1020,7 @@ class GroupBy:
|
|
932
1020
|
return df
|
933
1021
|
|
934
1022
|
def performance_concat(self, bb_tg=True):
|
935
|
-
tg, zb = self.data_tgyj['天猫汇总表调用'], self.data_tgyj['天猫_超级直播']
|
1023
|
+
tg, zb, pxb = self.data_tgyj['天猫汇总表调用'], self.data_tgyj['天猫_超级直播'], self.data_tgyj['天猫_品销宝账户报表']
|
936
1024
|
zb.rename(columns={
|
937
1025
|
'观看次数': '点击量',
|
938
1026
|
}, inplace=True)
|
@@ -960,7 +1048,7 @@ class GroupBy:
|
|
960
1048
|
'直接成交金额': float,
|
961
1049
|
'自然流量曝光量': int,
|
962
1050
|
}, errors='raise')
|
963
|
-
df = pd.concat([tg, zb], axis=0, ignore_index=True)
|
1051
|
+
df = pd.concat([tg, zb, pxb], axis=0, ignore_index=True)
|
964
1052
|
df.fillna(0, inplace=True) # concat 之后要填充空值
|
965
1053
|
df = df.astype(
|
966
1054
|
{
|
@@ -1109,9 +1197,9 @@ def data_aggregation_one(service_databases=[{}], months=1):
|
|
1109
1197
|
######################################################
|
1110
1198
|
data_dict = [
|
1111
1199
|
{
|
1112
|
-
'数据库名': '聚合数据',
|
1113
|
-
'集合名': '
|
1114
|
-
'唯一主键': ['日期', '
|
1200
|
+
'数据库名': '聚合数据', # 清洗完回传的目的地数据库
|
1201
|
+
'集合名': '天猫_推广汇总', # 清洗完回传的数据表名
|
1202
|
+
'唯一主键': ['日期', '商品id'],
|
1115
1203
|
'数据主体': sdq.jd_gjc(),
|
1116
1204
|
},
|
1117
1205
|
]
|
@@ -1153,8 +1241,8 @@ def data_aggregation(service_databases=[{}], months=1):
|
|
1153
1241
|
# 从数据库中获取数据, 返回包含 df 数据的字典
|
1154
1242
|
data_dict = [
|
1155
1243
|
{
|
1156
|
-
'数据库名': '聚合数据',
|
1157
|
-
'集合名': '天猫_主体报表',
|
1244
|
+
'数据库名': '聚合数据', # 清洗完回传的目的地数据库
|
1245
|
+
'集合名': '天猫_主体报表', # 清洗完回传的数据表名
|
1158
1246
|
'唯一主键': ['日期', '推广渠道', '营销场景', '商品id', '花费'],
|
1159
1247
|
'数据主体': sdq.tg_wxt(),
|
1160
1248
|
},
|
@@ -1236,6 +1324,12 @@ def data_aggregation(service_databases=[{}], months=1):
|
|
1236
1324
|
'唯一主键': ['日期', '产品线', '搜索词', '关键词', '展现数', '花费'],
|
1237
1325
|
'数据主体': sdq.jd_gjc(),
|
1238
1326
|
},
|
1327
|
+
{
|
1328
|
+
'数据库名': '聚合数据',
|
1329
|
+
'集合名': '天猫_品销宝账户报表',
|
1330
|
+
'唯一主键': ['日期', '报表类型'],
|
1331
|
+
'数据主体': sdq.pxb_zh(),
|
1332
|
+
},
|
1239
1333
|
]
|
1240
1334
|
for items in data_dict: # 遍历返回结果
|
1241
1335
|
db_name, table_name, unique_key_list, df = items['数据库名'], items['集合名'], items['唯一主键'], items['数据主体']
|
@@ -1246,6 +1340,7 @@ def data_aggregation(service_databases=[{}], months=1):
|
|
1246
1340
|
df=g.sp_index_datas,
|
1247
1341
|
db_name='属性设置2',
|
1248
1342
|
table_name='商品索引表',
|
1343
|
+
# df_sql=True,
|
1249
1344
|
drop_duplicates=False,
|
1250
1345
|
icm_update=['商品id'],
|
1251
1346
|
service_database=service_database,
|
@@ -1256,8 +1351,9 @@ def data_aggregation(service_databases=[{}], months=1):
|
|
1256
1351
|
df=df,
|
1257
1352
|
db_name=db_name,
|
1258
1353
|
table_name=table_name,
|
1354
|
+
df_sql=True,
|
1259
1355
|
drop_duplicates=False,
|
1260
|
-
icm_update=unique_key_list,
|
1356
|
+
# icm_update=unique_key_list,
|
1261
1357
|
service_database=service_database,
|
1262
1358
|
) # 3. 回传数据库
|
1263
1359
|
res = g.performance(bb_tg=True) # 盈亏表,依赖其他表,单独做
|
@@ -1265,6 +1361,7 @@ def data_aggregation(service_databases=[{}], months=1):
|
|
1265
1361
|
df=res,
|
1266
1362
|
db_name='聚合数据',
|
1267
1363
|
table_name='_全店商品销售',
|
1364
|
+
# df_sql=True,
|
1268
1365
|
drop_duplicates=False,
|
1269
1366
|
icm_update=['日期', '商品id'], # 设置唯一主键
|
1270
1367
|
service_database=service_database,
|
@@ -1274,6 +1371,7 @@ def data_aggregation(service_databases=[{}], months=1):
|
|
1274
1371
|
df=res,
|
1275
1372
|
db_name='聚合数据',
|
1276
1373
|
table_name='_推广商品销售',
|
1374
|
+
# df_sql=True,
|
1277
1375
|
drop_duplicates=False,
|
1278
1376
|
icm_update=['日期', '商品id'], # 设置唯一主键
|
1279
1377
|
service_database=service_database,
|
@@ -1284,6 +1382,7 @@ def data_aggregation(service_databases=[{}], months=1):
|
|
1284
1382
|
df=res,
|
1285
1383
|
db_name='聚合数据',
|
1286
1384
|
table_name='天猫_推广汇总',
|
1385
|
+
# df_sql=True,
|
1287
1386
|
drop_duplicates=False,
|
1288
1387
|
icm_update=['日期', '商品id'], # 设置唯一主键
|
1289
1388
|
service_database=service_database,
|
@@ -1295,6 +1394,7 @@ def data_aggregation(service_databases=[{}], months=1):
|
|
1295
1394
|
df=res,
|
1296
1395
|
db_name='聚合数据',
|
1297
1396
|
table_name='_京东_推广商品销售',
|
1397
|
+
# df_sql=True,
|
1298
1398
|
drop_duplicates=False,
|
1299
1399
|
icm_update=['日期', '跟单sku id', '货号', '花费'], # 设置唯一主键
|
1300
1400
|
service_database=service_database,
|
@@ -1310,7 +1410,7 @@ def main():
|
|
1310
1410
|
|
1311
1411
|
|
1312
1412
|
if __name__ == '__main__':
|
1313
|
-
|
1314
|
-
data_aggregation_one(service_databases=[{'company': 'mysql'}], months=1) # 单独聚合某一个数据库,具体库进函数编辑
|
1413
|
+
data_aggregation(service_databases=[{'home_lx': 'mysql'}], months=1) # 正常的聚合所有数据
|
1414
|
+
# data_aggregation_one(service_databases=[{'company': 'mysql'}], months=1) # 单独聚合某一个数据库,具体库进函数编辑
|
1315
1415
|
# optimize_data.op_data(service_databases=[{'company': 'mysql'}], days=3650) # 立即启动对聚合数据的清理工作
|
1316
1416
|
|
@@ -209,7 +209,7 @@ class MysqlUpload:
|
|
209
209
|
cols_exist = [col['COLUMN_NAME'] for col in columns] # 数据表的所有列, 返回 list
|
210
210
|
update_col = [item for item in cols_exist if item not in icm_update and item != 'id'] # 除了主键外的其他列
|
211
211
|
|
212
|
-
# unique_keys 示例: `日期`,
|
212
|
+
# unique_keys 示例: `日期`, `余额`
|
213
213
|
unique_keys = ', '.join(f"`{item}`" for item in update_col) # 列名需要转义
|
214
214
|
condition = []
|
215
215
|
for up_col in icm_update:
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|