mdbq 4.0.52__tar.gz → 4.0.54__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-4.0.52 → mdbq-4.0.54}/PKG-INFO +1 -1
- mdbq-4.0.54/mdbq/__version__.py +1 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/aggregation/query_data.py +130 -73
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/aggregation/set_typ_dict.py +30 -1
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/mysql/uploader.py +4 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq.egg-info/PKG-INFO +1 -1
- mdbq-4.0.52/mdbq/__version__.py +0 -1
- {mdbq-4.0.52 → mdbq-4.0.54}/README.txt +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/__init__.py +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/aggregation/__init__.py +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/log/__init__.py +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/log/mylogger.py +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/myconf/__init__.py +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/myconf/myconf.py +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/mysql/__init__.py +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/mysql/deduplicator.py +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/mysql/mysql.py +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/mysql/s_query.py +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/mysql/unique_.py +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/other/__init__.py +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/other/download_sku_picture.py +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/other/error_handler.py +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/other/otk.py +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/other/pov_city.py +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/other/ua_sj.py +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/pbix/__init__.py +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/pbix/pbix_refresh.py +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/pbix/refresh_all.py +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/redis/__init__.py +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/redis/getredis.py +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq/spider/__init__.py +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq.egg-info/SOURCES.txt +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq.egg-info/dependency_links.txt +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/mdbq.egg-info/top_level.txt +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/setup.cfg +0 -0
- {mdbq-4.0.52 → mdbq-4.0.54}/setup.py +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
VERSION = '4.0.54'
|
@@ -211,7 +211,7 @@ def upload_data_decorator(**upload_kwargs):
|
|
211
211
|
return decorator
|
212
212
|
|
213
213
|
|
214
|
-
class
|
214
|
+
class ShopDataQuery:
|
215
215
|
"""
|
216
216
|
从数据库中下载数据
|
217
217
|
"""
|
@@ -247,7 +247,7 @@ class MysqlDatasQuery:
|
|
247
247
|
df = df_shop_gmv.merge(df_real_sales, on=['日期', '店铺名称'], how='outer') # 平台数据合并销售数据
|
248
248
|
df = df.merge(df_tg_data, on=['日期', '店铺名称'], how='outer') # 合并推广数据
|
249
249
|
df.fillna(0, inplace=True)
|
250
|
-
set_typ = SET_TYP_DICT
|
250
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
251
251
|
return df, {
|
252
252
|
'db_name': db_name,
|
253
253
|
'table_name': table_name,
|
@@ -265,6 +265,7 @@ class MysqlDatasQuery:
|
|
265
265
|
}
|
266
266
|
|
267
267
|
def _get_tg_data(self, db_name='聚合数据', table_name='多店推广场景_按日聚合', shop_list:dict=None):
|
268
|
+
"""获取推广数据"""
|
268
269
|
start_date, end_date = self.months_data(num=self.months)
|
269
270
|
projection = ['日期', '店铺名称', '营销场景', '花费']
|
270
271
|
df = self.download_manager.data_to_df(
|
@@ -377,6 +378,15 @@ class MysqlDatasQuery:
|
|
377
378
|
return df
|
378
379
|
|
379
380
|
|
381
|
+
class MysqlDatasQuery:
|
382
|
+
"""
|
383
|
+
从数据库中下载数据
|
384
|
+
"""
|
385
|
+
def __init__(self, download_manager):
|
386
|
+
self.months = 0 # 下载几个月数据, 0 表示当月, 1 是上月 1 号至今
|
387
|
+
self.download_manager = download_manager
|
388
|
+
self.pf_datas = []
|
389
|
+
|
380
390
|
# @error_handler.log_on_exception(logger=logger)
|
381
391
|
def tg_wxt(self, db_name='聚合数据', table_name='天猫_主体报表', is_maximize=True):
|
382
392
|
start_date, end_date = self.months_data(num=self.months)
|
@@ -451,7 +461,7 @@ class MysqlDatasQuery:
|
|
451
461
|
}
|
452
462
|
)
|
453
463
|
df.insert(loc=1, column='推广渠道', value='万相台无界版')
|
454
|
-
set_typ = SET_TYP_DICT
|
464
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
455
465
|
# 制作其他聚合表
|
456
466
|
self.pf_datas.append(
|
457
467
|
{
|
@@ -599,7 +609,7 @@ class MysqlDatasQuery:
|
|
599
609
|
}
|
600
610
|
)
|
601
611
|
df.insert(loc=1, column='推广渠道', value='万相台无界版') # df中插入新列
|
602
|
-
set_typ = SET_TYP_DICT
|
612
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
603
613
|
return df, {
|
604
614
|
'db_name': db_name,
|
605
615
|
'table_name': table_name,
|
@@ -690,7 +700,7 @@ class MysqlDatasQuery:
|
|
690
700
|
}
|
691
701
|
)
|
692
702
|
df.insert(loc=1, column='推广渠道', value='万相台无界版') # df中插入新列
|
693
|
-
set_typ = SET_TYP_DICT
|
703
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
694
704
|
return df, {
|
695
705
|
'db_name': db_name,
|
696
706
|
'table_name': table_name,
|
@@ -781,7 +791,7 @@ class MysqlDatasQuery:
|
|
781
791
|
}
|
782
792
|
)
|
783
793
|
df.insert(loc=1, column='推广渠道', value='万相台无界版') # df中插入新列
|
784
|
-
set_typ = SET_TYP_DICT
|
794
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
785
795
|
return df, {
|
786
796
|
'db_name': db_name,
|
787
797
|
'table_name': table_name,
|
@@ -841,7 +851,7 @@ class MysqlDatasQuery:
|
|
841
851
|
else '300+' if x >= 300
|
842
852
|
else '300以下'
|
843
853
|
)
|
844
|
-
set_typ = SET_TYP_DICT
|
854
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
845
855
|
return df, {
|
846
856
|
'db_name': db_name,
|
847
857
|
'table_name': table_name,
|
@@ -1030,7 +1040,7 @@ class MysqlDatasQuery:
|
|
1030
1040
|
else x['人群分类'], axis=1
|
1031
1041
|
)
|
1032
1042
|
df['人群分类'] = df['人群分类'].apply(lambda x: str(x).upper() if x else x)
|
1033
|
-
set_typ = SET_TYP_DICT
|
1043
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
1034
1044
|
df.fillna(0, inplace=True)
|
1035
1045
|
return df, {
|
1036
1046
|
'db_name': db_name,
|
@@ -1146,7 +1156,7 @@ class MysqlDatasQuery:
|
|
1146
1156
|
)
|
1147
1157
|
else:
|
1148
1158
|
df['词分类'] = df['词名字_词包名字'].apply(lambda x: self.ret_keyword(keyword=str(x), as_file=False))
|
1149
|
-
set_typ = SET_TYP_DICT
|
1159
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
1150
1160
|
return df, {
|
1151
1161
|
'db_name': db_name,
|
1152
1162
|
'table_name': table_name,
|
@@ -1295,7 +1305,7 @@ class MysqlDatasQuery:
|
|
1295
1305
|
'数据主体': df[['日期', '店铺名称', '推广渠道', '营销场景', '花费', '展现量', '观看次数', '加购量', '成交笔数', '成交金额', '直接成交笔数', '直接成交金额']]
|
1296
1306
|
},
|
1297
1307
|
) # 制作其他聚合表
|
1298
|
-
set_typ = SET_TYP_DICT
|
1308
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
1299
1309
|
return df, {
|
1300
1310
|
'db_name': db_name,
|
1301
1311
|
'table_name': table_name,
|
@@ -1389,7 +1399,7 @@ class MysqlDatasQuery:
|
|
1389
1399
|
'数据主体': df[['日期', '店铺名称', '推广渠道', '营销场景', '花费', '展现量', '点击量', '加购量', '成交笔数', '成交金额']]
|
1390
1400
|
},
|
1391
1401
|
) # 制作其他聚合表
|
1392
|
-
set_typ = SET_TYP_DICT
|
1402
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
1393
1403
|
logger.info('更新', {'主机': f'{host}:{port}', '库': db_name, '表': table_name})
|
1394
1404
|
return df, {
|
1395
1405
|
'db_name': db_name,
|
@@ -1430,7 +1440,7 @@ class MysqlDatasQuery:
|
|
1430
1440
|
idx = df.groupby(['日期', '商品id'])['更新时间'].idxmax()
|
1431
1441
|
df = df.loc[idx]
|
1432
1442
|
df.rename(columns={'商品id': '宝贝id'}, inplace=True)
|
1433
|
-
set_typ = SET_TYP_DICT
|
1443
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
1434
1444
|
logger.info('更新', {'主机': f'{host}:{port}', '库': db_name, '表': table_name})
|
1435
1445
|
return df, {
|
1436
1446
|
'db_name': db_name,
|
@@ -1472,7 +1482,7 @@ class MysqlDatasQuery:
|
|
1472
1482
|
idx = df.groupby(['日期', 'sku_id'])['更新时间'].idxmax()
|
1473
1483
|
df = df.loc[idx]
|
1474
1484
|
df.rename(columns={'白底图': '商品图片'}, inplace=True)
|
1475
|
-
set_typ = SET_TYP_DICT
|
1485
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
1476
1486
|
return df, {
|
1477
1487
|
'db_name': db_name,
|
1478
1488
|
'table_name': table_name,
|
@@ -1523,7 +1533,7 @@ class MysqlDatasQuery:
|
|
1523
1533
|
return item['上市年份']
|
1524
1534
|
|
1525
1535
|
df['上市年份'] = df['商品id'].apply(lambda x: check_year(x))
|
1526
|
-
set_typ = SET_TYP_DICT
|
1536
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
1527
1537
|
return df, {
|
1528
1538
|
'db_name': db_name,
|
1529
1539
|
'table_name': table_name,
|
@@ -1603,7 +1613,7 @@ class MysqlDatasQuery:
|
|
1603
1613
|
df['上市季节'] = df['上市年月'].apply(lambda x: check_jijie(x))
|
1604
1614
|
p = df.pop('上市季节')
|
1605
1615
|
df.insert(loc=9, column='上市季节', value=p)
|
1606
|
-
set_typ = SET_TYP_DICT
|
1616
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
1607
1617
|
return df, {
|
1608
1618
|
'db_name': db_name,
|
1609
1619
|
'table_name': table_name,
|
@@ -1690,9 +1700,10 @@ class MysqlDatasQuery:
|
|
1690
1700
|
df = pd.merge(df, df_visitor1, how='left', left_on='一级来源', right_on='一级来源')
|
1691
1701
|
df = pd.merge(df, df_visitor2, how='left', left_on='二级来源', right_on='二级来源')
|
1692
1702
|
df = pd.merge(df, df_visitor3, how='left', left_on='三级来源', right_on='三级来源')
|
1703
|
+
|
1693
1704
|
for col in ['一级来源索引', '二级来源索引', '三级来源索引']:
|
1694
1705
|
df[col] = df[col].apply(lambda x: 1000 if str(x) == 'nan' else x)
|
1695
|
-
set_typ = SET_TYP_DICT
|
1706
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
1696
1707
|
return df, {
|
1697
1708
|
'db_name': db_name,
|
1698
1709
|
'table_name': table_name,
|
@@ -1721,7 +1732,7 @@ class MysqlDatasQuery:
|
|
1721
1732
|
df = pd.DataFrame(data=data_values)
|
1722
1733
|
df.sort_values(by=['款号', '日期'], ascending=[False, True], ignore_index=True, inplace=True)
|
1723
1734
|
df.drop_duplicates(subset=['款号'], keep='last', inplace=True, ignore_index=True)
|
1724
|
-
set_typ = SET_TYP_DICT
|
1735
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
1725
1736
|
return df, {
|
1726
1737
|
'db_name': db_name,
|
1727
1738
|
'table_name': table_name,
|
@@ -1813,7 +1824,7 @@ class MysqlDatasQuery:
|
|
1813
1824
|
cols = list(df.columns)
|
1814
1825
|
cols.insert(3, cols.pop(cols.index('spu_id')))
|
1815
1826
|
df = df[cols]
|
1816
|
-
set_typ = SET_TYP_DICT
|
1827
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
1817
1828
|
return df, {
|
1818
1829
|
'db_name': db_name,
|
1819
1830
|
'table_name': table_name,
|
@@ -1868,7 +1879,7 @@ class MysqlDatasQuery:
|
|
1868
1879
|
}
|
1869
1880
|
)
|
1870
1881
|
df = df[df['花费'] > 0]
|
1871
|
-
set_typ = SET_TYP_DICT
|
1882
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
1872
1883
|
return df, {
|
1873
1884
|
'db_name': db_name,
|
1874
1885
|
'table_name': table_name,
|
@@ -1944,7 +1955,7 @@ class MysqlDatasQuery:
|
|
1944
1955
|
df['k_是否品牌词'] = df['k_是否品牌词'].apply(lambda x: '品牌词' if x else '-')
|
1945
1956
|
df['s_是否品牌词'] = df['搜索词'].str.contains('万里马|wanlima', regex=True)
|
1946
1957
|
df['s_是否品牌词'] = df['s_是否品牌词'].apply(lambda x: '品牌词' if x else '-')
|
1947
|
-
set_typ = SET_TYP_DICT
|
1958
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
1948
1959
|
return df, {
|
1949
1960
|
'db_name': db_name,
|
1950
1961
|
'table_name': table_name,
|
@@ -1994,7 +2005,7 @@ class MysqlDatasQuery:
|
|
1994
2005
|
idx = df.groupby(['日期', '店铺名称', '商品id', '货号', '访客数', '成交客户数', '加购商品件数', '加购人数'])['更新时间'].idxmax()
|
1995
2006
|
df = df.loc[idx]
|
1996
2007
|
df = df[['日期', '店铺名称', '商品id', '货号', '访客数', '成交客户数', '加购商品件数', '加购人数', '成交单量', '成交金额']]
|
1997
|
-
set_typ = SET_TYP_DICT
|
2008
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
1998
2009
|
return df, {
|
1999
2010
|
'db_name': db_name,
|
2000
2011
|
'table_name': table_name,
|
@@ -2044,7 +2055,7 @@ class MysqlDatasQuery:
|
|
2044
2055
|
idx = df.groupby(['日期', '店铺名称', '商品id', '货号', '访客数', '成交客户数', '加购商品件数', '加购人数'])['更新时间'].idxmax()
|
2045
2056
|
df = df.loc[idx]
|
2046
2057
|
df = df[['日期', '店铺名称', '商品id', '货号', '访客数', '成交客户数', '加购商品件数', '加购人数', '成交单量', '成交金额']]
|
2047
|
-
set_typ = SET_TYP_DICT
|
2058
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
2048
2059
|
return df, {
|
2049
2060
|
'db_name': db_name,
|
2050
2061
|
'table_name': table_name,
|
@@ -2104,7 +2115,7 @@ class MysqlDatasQuery:
|
|
2104
2115
|
idx = df.groupby(['日期', '店铺名称', '词类型', '搜索词'])['更新时间'].idxmax()
|
2105
2116
|
df = df.loc[idx]
|
2106
2117
|
df = df[['日期', '店铺名称', '词类型', '搜索词', '访客数', '加购人数', '支付金额', '支付转化率', '支付买家数', '客单价', 'uv价值']]
|
2107
|
-
set_typ = SET_TYP_DICT
|
2118
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
2108
2119
|
return df, {
|
2109
2120
|
'db_name': db_name,
|
2110
2121
|
'table_name': table_name,
|
@@ -2120,6 +2131,39 @@ class MysqlDatasQuery:
|
|
2120
2131
|
'transaction_mode': 'batch', # 事务模式
|
2121
2132
|
'unique_keys': [['日期', '店铺名称', '词类型', '搜索词']], # 唯一约束列表
|
2122
2133
|
}
|
2134
|
+
|
2135
|
+
def pdd_tg(self, db_name='聚合数据', table_name='拼多多_商品推广'):
|
2136
|
+
"""拼多多商品推广数据"""
|
2137
|
+
start_date, end_date = self.months_data(num=self.months)
|
2138
|
+
projection = ['日期', '店铺名称', '营销场景', '商品id', '总花费']
|
2139
|
+
df = self.download_manager.data_to_df(
|
2140
|
+
db_name='爱库存2',
|
2141
|
+
table_name='拼多多_商品推广',
|
2142
|
+
start_date=start_date,
|
2143
|
+
end_date=end_date,
|
2144
|
+
projection=projection,
|
2145
|
+
)
|
2146
|
+
if len(df) == 0:
|
2147
|
+
return None, None
|
2148
|
+
df = df.groupby(['日期', '店铺名称', '营销场景'], as_index=False).agg({'总花费': 'sum'}).rename(columns={'总花费': '花费'})
|
2149
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
2150
|
+
return df, {
|
2151
|
+
'db_name': db_name,
|
2152
|
+
'table_name': table_name,
|
2153
|
+
'set_typ': set_typ,
|
2154
|
+
'primary_keys': [], # 创建唯一主键
|
2155
|
+
'check_duplicate': False, # 检查重复数据
|
2156
|
+
'duplicate_columns': [], # 指定排重的组合键
|
2157
|
+
'update_on_duplicate': True, # 更新旧数据
|
2158
|
+
'allow_null': False, # 允许插入空值
|
2159
|
+
'partition_by': None, # 分表方式
|
2160
|
+
'partition_date_column': '日期', # 用于分表的日期列名,默认为'日期'
|
2161
|
+
'indexes': [], # 普通索引列
|
2162
|
+
'transaction_mode': 'batch', # 事务模式
|
2163
|
+
'unique_keys': [['日期', '店铺名称', '营销场景']], # 唯一约束列表
|
2164
|
+
}
|
2165
|
+
|
2166
|
+
|
2123
2167
|
|
2124
2168
|
@error_handler.log_on_exception(logger=logger)
|
2125
2169
|
@upload_data_decorator()
|
@@ -2133,7 +2177,7 @@ class MysqlDatasQuery:
|
|
2133
2177
|
projection={},
|
2134
2178
|
)
|
2135
2179
|
df.drop_duplicates(subset=['场次id'], keep='first', inplace=True, ignore_index=True)
|
2136
|
-
set_typ = SET_TYP_DICT
|
2180
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
2137
2181
|
ordered_columns = [
|
2138
2182
|
'日期',
|
2139
2183
|
'店铺名称',
|
@@ -2201,6 +2245,7 @@ class MysqlDatasQuery:
|
|
2201
2245
|
df_jd = pd.DataFrame() # 京东推广
|
2202
2246
|
df_jd_qzyx = pd.DataFrame() # 京东全站推广
|
2203
2247
|
df_jd_ziying = pd.DataFrame() # 京东推广
|
2248
|
+
df_pdd = pd.DataFrame() # 拼多多推广
|
2204
2249
|
start_date, end_date = self.months_data(num=self.months)
|
2205
2250
|
projection = {
|
2206
2251
|
'日期': 1,
|
@@ -2565,7 +2610,14 @@ class MysqlDatasQuery:
|
|
2565
2610
|
df_jd_ziying.rename(columns={'产品线': '营销场景', '展现数': '展现量', '点击数': '点击量'}, inplace=True)
|
2566
2611
|
df_jd_ziying = df_jd_ziying[df_jd_ziying['花费'] > 0]
|
2567
2612
|
|
2568
|
-
|
2613
|
+
# 拼多多推广
|
2614
|
+
df_pdd, _ = self.pdd_tg(db_name='聚合数据', table_name='拼多多_商品推广')
|
2615
|
+
df_pdd['店铺名称'] = df_pdd['店铺名称'].map({
|
2616
|
+
'万里马箱包官方旗舰店': '拼多多_丹宁',
|
2617
|
+
'万里马箱包皮具官方旗舰店': '拼多多_togo',
|
2618
|
+
}).fillna('-')
|
2619
|
+
|
2620
|
+
_datas = [item for item in [df_tm, df_tb, df_tb_qzt, df_al, df_sj, df_tm_pxb, df_tm_living, df_jd, df_jd_qzyx, df_jd_ziying, df_pdd] if len(item) > 0] # 阻止空的 dataframe
|
2569
2621
|
df = pd.concat(_datas, axis=0, ignore_index=True)
|
2570
2622
|
# 超级直播全站推广不包含在营销场景报表中,所以单独添加 2025-03-05
|
2571
2623
|
projection = {
|
@@ -2618,7 +2670,7 @@ class MysqlDatasQuery:
|
|
2618
2670
|
}
|
2619
2671
|
)
|
2620
2672
|
df.sort_values(['日期', '店铺名称', '花费'], ascending=[False, False, False], ignore_index=True, inplace=True)
|
2621
|
-
set_typ = SET_TYP_DICT
|
2673
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
2622
2674
|
return df, {
|
2623
2675
|
'db_name': db_name,
|
2624
2676
|
'table_name': table_name,
|
@@ -2694,7 +2746,7 @@ class MysqlDatasQuery:
|
|
2694
2746
|
df = df[new_columns]
|
2695
2747
|
df['更新时间'] = df.pop('更新时间')
|
2696
2748
|
df = df.astype({'日期': 'datetime64[ns]'}, errors='ignore')
|
2697
|
-
set_typ = SET_TYP_DICT
|
2749
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
2698
2750
|
return df, {
|
2699
2751
|
'db_name': db_name,
|
2700
2752
|
'table_name': table_name,
|
@@ -2723,7 +2775,7 @@ class MysqlDatasQuery:
|
|
2723
2775
|
projection=projection,
|
2724
2776
|
)
|
2725
2777
|
df.drop_duplicates(subset=['日期', '人群类型', '店铺名称', '人群规模', '广告投入金额'], keep='last', inplace=True, ignore_index=True)
|
2726
|
-
set_typ = SET_TYP_DICT
|
2778
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
2727
2779
|
return df, {
|
2728
2780
|
'db_name': db_name,
|
2729
2781
|
'table_name': table_name,
|
@@ -2762,7 +2814,7 @@ class MysqlDatasQuery:
|
|
2762
2814
|
df.rename(columns={'起始日期': '日期'}, inplace=True)
|
2763
2815
|
|
2764
2816
|
# df.drop_duplicates(subset=['日期', '店铺名称', '场景id', '父渠道id'], keep='last', inplace=True, ignore_index=True)
|
2765
|
-
set_typ = SET_TYP_DICT
|
2817
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
2766
2818
|
return df, {
|
2767
2819
|
'db_name': db_name,
|
2768
2820
|
'table_name': table_name,
|
@@ -2822,7 +2874,7 @@ class MysqlDatasQuery:
|
|
2822
2874
|
df['用户年龄'] = df['用户年龄'].apply(lambda x: '~'.join(re.findall(r'^(\d+).*-(\d+)岁$', str(x))[0]) if '岁' in str(x) else x)
|
2823
2875
|
df['消费能力等级'] = df['消费能力等级'].apply(lambda x: f'L{''.join(re.findall(r'(\d)', str(x)))}' if '购买力' in str(x) else x)
|
2824
2876
|
df.rename(columns={'消耗_元': '消耗'}, inplace=True)
|
2825
|
-
set_typ = SET_TYP_DICT
|
2877
|
+
set_typ = SET_TYP_DICT.get(f'{db_name}_{table_name}', {})
|
2826
2878
|
return df, {
|
2827
2879
|
'db_name': db_name,
|
2828
2880
|
'table_name': table_name,
|
@@ -3314,50 +3366,50 @@ def date_table():
|
|
3314
3366
|
|
3315
3367
|
|
3316
3368
|
def query1(months=1, download_manager=None):
|
3317
|
-
|
3318
|
-
|
3369
|
+
msdq = MysqlDatasQuery(download_manager=download_manager) # 实例化数据处理类
|
3370
|
+
msdq.months = months # 设置数据周期, 1 表示近 2 个月
|
3319
3371
|
# 依赖表 -- >>
|
3320
|
-
|
3321
|
-
|
3322
|
-
|
3372
|
+
msdq.tg_wxt(db_name='聚合数据', table_name='天猫_主体报表')
|
3373
|
+
msdq.tg_cjzb(db_name='聚合数据', table_name='天猫_超级直播')
|
3374
|
+
msdq.pxb_zh(db_name='聚合数据', table_name='天猫_品销宝账户报表')
|
3323
3375
|
# 依赖表 << --
|
3324
3376
|
|
3325
|
-
|
3326
|
-
|
3327
|
-
|
3328
|
-
|
3329
|
-
|
3330
|
-
|
3377
|
+
msdq.syj(db_name='聚合数据', table_name='生意经_宝贝指标')
|
3378
|
+
msdq.idbm(db_name='聚合数据', table_name='商品id编码表')
|
3379
|
+
msdq.sp_picture(db_name='聚合数据', table_name='商品id图片对照表')
|
3380
|
+
msdq.sp_cost(db_name='聚合数据', table_name='商品成本')
|
3381
|
+
msdq.jdjzt(db_name='聚合数据', table_name='京东_京准通')
|
3382
|
+
msdq.sku_sales(db_name='聚合数据', table_name='京东_sku_商品明细')
|
3331
3383
|
|
3332
|
-
|
3333
|
-
|
3334
|
-
|
3335
|
-
|
3336
|
-
|
3337
|
-
|
3338
|
-
|
3339
|
-
|
3384
|
+
msdq._ald_wxt(db_name='聚合数据', table_name='奥莱店_主体报表')
|
3385
|
+
msdq._sj_wxt(db_name='聚合数据', table_name='圣积天猫店_主体报表')
|
3386
|
+
msdq._tb_wxt(db_name='聚合数据', table_name='淘宝_主体报表')
|
3387
|
+
msdq.jdqzyx(db_name='聚合数据', table_name='京东_京准通_全站营销')
|
3388
|
+
msdq.spu_sales(db_name='聚合数据', table_name='京东_spu_商品明细')
|
3389
|
+
msdq.zb_ccfx(db_name='聚合数据', table_name='生意参谋_直播场次分析')
|
3390
|
+
msdq.tg_by_day(db_name='聚合数据', table_name='多店推广场景_按日聚合')
|
3391
|
+
msdq.performance_concat(bb_tg=False, db_name='聚合数据', table_name='天猫_推广汇总') # _推广商品销售
|
3340
3392
|
|
3341
3393
|
|
3342
3394
|
def query2(months=1, download_manager=None):
|
3343
|
-
|
3344
|
-
|
3345
|
-
|
3346
|
-
|
3347
|
-
|
3348
|
-
|
3349
|
-
|
3395
|
+
msdq = MysqlDatasQuery(download_manager=download_manager) # 实例化数据处理类
|
3396
|
+
msdq.months = months # 设置数据周期, 1 表示近 2 个月
|
3397
|
+
msdq.dplyd(db_name='聚合数据', table_name='店铺流量来源构成')
|
3398
|
+
msdq.tg_rqbb(db_name='聚合数据', table_name='天猫_人群报表')
|
3399
|
+
msdq.tg_gjc(db_name='聚合数据', table_name='天猫_关键词报表')
|
3400
|
+
msdq.jd_gjc(db_name='聚合数据', table_name='京东_关键词报表')
|
3401
|
+
msdq.se_search(db_name='聚合数据', table_name='天猫店铺来源_手淘搜索')
|
3350
3402
|
# sdq.aikucun_bd_spu(db_name='聚合数据', table_name='爱库存_商品spu榜单')
|
3351
|
-
|
3352
|
-
|
3353
|
-
|
3403
|
+
msdq.dmp_crowd(db_name='聚合数据', table_name='达摩盘_人群报表')
|
3404
|
+
msdq.deeplink(db_name='聚合数据', table_name='达摩盘_deeplink人群洞察')
|
3405
|
+
msdq.global_insights(db_name='聚合数据', table_name='全域洞察')
|
3354
3406
|
|
3355
3407
|
|
3356
3408
|
def query3(months=1, download_manager=None):
|
3357
|
-
|
3358
|
-
|
3359
|
-
|
3360
|
-
|
3409
|
+
msdq = MysqlDatasQuery(download_manager=download_manager) # 实例化数据处理类
|
3410
|
+
msdq.months = months # 设置数据周期, 1 表示近 2 个月
|
3411
|
+
msdq.spph(db_name='聚合数据', table_name='天猫_商品排行')
|
3412
|
+
msdq.item_up(db_name='聚合数据', table_name='淘宝店铺货品')
|
3361
3413
|
|
3362
3414
|
|
3363
3415
|
def main(months=3):
|
@@ -3386,13 +3438,18 @@ if __name__ == '__main__':
|
|
3386
3438
|
# main(months=3)
|
3387
3439
|
pass
|
3388
3440
|
|
3389
|
-
|
3390
|
-
username
|
3391
|
-
password
|
3392
|
-
host
|
3393
|
-
port
|
3394
|
-
pool_size
|
3395
|
-
|
3396
|
-
|
3397
|
-
|
3398
|
-
|
3441
|
+
db_config = {
|
3442
|
+
'username': username,
|
3443
|
+
'password': password,
|
3444
|
+
'host': host,
|
3445
|
+
'port': int(port),
|
3446
|
+
'pool_size': 20,
|
3447
|
+
'mincached': 5,
|
3448
|
+
'maxcached': 10,
|
3449
|
+
}
|
3450
|
+
with s_query.QueryDatas(**db_config) as download_manager:
|
3451
|
+
# shdq = ShopDataQuery(download_manager=download_manager)
|
3452
|
+
# shdq.months = 1
|
3453
|
+
# shdq.shops_concat(db_name='聚合数据', table_name='多店聚合_日报')
|
3454
|
+
|
3455
|
+
query1(download_manager=download_manager, months=1)
|
@@ -38,7 +38,7 @@ SET_TYP_DICT = {
|
|
38
38
|
'直接成交笔数': 'int',
|
39
39
|
'直接成交金额': 'decimal(12,2)',
|
40
40
|
},
|
41
|
-
'聚合数据_
|
41
|
+
'聚合数据_奥莱店_主体报表': {
|
42
42
|
'日期': 'date',
|
43
43
|
'推广渠道': 'varchar(100)',
|
44
44
|
'店铺名称': 'varchar(255)',
|
@@ -582,6 +582,35 @@ SET_TYP_DICT = {
|
|
582
582
|
'实际消耗': 'decimal(10,2)',
|
583
583
|
'推广成交金额': 'decimal(12,2)',
|
584
584
|
},
|
585
|
+
'聚合数据_店铺流量来源构成': {
|
586
|
+
'日期': 'DATE',
|
587
|
+
'店铺名称': 'varchar(255)',
|
588
|
+
'类别': 'varchar(100)',
|
589
|
+
'来源构成': 'varchar(100)',
|
590
|
+
'一级来源': 'varchar(100)',
|
591
|
+
'二级来源': 'varchar(100)',
|
592
|
+
'三级来源': 'varchar(100)',
|
593
|
+
'访客数': 'int',
|
594
|
+
'支付金额': 'decimal(12,2)',
|
595
|
+
'支付买家数': 'smallint',
|
596
|
+
'支付转化率': 'decimal(10,4)',
|
597
|
+
'加购人数': 'smallint',
|
598
|
+
'加购件数': 'smallint',
|
599
|
+
'下单买家数': 'smallint',
|
600
|
+
'关注店铺人数': 'smallint',
|
601
|
+
'一级来源索引': 'smallint',
|
602
|
+
'二级来源索引': 'smallint',
|
603
|
+
'三级来源索引': 'smallint',
|
604
|
+
'更新时间': 'timestamp',
|
605
|
+
},
|
606
|
+
'爱库存2_拼多多_商品推广': {
|
607
|
+
'日期': 'date',
|
608
|
+
'店铺名称': 'varchar(255)',
|
609
|
+
'营销场景': 'varchar(128)',
|
610
|
+
'商品id': 'bigint',
|
611
|
+
'商品名称': 'varchar(255)',
|
612
|
+
'实际消耗': 'decimal(10,2)',
|
613
|
+
},
|
585
614
|
}
|
586
615
|
|
587
616
|
|
@@ -1071,6 +1071,10 @@ class MySQLUploader:
|
|
1071
1071
|
# 统一处理原始数据中列名的特殊字符
|
1072
1072
|
data = self.normalize_column_names(data)
|
1073
1073
|
|
1074
|
+
if not set_typ:
|
1075
|
+
logger.warning('set_typ为空, 将自动推断数据类型, 可能存在数据类型识别错误', {
|
1076
|
+
'func': sys._getframe().f_code.co_name,
|
1077
|
+
})
|
1074
1078
|
# set_typ的键清洗
|
1075
1079
|
if not set_typ:
|
1076
1080
|
set_typ = {}
|
mdbq-4.0.52/mdbq/__version__.py
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
VERSION = '4.0.52'
|
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
|