mdbq 3.3.10__py3-none-any.whl → 3.3.12__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
@@ -1164,6 +1164,141 @@ class MysqlDatasQuery:
|
|
1164
1164
|
)
|
1165
1165
|
return True
|
1166
1166
|
|
1167
|
+
def spph(self, db_name='聚合数据', table_name='天猫_商品排行'):
|
1168
|
+
""" """
|
1169
|
+
start_date, end_date = self.months_data(num=self.months)
|
1170
|
+
projection = {}
|
1171
|
+
__res = []
|
1172
|
+
for year in range(2024, datetime.datetime.today().year+1):
|
1173
|
+
df = self.download.data_to_df(
|
1174
|
+
db_name='生意参谋3',
|
1175
|
+
table_name=f'商品排行_{year}',
|
1176
|
+
start_date=start_date,
|
1177
|
+
end_date=end_date,
|
1178
|
+
projection=projection,
|
1179
|
+
)
|
1180
|
+
__res.append(df)
|
1181
|
+
df = pd.concat(__res, ignore_index=True)
|
1182
|
+
|
1183
|
+
projection = {}
|
1184
|
+
df_set = self.download.data_to_df(
|
1185
|
+
db_name='属性设置3',
|
1186
|
+
table_name=f'货品年份基准',
|
1187
|
+
start_date=start_date,
|
1188
|
+
end_date=end_date,
|
1189
|
+
projection=projection,
|
1190
|
+
)
|
1191
|
+
df.drop_duplicates(
|
1192
|
+
subset=['日期', '店铺名称', '商品id', '商品访客数'], keep='last',
|
1193
|
+
inplace=True, ignore_index=True)
|
1194
|
+
df_set['商品id'] = df_set['商品id'].astype('int64')
|
1195
|
+
df_set = df_set[['商品id', '上市年份']]
|
1196
|
+
df['商品id'] = df['商品id'].astype('int64')
|
1197
|
+
df_set.sort_values('商品id', ascending=False, ignore_index=True, inplace=True)
|
1198
|
+
|
1199
|
+
def check_year(item_id):
|
1200
|
+
for item in df_set.to_dict(orient='records'):
|
1201
|
+
if item_id > item['商品id']:
|
1202
|
+
return item['上市年份']
|
1203
|
+
|
1204
|
+
df['上市年份'] = df['商品id'].apply(lambda x: check_year(x))
|
1205
|
+
p = df.pop('上市年份')
|
1206
|
+
df.insert(loc=7, column='上市年月', value=p)
|
1207
|
+
df['上市年份_f'] = df['上市年月'].apply(lambda x: '0' if x == '历史悠久' else re.findall(r'(\d+)年', x)[0])
|
1208
|
+
p = df.pop('上市年份_f')
|
1209
|
+
df.insert(loc=7, column='上市年份_f', value=p)
|
1210
|
+
|
1211
|
+
def check_jijie(string):
|
1212
|
+
pattern = re.findall(r'\d+年(\d+)月', string)
|
1213
|
+
if not pattern:
|
1214
|
+
return '-'
|
1215
|
+
pattern = pattern[0]
|
1216
|
+
if 0 < int(pattern) < 4:
|
1217
|
+
return '春'
|
1218
|
+
elif 4 < int(pattern) < 6:
|
1219
|
+
return '夏'
|
1220
|
+
elif 6 < int(pattern) < 9:
|
1221
|
+
return '秋'
|
1222
|
+
else:
|
1223
|
+
return '冬'
|
1224
|
+
|
1225
|
+
df['上市季节'] = df['上市年月'].apply(lambda x: check_jijie(x))
|
1226
|
+
p = df.pop('上市季节')
|
1227
|
+
df.insert(loc=9, column='上市季节', value=p)
|
1228
|
+
|
1229
|
+
set_typ = {
|
1230
|
+
'商品id': 'BIGINT',
|
1231
|
+
'店铺名称': 'varchar(100)',
|
1232
|
+
'商品名称': 'varchar(255)',
|
1233
|
+
'主商品id': 'BIGINT',
|
1234
|
+
'商品类型': 'varchar(50)',
|
1235
|
+
'货号': 'varchar(50)',
|
1236
|
+
'商品状态': 'varchar(50)',
|
1237
|
+
'商品标签': 'varchar(50)',
|
1238
|
+
'商品访客数': 'int',
|
1239
|
+
'商品浏览量': 'int',
|
1240
|
+
'平均停留时长': 'decimal(10,2)',
|
1241
|
+
'商品详情页跳出率': 'decimal(6,4)',
|
1242
|
+
'商品收藏人数': 'smallint',
|
1243
|
+
'商品加购件数': 'smallint',
|
1244
|
+
'商品加购人数': 'smallint',
|
1245
|
+
'下单买家数': 'smallint',
|
1246
|
+
'下单件数': 'smallint',
|
1247
|
+
'下单金额': 'decimal(10,2)',
|
1248
|
+
'下单转化率': 'decimal(10,4)',
|
1249
|
+
'支付买家数': 'smallint',
|
1250
|
+
'支付件数': 'int',
|
1251
|
+
'支付金额': 'decimal(12,2)',
|
1252
|
+
'商品支付转化率': 'decimal(10,4)',
|
1253
|
+
'支付新买家数': 'smallint',
|
1254
|
+
'支付老买家数': 'smallint',
|
1255
|
+
'老买家支付金额': 'decimal(10,2)',
|
1256
|
+
'聚划算支付金额': 'decimal(10,2)',
|
1257
|
+
'访客平均价值': 'decimal(10,2)',
|
1258
|
+
'成功退款金额': 'decimal(10,2)',
|
1259
|
+
'竞争力评分': 'smallint',
|
1260
|
+
'年累计支付金额': 'decimal(12,2)',
|
1261
|
+
'月累计支付金额': 'decimal(12,2)',
|
1262
|
+
'月累计支付件数': 'mediumint',
|
1263
|
+
'搜索引导支付转化率': 'decimal(6,4)',
|
1264
|
+
'搜索引导访客数': 'smallint',
|
1265
|
+
'搜索引导支付买家数': 'smallint',
|
1266
|
+
'结构化详情引导转化率': 'decimal(6,4)',
|
1267
|
+
'结构化详情引导成交占比': 'decimal(6,4)',
|
1268
|
+
'更新时间': 'timestamp',
|
1269
|
+
'上市年份': 'varchar(100)',
|
1270
|
+
}
|
1271
|
+
min_date = df['日期'].min().strftime("%Y-%m-%d")
|
1272
|
+
max_date = df['日期'].max().strftime("%Y-%m-%d")
|
1273
|
+
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
1274
|
+
print(f'{now} 正在更新: mysql ({host}:{port}) {db_name}/{table_name} -> {min_date}~{max_date}')
|
1275
|
+
m_engine.df_to_mysql(
|
1276
|
+
df=df,
|
1277
|
+
db_name=db_name,
|
1278
|
+
table_name=table_name,
|
1279
|
+
# icm_update=['日期', '一级来源', '二级来源', '三级来源', '访客数'], # 增量更新, 在聚合数据中使用,其他不要用
|
1280
|
+
move_insert=True, # 先删除,再插入
|
1281
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1282
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1283
|
+
count=None,
|
1284
|
+
filename=None, # 用来追踪处理进度
|
1285
|
+
reset_id=True, # 是否重置自增列
|
1286
|
+
set_typ=set_typ,
|
1287
|
+
)
|
1288
|
+
company_engine.df_to_mysql(
|
1289
|
+
df=df,
|
1290
|
+
db_name=db_name,
|
1291
|
+
table_name=table_name,
|
1292
|
+
# icm_update=['日期', '一级来源', '二级来源', '三级来源', '访客数'], # 增量更新, 在聚合数据中使用,其他不要用
|
1293
|
+
move_insert=True, # 先删除,再插入
|
1294
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1295
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
1296
|
+
count=None,
|
1297
|
+
filename=None, # 用来追踪处理进度
|
1298
|
+
reset_id=True, # 是否重置自增列
|
1299
|
+
set_typ=set_typ,
|
1300
|
+
)
|
1301
|
+
|
1167
1302
|
# @try_except
|
1168
1303
|
def dplyd(self, db_name='聚合数据', table_name='店铺流量来源构成'):
|
1169
1304
|
""" 新旧版取的字段是一样的 """
|
@@ -3489,12 +3624,6 @@ def date_table():
|
|
3489
3624
|
df.rename(columns={'index': 'id'}, inplace=True)
|
3490
3625
|
df['id'] = df['id'].apply(lambda x: x + 1)
|
3491
3626
|
|
3492
|
-
m = mysql.MysqlUpload(
|
3493
|
-
username=username,
|
3494
|
-
password=password,
|
3495
|
-
host=host,
|
3496
|
-
port=port,
|
3497
|
-
)
|
3498
3627
|
set_typ = {
|
3499
3628
|
'日期': 'date',
|
3500
3629
|
'年': 'varchar(50)',
|
@@ -3509,7 +3638,18 @@ def date_table():
|
|
3509
3638
|
'索引': 'int',
|
3510
3639
|
'月索引': 'int',
|
3511
3640
|
}
|
3512
|
-
|
3641
|
+
m_engine.df_to_mysql(
|
3642
|
+
df=df,
|
3643
|
+
db_name='聚合数据',
|
3644
|
+
table_name='日期表',
|
3645
|
+
move_insert=True, # 先删除,再插入
|
3646
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
3647
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
3648
|
+
count=None,
|
3649
|
+
filename=None, # 用来追踪处理进度
|
3650
|
+
set_typ=set_typ,
|
3651
|
+
)
|
3652
|
+
company_engine.df_to_mysql(
|
3513
3653
|
df=df,
|
3514
3654
|
db_name='聚合数据',
|
3515
3655
|
table_name='日期表',
|
@@ -3566,15 +3706,25 @@ def query2(months=1, less_dict=[]):
|
|
3566
3706
|
sdq.deeplink(db_name='聚合数据', table_name='达摩盘_deeplink人群洞察')
|
3567
3707
|
|
3568
3708
|
|
3709
|
+
def query3(months=1, less_dict=[]):
|
3710
|
+
if months == 0:
|
3711
|
+
print(f'months 不建议为 0 ')
|
3712
|
+
return
|
3713
|
+
sdq = MysqlDatasQuery() # 实例化数据处理类
|
3714
|
+
sdq.months = months # 设置数据周期, 1 表示近 2 个月
|
3715
|
+
sdq.update_service = True # 调试时加,true: 将数据写入 mysql 服务器
|
3716
|
+
sdq.spph(db_name='聚合数据', table_name='天猫_商品排行')
|
3717
|
+
|
3718
|
+
|
3569
3719
|
def main(days=150, months=3):
|
3570
3720
|
"""
|
3571
|
-
days:
|
3721
|
+
days: 清理聚合数据的日期长度,days 最好大于 3 * (months +1)
|
3572
3722
|
months: 生成聚合数据的长度
|
3573
3723
|
"""
|
3574
3724
|
# 1. 更新日期表 更新货品年份基准表, 属性设置 3 - 货品年份基准
|
3575
3725
|
date_table()
|
3576
|
-
p = products.Products()
|
3577
|
-
p.to_mysql()
|
3726
|
+
# p = products.Products()
|
3727
|
+
# p.to_mysql()
|
3578
3728
|
|
3579
3729
|
# 清理非聚合数据库
|
3580
3730
|
db_list = [
|
@@ -3607,7 +3757,7 @@ def main(days=150, months=3):
|
|
3607
3757
|
# future.result()
|
3608
3758
|
|
3609
3759
|
# 2. 数据聚合
|
3610
|
-
query_list = [query1, query2]
|
3760
|
+
query_list = [query1, query2, query3]
|
3611
3761
|
# 使用 ThreadPoolExecutor 来并行运行
|
3612
3762
|
with concurrent.futures.ThreadPoolExecutor() as executor:
|
3613
3763
|
for func_query in query_list:
|
@@ -3648,10 +3798,12 @@ if __name__ == '__main__':
|
|
3648
3798
|
# ),
|
3649
3799
|
# }
|
3650
3800
|
|
3651
|
-
# 3. 清理聚合数据
|
3652
|
-
optimize_data.op_data(
|
3653
|
-
|
3654
|
-
|
3655
|
-
|
3656
|
-
|
3657
|
-
)
|
3801
|
+
# # 3. 清理聚合数据
|
3802
|
+
# optimize_data.op_data(
|
3803
|
+
# db_name_lists=['聚合数据'],
|
3804
|
+
# days=100, # 清理聚合数据的日期长度
|
3805
|
+
# is_mongo=False,
|
3806
|
+
# is_mysql=True,
|
3807
|
+
# )
|
3808
|
+
|
3809
|
+
query3(months=2, less_dict=[])
|
@@ -3,7 +3,7 @@ mdbq/__version__.py,sha256=y9Mp_8x0BCZSHsdLT_q5tX9wZwd5QgqrSIENLrb6vXA,62
|
|
3
3
|
mdbq/aggregation/__init__.py,sha256=EeDqX2Aml6SPx8363J-v1lz0EcZtgwIBYyCJV6CcEDU,40
|
4
4
|
mdbq/aggregation/aggregation.py,sha256=-yzApnlqSN2L0E1YMu5ml-W827qpKQvWPCOI7jj2kzY,80264
|
5
5
|
mdbq/aggregation/optimize_data.py,sha256=RXIv7cACCgYyehAxMjUYi_S7rVyjIwXKWMaM3nduGtA,3068
|
6
|
-
mdbq/aggregation/query_data.py,sha256=
|
6
|
+
mdbq/aggregation/query_data.py,sha256=tXQzRkexIbVzwYwPO2Kp3HAhqfTPDRc-ZLeBKlGrvYw,173547
|
7
7
|
mdbq/bdup/__init__.py,sha256=AkhsGk81SkG1c8FqDH5tRq-8MZmFobVbN60DTyukYTY,28
|
8
8
|
mdbq/bdup/bdup.py,sha256=LAV0TgnQpc-LB-YuJthxb0U42_VkPidzQzAagan46lU,4234
|
9
9
|
mdbq/config/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
|
@@ -33,7 +33,7 @@ mdbq/pbix/refresh_all.py,sha256=OBT9EewSZ0aRS9vL_FflVn74d4l2G00wzHiikCC4TC0,5926
|
|
33
33
|
mdbq/pbix/refresh_all_old.py,sha256=_pq3WSQ728GPtEG5pfsZI2uTJhU8D6ra-htIk1JXYzw,7192
|
34
34
|
mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
|
35
35
|
mdbq/spider/aikucun.py,sha256=zOacjrJ3MvToyuugA68xB-oN6RKj8K3GxMKudnln9EA,22207
|
36
|
-
mdbq-3.3.
|
37
|
-
mdbq-3.3.
|
38
|
-
mdbq-3.3.
|
39
|
-
mdbq-3.3.
|
36
|
+
mdbq-3.3.12.dist-info/METADATA,sha256=3wdTVOw51cYbBG2GJ9m_eMaJtgs4-ZpFOxV6ePkajDQ,244
|
37
|
+
mdbq-3.3.12.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
38
|
+
mdbq-3.3.12.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
|
39
|
+
mdbq-3.3.12.dist-info/RECORD,,
|
File without changes
|
File without changes
|