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.
@@ -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
- m.df_to_mysql(
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
- db_name_lists=['聚合数据'],
3654
- days=100, # 清理聚合数据的日期长度
3655
- is_mongo=False,
3656
- is_mysql=True,
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=[])
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mdbq
3
- Version: 3.3.10
3
+ Version: 3.3.12
4
4
  Home-page: https://pypi.org/project/mdbq
5
5
  Author: xigua,
6
6
  Author-email: 2587125111@qq.com
@@ -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=o23iwJJSYkBz96iIaQVGq3tVY8ko9xuk3YjVnSNVIxE,166436
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.10.dist-info/METADATA,sha256=xe39hYEl86qaHleQTrefnW8RpdZMCuROqXGUxutV4Bw,244
37
- mdbq-3.3.10.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
38
- mdbq-3.3.10.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
39
- mdbq-3.3.10.dist-info/RECORD,,
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