mdbq 2.9.9__tar.gz → 3.0.1__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-2.9.9 → mdbq-3.0.1}/PKG-INFO +1 -1
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/aggregation/query_data.py +80 -19
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/mysql/mysql.py +0 -6
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq.egg-info/PKG-INFO +1 -1
- {mdbq-2.9.9 → mdbq-3.0.1}/setup.py +1 -1
- {mdbq-2.9.9 → mdbq-3.0.1}/README.txt +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/__init__.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/__version__.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/aggregation/__init__.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/aggregation/aggregation.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/aggregation/df_types.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/aggregation/mysql_types.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/aggregation/optimize_data.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/aggregation/query_data_bak.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/bdup/__init__.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/bdup/bdup.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/clean/__init__.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/clean/clean_upload.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/clean/data_clean.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/company/__init__.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/company/copysh.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/config/__init__.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/config/get_myconf.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/config/myconfig.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/config/products.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/config/set_support.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/config/update_conf.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/dataframe/__init__.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/dataframe/converter.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/log/__init__.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/log/mylogger.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/mongo/__init__.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/mongo/mongo.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/mysql/__init__.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/mysql/recheck_mysql.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/mysql/s_query.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/mysql/year_month_day.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/other/__init__.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/other/porxy.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/other/pov_city.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/other/sku_picture.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/other/ua_sj.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/pbix/__init__.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/pbix/pbix_refresh.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/pbix/refresh_all.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/pbix/refresh_all_old.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/req_post/__init__.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/req_post/req_tb.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/spider/__init__.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq/spider/aikucun.py +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq.egg-info/SOURCES.txt +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq.egg-info/dependency_links.txt +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/mdbq.egg-info/top_level.txt +0 -0
- {mdbq-2.9.9 → mdbq-3.0.1}/setup.cfg +0 -0
@@ -1027,8 +1027,8 @@ class MysqlDatasQuery:
|
|
1027
1027
|
) # 制作其他聚合表
|
1028
1028
|
if not self.update_service:
|
1029
1029
|
return
|
1030
|
-
min_date = df['日期'].min()
|
1031
|
-
max_date = df['日期'].max()
|
1030
|
+
min_date = pd.to_datetime(df['日期'].min()).strftime('%Y-%m-%d')
|
1031
|
+
max_date = pd.to_datetime(df['日期'].max()).strftime('%Y-%m-%d')
|
1032
1032
|
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
1033
1033
|
print(f'{now} 正在更新: mysql ({host}:{port}) {db_name}/{table_name} -> {min_date}~{max_date}')
|
1034
1034
|
m_engine.df_to_mysql(
|
@@ -1975,6 +1975,58 @@ class MysqlDatasQuery:
|
|
1975
1975
|
)
|
1976
1976
|
return True
|
1977
1977
|
|
1978
|
+
def deeplink(self, db_name='聚合数据', table_name='达摩盘_deeplink人群洞察'):
|
1979
|
+
start_date, end_date = self.months_data(num=self.months)
|
1980
|
+
projection = {}
|
1981
|
+
df = self.download.data_to_df(
|
1982
|
+
db_name='达摩盘3',
|
1983
|
+
table_name='店铺deeplink人群洞察',
|
1984
|
+
start_date=start_date,
|
1985
|
+
end_date=end_date,
|
1986
|
+
projection=projection,
|
1987
|
+
)
|
1988
|
+
df.drop_duplicates(subset=['日期', '人群类型', '店铺名称', '人群规模', '广告投入金额'], keep='last', inplace=True, ignore_index=True)
|
1989
|
+
if not self.update_service:
|
1990
|
+
return
|
1991
|
+
set_typ = {
|
1992
|
+
'日期': 'date',
|
1993
|
+
'人群类型': 'varchar(100)',
|
1994
|
+
'店铺名称': 'varchar(100)',
|
1995
|
+
'人群规模': 'int',
|
1996
|
+
'人均成交价值': 'decimal(10, 4)',
|
1997
|
+
'datatype': 'varchar(100)',
|
1998
|
+
'人群总计': 'int',
|
1999
|
+
'广告触达占比': 'decimal(12, 4)',
|
2000
|
+
'广告投入金额': 'decimal(12, 2)',
|
2001
|
+
'touchcharge': 'decimal(12, 2)',
|
2002
|
+
'人群占比': 'decimal(12, 4)',
|
2003
|
+
'长周期roi': 'decimal(12, 4)',
|
2004
|
+
'支付买家数': 'int',
|
2005
|
+
'成交笔数': 'int',
|
2006
|
+
'成交金额': 'decimal(13, 2)',
|
2007
|
+
'触达人数': 'int',
|
2008
|
+
'长周期成交价值': 'decimal(13, 2)',
|
2009
|
+
'达摩盘id': 'int',
|
2010
|
+
}
|
2011
|
+
min_date = df['日期'].min()
|
2012
|
+
max_date = df['日期'].max()
|
2013
|
+
now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
2014
|
+
print(f'{now} 正在更新: mysql ({host}:{port}) {db_name}/{table_name} -> {min_date}~{max_date}')
|
2015
|
+
m_engine.df_to_mysql(
|
2016
|
+
df=df,
|
2017
|
+
db_name=db_name,
|
2018
|
+
table_name=table_name,
|
2019
|
+
icm_update=['日期', '人群类型', '店铺名称', '人群规模', '广告投入金额'], # 增量更新, 在聚合数据中使用,其他不要用
|
2020
|
+
move_insert=True, # 先删除,再插入
|
2021
|
+
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
2022
|
+
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
2023
|
+
count=None,
|
2024
|
+
filename=None, # 用来追踪处理进度
|
2025
|
+
reset_id=False, # 是否重置自增列
|
2026
|
+
set_typ=set_typ,
|
2027
|
+
)
|
2028
|
+
return True
|
2029
|
+
|
1978
2030
|
@try_except
|
1979
2031
|
def dmp_crowd(self, db_name='聚合数据', table_name='达摩盘_人群报表'):
|
1980
2032
|
start_date, end_date = self.months_data(num=self.months)
|
@@ -2393,17 +2445,6 @@ class MysqlDatasQuery:
|
|
2393
2445
|
pic = [item['数据主体'] for item in self.pf_datas if item['集合名称'] == '商品id图片对照表'][0]
|
2394
2446
|
cost = [item['数据主体'] for item in self.pf_datas if item['集合名称'] == '商品成本'][0]
|
2395
2447
|
|
2396
|
-
# pic['商品id'] = pic['商品id'].astype(str)
|
2397
|
-
# # 1. id 编码表合并图片表
|
2398
|
-
# df = pd.merge(idbm, pic, how='left', left_on='宝贝id', right_on='商品id')
|
2399
|
-
# df = df[['宝贝id', '商家编码', '商品图片']]
|
2400
|
-
# # 2. df 合并商品成本表
|
2401
|
-
# df = pd.merge(df, cost, how='left', left_on='商家编码', right_on='款号')
|
2402
|
-
# df = df[['宝贝id', '商家编码', '商品图片', '成本价']]
|
2403
|
-
# # 3. 推广表合并 df
|
2404
|
-
# df = pd.merge(tg, df, how='left', left_on='商品id', right_on='宝贝id')
|
2405
|
-
# df.drop(labels='宝贝id', axis=1, inplace=True)
|
2406
|
-
|
2407
2448
|
# 由于推广表之前根据场景、营销渠道等聚合的,这里不含这些字段所以要进一步聚合
|
2408
2449
|
tg = tg.groupby(
|
2409
2450
|
['日期', '店铺名称', '商品id'],
|
@@ -2414,7 +2455,6 @@ class MysqlDatasQuery:
|
|
2414
2455
|
'直接成交金额': ('直接成交金额', np.sum),
|
2415
2456
|
}
|
2416
2457
|
)
|
2417
|
-
syj.to_csv('/Users/xigua/Downloads/ddd.csv', index=False, header=True, encoding='utf-8_sig')
|
2418
2458
|
# 4. 生意经,推广表聚合
|
2419
2459
|
if bb_tg is True:
|
2420
2460
|
# 生意经合并推广表,完整的数据表,包含全店所有推广、销售数据
|
@@ -2463,6 +2503,7 @@ class MysqlDatasQuery:
|
|
2463
2503
|
df['商品毛利'] = df.apply(lambda x: x['销售额'] - x['商品成本'], axis=1)
|
2464
2504
|
df['毛利率'] = df.apply(lambda x: round((x['销售额'] - x['商品成本']) / x['销售额'], 4) if x['销售额'] > 0 else 0, axis=1)
|
2465
2505
|
df['盈亏'] = df.apply(lambda x: x['商品毛利'] - x['花费'], axis=1)
|
2506
|
+
[df[col].apply(lambda x: '0' if str(x) == '' else x) for col in df.columns.tolist()]
|
2466
2507
|
set_typ = {
|
2467
2508
|
'日期': 'date',
|
2468
2509
|
'店铺名称': 'varchar(100)',
|
@@ -2575,6 +2616,7 @@ class MysqlDatasQuery:
|
|
2575
2616
|
'自然流量曝光量': int,
|
2576
2617
|
}
|
2577
2618
|
)
|
2619
|
+
[df[col].apply(lambda x: '0' if str(x) == '' else x) for col in df.columns.tolist()]
|
2578
2620
|
set_typ = {
|
2579
2621
|
'日期': 'date',
|
2580
2622
|
'店铺名称': 'varchar(100)',
|
@@ -2648,7 +2690,7 @@ class MysqlDatasQuery:
|
|
2648
2690
|
df['毛利率'] = df.apply(
|
2649
2691
|
lambda x: round((x['成交金额'] - x['商品成本']) / x['成交金额'], 4) if x['成交金额'] > 0 else 0, axis=1)
|
2650
2692
|
df['盈亏'] = df.apply(lambda x: x['商品毛利'] - x['花费'], axis=1)
|
2651
|
-
|
2693
|
+
[df[col].apply(lambda x: '0' if str(x) == '' else x) for col in df.columns.tolist()]
|
2652
2694
|
set_typ = {
|
2653
2695
|
'日期': 'date',
|
2654
2696
|
'跟单sku_id': 'bigint',
|
@@ -2717,6 +2759,17 @@ def date_table():
|
|
2717
2759
|
host=host,
|
2718
2760
|
port=port,
|
2719
2761
|
)
|
2762
|
+
set_typ = {
|
2763
|
+
'日期': 'date',
|
2764
|
+
'年': 'varchar(50)',
|
2765
|
+
'月': 'varchar(50)',
|
2766
|
+
'日': 'int',
|
2767
|
+
'年月': 'varchar(50)',
|
2768
|
+
'月日': 'varchar(50)',
|
2769
|
+
'第n周': 'varchar(50)',
|
2770
|
+
'索引': 'int',
|
2771
|
+
'月索引': 'int',
|
2772
|
+
}
|
2720
2773
|
m.df_to_mysql(
|
2721
2774
|
df=df,
|
2722
2775
|
db_name='聚合数据',
|
@@ -2726,7 +2779,7 @@ def date_table():
|
|
2726
2779
|
drop_duplicates=False, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
2727
2780
|
count=None,
|
2728
2781
|
filename=None, # 用来追踪处理进度
|
2729
|
-
set_typ=
|
2782
|
+
set_typ=set_typ,
|
2730
2783
|
)
|
2731
2784
|
|
2732
2785
|
|
@@ -2750,7 +2803,7 @@ def main(days=100, months=3):
|
|
2750
2803
|
)
|
2751
2804
|
|
2752
2805
|
# 3. 数据聚合
|
2753
|
-
query_(months=
|
2806
|
+
query_(months=months)
|
2754
2807
|
time.sleep(60)
|
2755
2808
|
|
2756
2809
|
# 4. 清理聚合数据
|
@@ -2790,6 +2843,7 @@ def query_(months=1, less_dict=[]):
|
|
2790
2843
|
sdq.tg_by_day(db_name='聚合数据', table_name='多店推广场景_按日聚合')
|
2791
2844
|
sdq.aikucun_bd_spu(db_name='聚合数据', table_name='爱库存_商品spu榜单')
|
2792
2845
|
sdq.dmp_crowd(db_name='聚合数据', table_name='达摩盘_人群报表')
|
2846
|
+
sdq.deeplink(db_name='聚合数据', table_name='达摩盘_deeplink人群洞察')
|
2793
2847
|
sdq.performance(bb_tg=True, db_name='聚合数据', table_name='_全店商品销售') # _全店商品销售
|
2794
2848
|
sdq.performance(bb_tg=False, db_name='聚合数据', table_name='_推广商品销售') # _推广商品销售
|
2795
2849
|
sdq.performance_jd(jd_tg=False, db_name='聚合数据', table_name='_京东_推广商品销售') # _推广商品销售
|
@@ -2798,5 +2852,12 @@ def query_(months=1, less_dict=[]):
|
|
2798
2852
|
|
2799
2853
|
if __name__ == '__main__':
|
2800
2854
|
main(days=100, months=3)
|
2801
|
-
|
2802
|
-
|
2855
|
+
# query_(months=13)
|
2856
|
+
|
2857
|
+
# # 4. 清理聚合数据
|
2858
|
+
# optimize_data.op_data(
|
2859
|
+
# db_name_lists=['聚合数据'],
|
2860
|
+
# days=40,
|
2861
|
+
# is_mongo=False,
|
2862
|
+
# is_mysql=True,
|
2863
|
+
# )
|
@@ -6,19 +6,13 @@ import re
|
|
6
6
|
import time
|
7
7
|
from functools import wraps
|
8
8
|
import warnings
|
9
|
-
from unittest.mock import inplace
|
10
|
-
|
11
9
|
import pymysql
|
12
10
|
import numpy as np
|
13
11
|
import pandas as pd
|
14
|
-
from markdown_it.rules_inline.backticks import regex
|
15
12
|
from sqlalchemy import create_engine
|
16
13
|
import os
|
17
14
|
import calendar
|
18
15
|
from mdbq.config import myconfig
|
19
|
-
from mdbq.config import set_support
|
20
|
-
from mdbq.dataframe import converter
|
21
|
-
from mdbq.aggregation import mysql_types
|
22
16
|
|
23
17
|
warnings.filterwarnings('ignore')
|
24
18
|
"""
|
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
|
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
|