mdbq 2.0.6__py3-none-any.whl → 2.0.8__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/aggregation.py +30 -8
- mdbq/aggregation/query_data.py +192 -1
- mdbq/clean/data_clean.py +25 -9
- {mdbq-2.0.6.dist-info → mdbq-2.0.8.dist-info}/METADATA +1 -1
- {mdbq-2.0.6.dist-info → mdbq-2.0.8.dist-info}/RECORD +7 -7
- {mdbq-2.0.6.dist-info → mdbq-2.0.8.dist-info}/WHEEL +0 -0
- {mdbq-2.0.6.dist-info → mdbq-2.0.8.dist-info}/top_level.txt +0 -0
mdbq/aggregation/aggregation.py
CHANGED
@@ -87,9 +87,19 @@ class DatabaseUpdate:
|
|
87
87
|
continue
|
88
88
|
df = pd.DataFrame() # 初始化 df
|
89
89
|
encoding = self.get_encoding(file_path=os.path.join(root, name)) # 用于处理 csv 文件
|
90
|
-
tg_names = [
|
91
|
-
|
92
|
-
|
90
|
+
tg_names = [
|
91
|
+
'账户报表', # 旧版,后来改成 营销场景报表了,C 店还是旧版
|
92
|
+
'营销场景报表',
|
93
|
+
'计划报表',
|
94
|
+
'单元报表',
|
95
|
+
'关键词报表',
|
96
|
+
'人群报表',
|
97
|
+
'主体报表',
|
98
|
+
'其他主体报表',
|
99
|
+
'创意报表',
|
100
|
+
'地域报表',
|
101
|
+
'权益报表',
|
102
|
+
]
|
93
103
|
for tg_name in tg_names:
|
94
104
|
if tg_name in name and '报表汇总' not in name and name.endswith('.csv'): # 排除达摩盘报表: 人群报表汇总
|
95
105
|
pattern = re.findall(r'(.*_)\d{8}_\d{6}', name)
|
@@ -125,10 +135,16 @@ class DatabaseUpdate:
|
|
125
135
|
# df.replace(to_replace=[''], value=0, regex=False, inplace=True)
|
126
136
|
# df.fillna(0, inplace=True)
|
127
137
|
if '省' in df.columns.tolist() and '场景名字' in df.columns.tolist() and '地域报表' in name:
|
128
|
-
|
138
|
+
if shop_name == '广东万里马':
|
139
|
+
db_name = '推广数据_淘宝店'
|
140
|
+
else:
|
141
|
+
db_name = '推广数据2'
|
129
142
|
collection_name = f'完整_{tg_name}'
|
130
143
|
else:
|
131
|
-
|
144
|
+
if shop_name == '广东万里马':
|
145
|
+
db_name = '推广数据_淘宝店'
|
146
|
+
else:
|
147
|
+
db_name = '推广数据2'
|
132
148
|
collection_name = f'{tg_name}'
|
133
149
|
check_remove_file = True
|
134
150
|
if name.endswith('.csv') and '超级直播' in name:
|
@@ -148,6 +164,8 @@ class DatabaseUpdate:
|
|
148
164
|
shop_name = ''
|
149
165
|
# df.replace(to_replace=['\\N'], value=0, regex=False, inplace=True) # 替换掉特殊字符
|
150
166
|
# df.replace(to_replace=[''], value=0, regex=False, inplace=True)
|
167
|
+
if shop_name == '广东万里马':
|
168
|
+
db_name = '推广数据_淘宝店'
|
151
169
|
check_remove_file = True
|
152
170
|
elif name.endswith('.xls') and '短直联投' in name:
|
153
171
|
# 短直联投
|
@@ -1055,13 +1073,17 @@ class DatabaseUpdate:
|
|
1055
1073
|
# return df
|
1056
1074
|
|
1057
1075
|
def other_table(self, service_databases=[{'home_lx': 'mysql'}]):
|
1058
|
-
""" 上传 support 文件夹下的
|
1076
|
+
""" 上传 support 文件夹下的 主推货品 """
|
1059
1077
|
support_file = set_support.SetSupport(dirname='support').dirname
|
1060
|
-
filename = '
|
1078
|
+
filename = '主推货品.xlsx'
|
1061
1079
|
if not os.path.isfile(os.path.join(support_file, filename)):
|
1062
1080
|
return
|
1063
1081
|
# df = pd.read_csv(os.path.join(support_file, filename), encoding='utf-8_sig', header=0, na_filter=False)
|
1064
1082
|
df = pd.read_excel(os.path.join(support_file, filename), header=0)
|
1083
|
+
for col in df.columns.tolist():
|
1084
|
+
if '预算' in col:
|
1085
|
+
df.rename(columns={col: '预算占比'}, inplace=True)
|
1086
|
+
df = df[['商品id', '商家编码', '预算占比']]
|
1065
1087
|
for service_database in service_databases:
|
1066
1088
|
for service_name, database in service_database.items():
|
1067
1089
|
username, password, host, port = get_myconf.select_config_values(
|
@@ -1077,7 +1099,7 @@ class DatabaseUpdate:
|
|
1077
1099
|
m.df_to_mysql(
|
1078
1100
|
df=df,
|
1079
1101
|
db_name='属性设置2',
|
1080
|
-
table_name='
|
1102
|
+
table_name='主推货品',
|
1081
1103
|
move_insert=False, # 先删除,再插入
|
1082
1104
|
df_sql=False, # 值为 True 时使用 df.to_sql 函数上传整个表, 不会排重
|
1083
1105
|
drop_duplicates=True, # 值为 True 时检查重复数据再插入,反之直接上传,会比较慢
|
mdbq/aggregation/query_data.py
CHANGED
@@ -498,6 +498,173 @@ class MysqlDatasQuery:
|
|
498
498
|
)
|
499
499
|
return df
|
500
500
|
|
501
|
+
def tg_by_day(self):
|
502
|
+
"""
|
503
|
+
汇总各个店铺的推广数据,按日汇总
|
504
|
+
"""
|
505
|
+
start_date, end_date = self.months_data(num=self.months)
|
506
|
+
projection = {
|
507
|
+
'日期': 1,
|
508
|
+
'场景名字': 1,
|
509
|
+
'花费': 1,
|
510
|
+
'展现量': 1,
|
511
|
+
'点击量': 1,
|
512
|
+
'总购物车数': 1,
|
513
|
+
'总成交笔数': 1,
|
514
|
+
'总成交金额': 1,
|
515
|
+
}
|
516
|
+
df_tm = self.download.data_to_df(
|
517
|
+
db_name='推广数据2',
|
518
|
+
table_name='营销场景报表',
|
519
|
+
start_date=start_date,
|
520
|
+
end_date=end_date,
|
521
|
+
projection=projection,
|
522
|
+
)
|
523
|
+
df_tm.rename(columns={'场景名字': '营销场景'}, inplace=True)
|
524
|
+
df_tm = df_tm.groupby(
|
525
|
+
['日期', '营销场景', '花费'],
|
526
|
+
as_index=False).agg(
|
527
|
+
**{
|
528
|
+
'展现量': ('展现量', np.max),
|
529
|
+
'点击量': ('点击量', np.max),
|
530
|
+
'加购量': ('总购物车数', np.max),
|
531
|
+
'成交笔数': ('总成交笔数', np.max),
|
532
|
+
'成交金额': ('总成交金额', np.max)
|
533
|
+
}
|
534
|
+
)
|
535
|
+
df_tm.insert(loc=1, column='店铺', value='WLM天猫旗舰店') # df中添加列
|
536
|
+
|
537
|
+
df_tb = self.download.data_to_df(
|
538
|
+
db_name='推广数据_淘宝店',
|
539
|
+
table_name='账户报表',
|
540
|
+
start_date=start_date,
|
541
|
+
end_date=end_date,
|
542
|
+
projection=projection,
|
543
|
+
)
|
544
|
+
df_tb.rename(columns={'场景名字': '营销场景'}, inplace=True)
|
545
|
+
df_tb = df_tb.groupby(
|
546
|
+
['日期', '营销场景', '花费'],
|
547
|
+
as_index=False).agg(
|
548
|
+
**{
|
549
|
+
'展现量': ('展现量', np.max),
|
550
|
+
'点击量': ('点击量', np.max),
|
551
|
+
'加购量': ('总购物车数', np.max),
|
552
|
+
'成交笔数': ('总成交笔数', np.max),
|
553
|
+
'成交金额': ('总成交金额', np.max)
|
554
|
+
}
|
555
|
+
)
|
556
|
+
df_tb.insert(loc=1, column='店铺', value='淘宝c店') # df中添加列
|
557
|
+
|
558
|
+
projection = {
|
559
|
+
'日期': 1,
|
560
|
+
'报表类型': 1,
|
561
|
+
'消耗': 1,
|
562
|
+
'展现量': 1,
|
563
|
+
'点击量': 1,
|
564
|
+
'宝贝加购数': 1,
|
565
|
+
'成交笔数': 1,
|
566
|
+
'成交金额': 1,
|
567
|
+
}
|
568
|
+
df_tm_pxb = self.download.data_to_df(
|
569
|
+
db_name='推广数据2',
|
570
|
+
table_name='品销宝',
|
571
|
+
start_date=start_date,
|
572
|
+
end_date=end_date,
|
573
|
+
projection=projection,
|
574
|
+
)
|
575
|
+
df_tm_pxb = df_tm_pxb[df_tm_pxb['报表类型'] == '账户']
|
576
|
+
df_tm_pxb = df_tm_pxb.groupby(
|
577
|
+
['日期', '报表类型', '消耗'],
|
578
|
+
as_index=False).agg(
|
579
|
+
**{
|
580
|
+
'展现量': ('展现量', np.max),
|
581
|
+
'点击量': ('点击量', np.max),
|
582
|
+
'加购量': ('宝贝加购数', np.max),
|
583
|
+
'成交笔数': ('成交笔数', np.max),
|
584
|
+
'成交金额': ('成交金额', np.max)
|
585
|
+
}
|
586
|
+
)
|
587
|
+
df_tm_pxb.rename(columns={'报表类型': '营销场景', '消耗': '花费'}, inplace=True)
|
588
|
+
df_tm_pxb['营销场景'] = '品销宝'
|
589
|
+
df_tm_pxb.insert(loc=1, column='店铺', value='WLM天猫旗舰店') # df中添加列
|
590
|
+
|
591
|
+
projection = {
|
592
|
+
'日期': 1,
|
593
|
+
'产品线': 1,
|
594
|
+
'触发sku id': 1,
|
595
|
+
'跟单sku id': 1,
|
596
|
+
'花费': 1,
|
597
|
+
'展现数': 1,
|
598
|
+
'点击数': 1,
|
599
|
+
'直接订单行': 1,
|
600
|
+
'直接订单金额': 1,
|
601
|
+
'总订单行': 1,
|
602
|
+
'总订单金额': 1,
|
603
|
+
'直接加购数': 1,
|
604
|
+
'总加购数': 1,
|
605
|
+
'spu id': 1,
|
606
|
+
}
|
607
|
+
df_jd = self.download.data_to_df(
|
608
|
+
db_name='京东数据2',
|
609
|
+
table_name='推广数据_京准通',
|
610
|
+
start_date=start_date,
|
611
|
+
end_date=end_date,
|
612
|
+
projection=projection,
|
613
|
+
)
|
614
|
+
df_jd = df_jd.groupby(['日期', '产品线', '触发sku id', '跟单sku id', 'spu id', '花费', '展现数', '点击数'],
|
615
|
+
as_index=False).agg(
|
616
|
+
**{'直接订单行': ('直接订单行', np.max),
|
617
|
+
'直接订单金额': ('直接订单金额', np.max),
|
618
|
+
'成交笔数': ('总订单行', np.max),
|
619
|
+
'成交金额': ('总订单金额', np.max),
|
620
|
+
'直接加购数': ('直接加购数', np.max),
|
621
|
+
'加购量': ('总加购数', np.max),
|
622
|
+
}
|
623
|
+
)
|
624
|
+
df_jd = df_jd[['日期', '产品线', '花费', '展现数', '点击数', '加购量', '成交笔数', '成交金额']]
|
625
|
+
df_jd.rename(columns={'产品线': '营销场景', '展现数': '展现量', '点击数': '点击量'}, inplace=True)
|
626
|
+
df_jd = df_jd[df_jd['花费'] > 0]
|
627
|
+
df_jd.insert(loc=1, column='店铺', value='京东箱包') # df中添加列
|
628
|
+
|
629
|
+
projection = {
|
630
|
+
'日期': 1,
|
631
|
+
'产品线': 1,
|
632
|
+
'花费': 1,
|
633
|
+
'全站roi': 1,
|
634
|
+
'全站交易额': 1,
|
635
|
+
'全站订单行': 1,
|
636
|
+
'全站订单成本': 1,
|
637
|
+
'全站费比': 1,
|
638
|
+
'核心位置展现量': 1,
|
639
|
+
'核心位置点击量': 1,
|
640
|
+
}
|
641
|
+
df_jd_qzyx = self.download.data_to_df(
|
642
|
+
db_name='京东数据2',
|
643
|
+
table_name='推广数据_全站营销',
|
644
|
+
start_date=start_date,
|
645
|
+
end_date=end_date,
|
646
|
+
projection=projection,
|
647
|
+
)
|
648
|
+
df_jd_qzyx = df_jd_qzyx.groupby(['日期', '产品线', '花费'], as_index=False).agg(
|
649
|
+
**{'全站roi': ('全站roi', np.max),
|
650
|
+
'成交金额': ('全站交易额', np.max),
|
651
|
+
'成交笔数': ('全站订单行', np.max),
|
652
|
+
'全站订单成本': ('全站订单成本', np.max),
|
653
|
+
'全站费比': ('全站费比', np.max),
|
654
|
+
'展现量': ('核心位置展现量', np.max),
|
655
|
+
'点击量': ('核心位置点击量', np.max),
|
656
|
+
}
|
657
|
+
)
|
658
|
+
df_jd_qzyx.rename(columns={'产品线': '营销场景'}, inplace=True)
|
659
|
+
df_jd_qzyx = df_jd_qzyx[['日期', '营销场景', '花费', '展现量', '点击量', '成交笔数', '成交金额']]
|
660
|
+
df_jd_qzyx = df_jd_qzyx[df_jd_qzyx['花费'] > 0]
|
661
|
+
df_jd_qzyx.insert(loc=1, column='店铺', value='京东箱包') # df中添加列
|
662
|
+
|
663
|
+
_datas = [item for item in [df_tm, df_tb, df_tm_pxb, df_jd, df_jd_qzyx] if len(item) > 0] # 阻止空的 dataframe
|
664
|
+
df = pd.concat(_datas, axis=0, ignore_index=True)
|
665
|
+
return df
|
666
|
+
|
667
|
+
|
501
668
|
class GroupBy:
|
502
669
|
"""
|
503
670
|
数据聚合和导出
|
@@ -540,6 +707,8 @@ class GroupBy:
|
|
540
707
|
}
|
541
708
|
)
|
542
709
|
return pd.DataFrame()
|
710
|
+
# elif '多店推广场景_按日聚合' in table_name: # 这个函数传递的是多个 df 组成的列表,暂时放行
|
711
|
+
# pass
|
543
712
|
else:
|
544
713
|
print(f'query_data.groupby函数中 {table_name} 传入的 df 不是 dataframe 结构')
|
545
714
|
return pd.DataFrame()
|
@@ -1063,6 +1232,22 @@ class GroupBy:
|
|
1063
1232
|
elif '直播场次分析' in table_name:
|
1064
1233
|
df.drop_duplicates(subset=['场次id'], keep='first', inplace=True, ignore_index=True)
|
1065
1234
|
return df
|
1235
|
+
elif '多店推广场景_按日聚合' in table_name:
|
1236
|
+
df = df.groupby(
|
1237
|
+
['日期', '店铺', '营销场景'],
|
1238
|
+
as_index=False).agg(
|
1239
|
+
**{
|
1240
|
+
'花费': ('花费', np.sum),
|
1241
|
+
'展现量': ('展现量', np.sum),
|
1242
|
+
'点击量': ('点击量', np.sum),
|
1243
|
+
'加购量': ('加购量', np.sum),
|
1244
|
+
'成交笔数': ('成交笔数', np.sum),
|
1245
|
+
'成交金额': ('成交金额', np.sum)
|
1246
|
+
}
|
1247
|
+
)
|
1248
|
+
df.sort_values(['日期', '店铺', '花费'], ascending=[False, False, False], ignore_index=True, inplace=True)
|
1249
|
+
# df.to_csv('/Users/xigua/Downloads/test.csv', encoding='utf-8_sig', index=False, header=True)
|
1250
|
+
return df
|
1066
1251
|
else:
|
1067
1252
|
print(f'<{table_name}>: Groupby 类尚未配置,数据为空')
|
1068
1253
|
return pd.DataFrame({})
|
@@ -1437,6 +1622,12 @@ def data_aggregation(service_databases=[{}], months=1):
|
|
1437
1622
|
'唯一主键': ['场次id'],
|
1438
1623
|
'数据主体': sdq.zb_ccfx(),
|
1439
1624
|
},
|
1625
|
+
{
|
1626
|
+
'数据库名': '聚合数据',
|
1627
|
+
'集合名': '多店推广场景_按日聚合',
|
1628
|
+
'唯一主键': [],
|
1629
|
+
'数据主体': sdq.tg_by_day(),
|
1630
|
+
},
|
1440
1631
|
]
|
1441
1632
|
for items in data_dict: # 遍历返回结果
|
1442
1633
|
db_name, table_name, unique_key_list, df = items['数据库名'], items['集合名'], items['唯一主键'], items['数据主体']
|
@@ -1535,7 +1726,7 @@ def main():
|
|
1535
1726
|
|
1536
1727
|
|
1537
1728
|
if __name__ == '__main__':
|
1538
|
-
data_aggregation(service_databases=[{'company': 'mysql'}], months=
|
1729
|
+
data_aggregation(service_databases=[{'company': 'mysql'}], months=1) # 正常的聚合所有数据
|
1539
1730
|
# data_aggregation_one(service_databases=[{'company': 'mysql'}], months=1) # 单独聚合某一个数据库,具体库进函数编辑
|
1540
1731
|
# optimize_data.op_data(service_databases=[{'company': 'mysql'}], days=3650) # 立即启动对聚合数据的清理工作
|
1541
1732
|
|
mdbq/clean/data_clean.py
CHANGED
@@ -100,9 +100,19 @@ class DataClean:
|
|
100
100
|
try:
|
101
101
|
encoding = self.get_encoding(file_path=pathlib.Path(root, name))
|
102
102
|
# ----------------- 推广报表 分割线 -----------------
|
103
|
-
tg_names = [
|
104
|
-
|
105
|
-
|
103
|
+
tg_names = [
|
104
|
+
'账户报表', # 旧版,后来改成 营销场景报表了,C 店还是旧版
|
105
|
+
'营销场景报表',
|
106
|
+
'计划报表',
|
107
|
+
'单元报表',
|
108
|
+
'关键词报表',
|
109
|
+
'人群报表',
|
110
|
+
'主体报表',
|
111
|
+
'其他主体报表',
|
112
|
+
'创意报表',
|
113
|
+
'地域报表',
|
114
|
+
'权益报表',
|
115
|
+
]
|
106
116
|
for tg_name in tg_names:
|
107
117
|
if tg_name in name and '汇总' not in name and name.endswith('.csv'): # 人群报表排除达摩盘报表: 人群报表汇总
|
108
118
|
pattern = re.findall(r'(.*_)\d{8}_\d{6}', name)
|
@@ -153,16 +163,22 @@ class DataClean:
|
|
153
163
|
date_max = f'{df["日期"].values.max()}.csv'
|
154
164
|
if '万里马' in name:
|
155
165
|
tm_s_name = pattern[0] + shop_name + date_min + date_max
|
156
|
-
|
166
|
+
if shop_name == '广东万里马':
|
167
|
+
new_root_p = pathlib.Path(self.source_path, '推广报表_淘宝店', tg_name) # 文件夹,未包括文件名
|
168
|
+
else:
|
169
|
+
new_root_p = pathlib.Path(self.source_path, '推广报表', tg_name) # 文件夹,未包括文件名
|
157
170
|
df['日期'] = pd.to_datetime(df['日期'], format='%Y-%m-%d', errors='ignore')
|
158
171
|
if '省' in df.columns.tolist() and '场景名字' in df.columns.tolist() and '完整' in name:
|
159
|
-
|
172
|
+
if shop_name == '广东万里马':
|
173
|
+
new_root_p = pathlib.Path(self.source_path, '推广报表_淘宝店', f'完整_{tg_name}')
|
174
|
+
else:
|
175
|
+
new_root_p = pathlib.Path(self.source_path, '推广报表', f'完整_{tg_name}')
|
160
176
|
tm_s_name = f'完整_{tm_s_name}'
|
161
177
|
self.save_to_csv(df, new_root_p, tm_s_name)
|
162
|
-
if self.set_up_to_mogo:
|
163
|
-
|
164
|
-
if self.set_up_to_mysql:
|
165
|
-
|
178
|
+
# if self.set_up_to_mogo:
|
179
|
+
# d.df_to_mongo(df=df, db_name='天猫数据1', collection_name=f'天猫_推广_{tg_name}')
|
180
|
+
# if self.set_up_to_mysql:
|
181
|
+
# m.df_to_mysql(df=df, db_name='天猫数据1', tabel_name=f'天猫_推广_{tg_name}')
|
166
182
|
os.remove(os.path.join(root, name))
|
167
183
|
else:
|
168
184
|
print(f'{name} 文件名不含"万里马", 不属于爬虫下载,您可以手动进行分类,但不会上传数据库')
|
@@ -1,15 +1,15 @@
|
|
1
1
|
mdbq/__init__.py,sha256=Il5Q9ATdX8yXqVxtP_nYqUhExzxPC_qk_WXQ_4h0exg,16
|
2
2
|
mdbq/__version__.py,sha256=y9Mp_8x0BCZSHsdLT_q5tX9wZwd5QgqrSIENLrb6vXA,62
|
3
3
|
mdbq/aggregation/__init__.py,sha256=EeDqX2Aml6SPx8363J-v1lz0EcZtgwIBYyCJV6CcEDU,40
|
4
|
-
mdbq/aggregation/aggregation.py,sha256=
|
4
|
+
mdbq/aggregation/aggregation.py,sha256=3C30v7gZaSoUqwUQH5xeEBZDUA-hIo-xxFdKQgUCi7o,75742
|
5
5
|
mdbq/aggregation/df_types.py,sha256=U9i3q2eRPTDY8qAPTw7irzu-Tlg4CIySW9uYro81wdk,8125
|
6
6
|
mdbq/aggregation/mysql_types.py,sha256=DQYROALDiwjJzjhaJfIIdnsrNs11i5BORlj_v6bp67Y,11062
|
7
7
|
mdbq/aggregation/optimize_data.py,sha256=Wis40oL04M7E1pkvgNPjyVFAUe-zgjimjIVAikxYY8Y,4418
|
8
|
-
mdbq/aggregation/query_data.py,sha256
|
8
|
+
mdbq/aggregation/query_data.py,sha256=-oW4QMZESaK2e_MCKli3iK46jZGGdaQHAr-LduZ_Wo0,80524
|
9
9
|
mdbq/bdup/__init__.py,sha256=AkhsGk81SkG1c8FqDH5tRq-8MZmFobVbN60DTyukYTY,28
|
10
10
|
mdbq/bdup/bdup.py,sha256=LAV0TgnQpc-LB-YuJthxb0U42_VkPidzQzAagan46lU,4234
|
11
11
|
mdbq/clean/__init__.py,sha256=A1d6x3L27j4NtLgiFV5TANwEkLuaDfPHDQNrPBbNWtU,41
|
12
|
-
mdbq/clean/data_clean.py,sha256=
|
12
|
+
mdbq/clean/data_clean.py,sha256=ZJOTT0sNWP85x4pJl39UZBwN4Bnf8Ao-iVOJNiiRPEE,103996
|
13
13
|
mdbq/company/__init__.py,sha256=qz8F_GsP_pMB5PblgJAUAMjasuZbOEp3qQOCB39E8f0,21
|
14
14
|
mdbq/company/copysh.py,sha256=VUaaJPXPYPHWwnkdK77PWz_dAXZyEmYBA9Df1yROHAc,17764
|
15
15
|
mdbq/config/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
|
@@ -36,7 +36,7 @@ mdbq/pbix/__init__.py,sha256=Trtfaynu9RjoTyLLYBN2xdRxTvm_zhCniUkVTAYwcjo,24
|
|
36
36
|
mdbq/pbix/pbix_refresh.py,sha256=JUjKW3bNEyoMVfVfo77UhguvS5AWkixvVhDbw4_MHco,2396
|
37
37
|
mdbq/pbix/refresh_all.py,sha256=0uAnBKCd5cx5FLTkawN1GV9yi87rfyMgYal5LABtumQ,7186
|
38
38
|
mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
|
39
|
-
mdbq-2.0.
|
40
|
-
mdbq-2.0.
|
41
|
-
mdbq-2.0.
|
42
|
-
mdbq-2.0.
|
39
|
+
mdbq-2.0.8.dist-info/METADATA,sha256=R_nvxGrEBZhRgommo8oAeIk8Tb1fyP2CG7zbXx9KOoM,245
|
40
|
+
mdbq-2.0.8.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
41
|
+
mdbq-2.0.8.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
|
42
|
+
mdbq-2.0.8.dist-info/RECORD,,
|
File without changes
|
File without changes
|