mdbq 2.2.1__py3-none-any.whl → 2.2.3__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.
@@ -1,4 +1,6 @@
1
1
  # -*- coding: UTF-8 –*-
2
+ import re
3
+
2
4
  from mdbq.mongo import mongo
3
5
  from mdbq.mysql import mysql
4
6
  from mdbq.mysql import s_query
@@ -14,8 +16,6 @@ import getpass
14
16
  import json
15
17
  import os
16
18
 
17
- from sqlalchemy.event import remove
18
-
19
19
  """
20
20
  程序用于下载数据库(调用 s_query.py 下载并清洗), 并对数据进行聚合清洗, 不会更新数据库信息;
21
21
 
@@ -862,7 +862,47 @@ class GroupBy:
862
862
  }
863
863
  )
864
864
  df.insert(loc=1, column='推广渠道', value='万相台无界版') # df中插入新列
865
+ # 1. 匹配 L后面接 2 个或以上数字,不区分大小写,示例:L345
866
+ # 2. 其余情况,L 后面接多个数字的都会被第一条 if 命中,不区分大小写
867
+ df['消费力层级'] = df.apply(
868
+ lambda x:
869
+ ''.join(re.findall(r'(l\d+)', x['人群名字'].upper(), re.IGNORECASE)) if re.findall(r'(l\d{2,})', x['人群名字'], re.IGNORECASE)
870
+ else 'L5' if re.findall(r'(l\d*5)', x['人群名字'], re.IGNORECASE)
871
+ else 'L4' if re.findall(r'(l\d*4)', x['人群名字'], re.IGNORECASE)
872
+ else 'L3' if re.findall(r'(l\d*3)', x['人群名字'], re.IGNORECASE)
873
+ else 'L2' if re.findall(r'(l\d*2)', x['人群名字'], re.IGNORECASE)
874
+ else 'L1' if re.findall(r'(l\d*1)', x['人群名字'], re.IGNORECASE)
875
+ else '', axis=1)
876
+ # 1. 匹配连续的 4 个数字且后面不能接数字或"元"或汉字,筛掉的人群示例:月均消费6000元|受众20240729175213|xxx2024真皮公文包
877
+ # 2. 匹配 2数字_2数字且前面不能是数字,合法匹配:人群_30_50_促; 非法示例:L345_3040 避免识别出 35~20 岁用户的情况
878
+ # pattern = r'(\d{4})(?!\d|[\u4e00-\u9fa5])' # 匹配 4 个数字,后面不能接数字或汉字
879
+ # pattern = r'(?<![\d\u4e00-\u9fa5])(\d{4})' # 匹配前面不是数字或汉字的 4 个连续数字
880
+
881
+ # 匹配 4 个数字,前面和后面都不能是数字或汉字
882
+ pattern1 = r'(?<![\d\u4e00-\u9fa5])(\d{4})(?!\d|[\u4e00-\u9fa5])'
883
+ # 匹配指定字符,前面不能是数字或 l 或 L 开头
884
+ pattern2 = r'(?<![\dlL])(\d{2}_\d{2})'
885
+ df['用户年龄'] = df.apply(
886
+ lambda x:
887
+ ''.join(re.findall(pattern1, x['人群名字'].upper())) if re.findall(pattern1, x['人群名字'])
888
+ # else ''.join(re.findall(r'[^\d|l|L](\d{2}_\d{2})', x['人群名字'].upper())) if re.findall(r'[^\d|l|L](\d{2}_\d{2})', x['人群名字'])
889
+ else ''.join(re.findall(pattern2, x['人群名字'].upper())) if re.findall(pattern2, x['人群名字'])
890
+ else ''.join(re.findall(r'(\d{2}-\d{2})岁', x['人群名字'].upper())) if re.findall(r'(\d{2}-\d{2})岁', x['人群名字'])
891
+ else '', axis=1)
892
+ df['用户年龄'] = df['用户年龄'].apply(
893
+ lambda x: f'{x[:2]}~{x[2:4]}' if str(x).isdigit()
894
+ else str(x).replace('_', '~') if '_' in x
895
+ else str(x).replace('-', '~') if '-' in x
896
+ else x
897
+ )
898
+ # 年龄层不能是 0 开头
899
+ df['用户年龄'] = df['用户年龄'].apply(
900
+ lambda x: '' if str(x).startswith('0') else x)
901
+ # df = df.head(1000)
902
+ # df.to_csv('/Users/xigua/Downloads/test.csv', index=False, header=True, encoding='utf-8_sig')
903
+ # breakpoint()
865
904
  return df
905
+
866
906
  elif '天猫_关键词报表' in table_name:
867
907
  df.rename(columns={
868
908
  '场景名字': '营销场景',
@@ -1559,120 +1599,120 @@ def data_aggregation(service_databases=[{}], months=1):
1559
1599
 
1560
1600
  # 从数据库中获取数据, 返回包含 df 数据的字典
1561
1601
  data_dict = [
1562
- {
1563
- '数据库名': '聚合数据', # 清洗完回传的目的地数据库
1564
- '集合名': '天猫_主体报表', # 清洗完回传的数据表名
1565
- '唯一主键': ['日期', '推广渠道', '营销场景', '商品id', '花费'],
1566
- '数据主体': sdq.tg_wxt(),
1567
- },
1568
- {
1569
- '数据库名': '聚合数据',
1570
- '集合名': '天猫生意经_宝贝指标',
1571
- '唯一主键': ['日期', '宝贝id'], # 不能加其他字段做主键,比如销售额,是变动的,不是唯一的
1572
- '数据主体': sdq.syj(),
1573
- },
1574
- {
1575
- '数据库名': '聚合数据',
1576
- '集合名': '天猫_店铺来源_日数据',
1577
- '唯一主键': ['日期', '一级来源', '二级来源', '三级来源', '访客数'],
1578
- '数据主体': sdq.dplyd(),
1579
- },
1580
- {
1581
- '数据库名': '聚合数据',
1582
- '集合名': '天猫_店铺来源_日数据_旧版',
1583
- '唯一主键': ['日期', '一级来源', '二级来源', '三级来源'],
1584
- '数据主体': sdq.dplyd_old(),
1585
- },
1586
- {
1587
- '数据库名': '聚合数据',
1588
- '集合名': '商品id编码表',
1589
- '唯一主键': ['宝贝id'],
1590
- '数据主体': sdq.idbm(),
1591
- },
1592
- {
1593
- '数据库名': '聚合数据',
1594
- '集合名': '商品id图片对照表',
1595
- '唯一主键': ['商品id'],
1596
- '数据主体': sdq.sp_picture(),
1597
- },
1598
- {
1599
- '数据库名': '聚合数据',
1600
- '集合名': '商品成本',
1601
- '唯一主键': ['款号'],
1602
- '数据主体': sdq.sp_cost(),
1603
- },
1604
- {
1605
- '数据库名': '聚合数据',
1606
- '集合名': '京东_京准通',
1607
- '唯一主键': ['日期', '产品线', '触发sku id', '跟单sku id', '花费', ],
1608
- '数据主体': sdq.jdjzt(),
1609
- },
1610
- {
1611
- '数据库名': '聚合数据',
1612
- '集合名': '京东_京准通_全站营销',
1613
- '唯一主键': ['日期', '产品线', '花费'],
1614
- '数据主体': sdq.jdqzyx(),
1615
- },
1616
- {
1617
- '数据库名': '聚合数据',
1618
- '集合名': '京东_sku_商品明细',
1619
- '唯一主键': ['日期', '商品id', '成交单量'],
1620
- '数据主体': sdq.sku_sales(),
1621
- },
1622
- {
1623
- '数据库名': '聚合数据',
1624
- '集合名': '京东_spu_商品明细',
1625
- '唯一主键': ['日期', '商品id', '成交单量'],
1626
- '数据主体': sdq.spu_sales(),
1627
- },
1602
+ # {
1603
+ # '数据库名': '聚合数据', # 清洗完回传的目的地数据库
1604
+ # '集合名': '天猫_主体报表', # 清洗完回传的数据表名
1605
+ # '唯一主键': ['日期', '推广渠道', '营销场景', '商品id', '花费'],
1606
+ # '数据主体': sdq.tg_wxt(),
1607
+ # },
1608
+ # {
1609
+ # '数据库名': '聚合数据',
1610
+ # '集合名': '天猫生意经_宝贝指标',
1611
+ # '唯一主键': ['日期', '宝贝id'], # 不能加其他字段做主键,比如销售额,是变动的,不是唯一的
1612
+ # '数据主体': sdq.syj(),
1613
+ # },
1614
+ # {
1615
+ # '数据库名': '聚合数据',
1616
+ # '集合名': '天猫_店铺来源_日数据',
1617
+ # '唯一主键': ['日期', '一级来源', '二级来源', '三级来源', '访客数'],
1618
+ # '数据主体': sdq.dplyd(),
1619
+ # },
1620
+ # {
1621
+ # '数据库名': '聚合数据',
1622
+ # '集合名': '天猫_店铺来源_日数据_旧版',
1623
+ # '唯一主键': ['日期', '一级来源', '二级来源', '三级来源'],
1624
+ # '数据主体': sdq.dplyd_old(),
1625
+ # },
1626
+ # {
1627
+ # '数据库名': '聚合数据',
1628
+ # '集合名': '商品id编码表',
1629
+ # '唯一主键': ['宝贝id'],
1630
+ # '数据主体': sdq.idbm(),
1631
+ # },
1632
+ # {
1633
+ # '数据库名': '聚合数据',
1634
+ # '集合名': '商品id图片对照表',
1635
+ # '唯一主键': ['商品id'],
1636
+ # '数据主体': sdq.sp_picture(),
1637
+ # },
1638
+ # {
1639
+ # '数据库名': '聚合数据',
1640
+ # '集合名': '商品成本',
1641
+ # '唯一主键': ['款号'],
1642
+ # '数据主体': sdq.sp_cost(),
1643
+ # },
1644
+ # {
1645
+ # '数据库名': '聚合数据',
1646
+ # '集合名': '京东_京准通',
1647
+ # '唯一主键': ['日期', '产品线', '触发sku id', '跟单sku id', '花费', ],
1648
+ # '数据主体': sdq.jdjzt(),
1649
+ # },
1650
+ # {
1651
+ # '数据库名': '聚合数据',
1652
+ # '集合名': '京东_京准通_全站营销',
1653
+ # '唯一主键': ['日期', '产品线', '花费'],
1654
+ # '数据主体': sdq.jdqzyx(),
1655
+ # },
1656
+ # {
1657
+ # '数据库名': '聚合数据',
1658
+ # '集合名': '京东_sku_商品明细',
1659
+ # '唯一主键': ['日期', '商品id', '成交单量'],
1660
+ # '数据主体': sdq.sku_sales(),
1661
+ # },
1662
+ # {
1663
+ # '数据库名': '聚合数据',
1664
+ # '集合名': '京东_spu_商品明细',
1665
+ # '唯一主键': ['日期', '商品id', '成交单量'],
1666
+ # '数据主体': sdq.spu_sales(),
1667
+ # },
1628
1668
  {
1629
1669
  '数据库名': '聚合数据',
1630
1670
  '集合名': '天猫_人群报表',
1631
1671
  '唯一主键': ['日期', '推广渠道', '营销场景', '商品id', '花费', '人群名字'],
1632
1672
  '数据主体': sdq.tg_rqbb(),
1633
1673
  },
1634
- {
1635
- '数据库名': '聚合数据',
1636
- '集合名': '天猫_关键词报表',
1637
- '唯一主键': ['日期', '推广渠道', '营销场景', '商品id', '花费', '词类型', '词名字/词包名字',],
1638
- '数据主体': sdq.tg_gjc(),
1639
- },
1640
- {
1641
- '数据库名': '聚合数据',
1642
- '集合名': '天猫_超级直播',
1643
- '唯一主键': ['日期', '推广渠道', '营销场景', '花费'],
1644
- '数据主体': sdq.tg_cjzb(),
1645
- },
1646
- {
1647
- '数据库名': '聚合数据',
1648
- '集合名': '京东_关键词报表',
1649
- '唯一主键': ['日期', '产品线', '搜索词', '关键词', '展现数', '花费'],
1650
- '数据主体': sdq.jd_gjc(),
1651
- },
1652
- {
1653
- '数据库名': '聚合数据',
1654
- '集合名': '天猫_品销宝账户报表',
1655
- '唯一主键': ['日期', '报表类型', '推广渠道', '营销场景', '花费'],
1656
- '数据主体': sdq.pxb_zh(),
1657
- },
1658
- {
1659
- '数据库名': '聚合数据',
1660
- '集合名': '天猫店铺来源_手淘搜索',
1661
- '唯一主键': ['日期', '关键词', '访客数'],
1662
- '数据主体': sdq.tm_search(),
1663
- },
1664
- {
1665
- '数据库名': '聚合数据',
1666
- '集合名': '生意参谋_直播场次分析',
1667
- '唯一主键': ['场次id'],
1668
- '数据主体': sdq.zb_ccfx(),
1669
- },
1670
- {
1671
- '数据库名': '聚合数据',
1672
- '集合名': '多店推广场景_按日聚合',
1673
- '唯一主键': [],
1674
- '数据主体': sdq.tg_by_day(),
1675
- },
1674
+ # {
1675
+ # '数据库名': '聚合数据',
1676
+ # '集合名': '天猫_关键词报表',
1677
+ # '唯一主键': ['日期', '推广渠道', '营销场景', '商品id', '花费', '词类型', '词名字/词包名字',],
1678
+ # '数据主体': sdq.tg_gjc(),
1679
+ # },
1680
+ # {
1681
+ # '数据库名': '聚合数据',
1682
+ # '集合名': '天猫_超级直播',
1683
+ # '唯一主键': ['日期', '推广渠道', '营销场景', '花费'],
1684
+ # '数据主体': sdq.tg_cjzb(),
1685
+ # },
1686
+ # {
1687
+ # '数据库名': '聚合数据',
1688
+ # '集合名': '京东_关键词报表',
1689
+ # '唯一主键': ['日期', '产品线', '搜索词', '关键词', '展现数', '花费'],
1690
+ # '数据主体': sdq.jd_gjc(),
1691
+ # },
1692
+ # {
1693
+ # '数据库名': '聚合数据',
1694
+ # '集合名': '天猫_品销宝账户报表',
1695
+ # '唯一主键': ['日期', '报表类型', '推广渠道', '营销场景', '花费'],
1696
+ # '数据主体': sdq.pxb_zh(),
1697
+ # },
1698
+ # {
1699
+ # '数据库名': '聚合数据',
1700
+ # '集合名': '天猫店铺来源_手淘搜索',
1701
+ # '唯一主键': ['日期', '关键词', '访客数'],
1702
+ # '数据主体': sdq.tm_search(),
1703
+ # },
1704
+ # {
1705
+ # '数据库名': '聚合数据',
1706
+ # '集合名': '生意参谋_直播场次分析',
1707
+ # '唯一主键': ['场次id'],
1708
+ # '数据主体': sdq.zb_ccfx(),
1709
+ # },
1710
+ # {
1711
+ # '数据库名': '聚合数据',
1712
+ # '集合名': '多店推广场景_按日聚合',
1713
+ # '唯一主键': [],
1714
+ # '数据主体': sdq.tg_by_day(),
1715
+ # },
1676
1716
  ]
1677
1717
  for items in data_dict: # 遍历返回结果
1678
1718
  db_name, table_name, unique_key_list, df = items['数据库名'], items['集合名'], items['唯一主键'], items['数据主体']
@@ -1713,53 +1753,53 @@ def data_aggregation(service_databases=[{}], months=1):
1713
1753
  icm_update=unique_key_list,
1714
1754
  service_database=service_database,
1715
1755
  ) # 3. 回传数据库
1716
- res = g.performance(bb_tg=True) # 盈亏表,依赖其他表,单独做
1717
- m.df_to_mysql(
1718
- df=res,
1719
- db_name='聚合数据',
1720
- table_name='_全店商品销售',
1721
- move_insert=True, # 先删除,再插入
1722
- # df_sql=True,
1723
- # drop_duplicates=False,
1724
- # icm_update=['日期', '商品id'], # 设置唯一主键
1725
- service_database=service_database,
1726
- )
1727
- res = g.performance(bb_tg=False) # 盈亏表,依赖其他表,单独做
1728
- m.df_to_mysql(
1729
- df=res,
1730
- db_name='聚合数据',
1731
- table_name='_推广商品销售',
1732
- move_insert=True, # 先删除,再插入
1733
- # df_sql=True,
1734
- # drop_duplicates=False,
1735
- # icm_update=['日期', '商品id'], # 设置唯一主键
1736
- service_database=service_database,
1737
- )
1738
-
1739
- res = g.performance_concat(bb_tg=False) # 推广主体合并直播表,依赖其他表,单独做
1740
- m.df_to_mysql(
1741
- df=res,
1742
- db_name='聚合数据',
1743
- table_name='天猫_推广汇总',
1744
- move_insert=True, # 先删除,再插入
1745
- # df_sql=True,
1746
- # drop_duplicates=False,
1747
- # icm_update=['日期', '推广渠道', '营销场景', '商品id', '花费', '展现量', '点击量'], # 设置唯一主键
1748
- service_database=service_database,
1749
- )
1750
-
1751
-
1752
- res = g.performance_jd(jd_tg=False) # 盈亏表,依赖其他表,单独做
1753
- m.df_to_mysql(
1754
- df=res,
1755
- db_name='聚合数据',
1756
- table_name='_京东_推广商品销售',
1757
- move_insert=True, # 先删除,再插入
1758
- # df_sql=True,
1759
- # drop_duplicates=False,
1760
- # icm_update=['日期', '跟单sku id', '货号', '花费'], # 设置唯一主键
1761
- service_database=service_database,
1762
- )
1756
+ # res = g.performance(bb_tg=True) # 盈亏表,依赖其他表,单独做
1757
+ # m.df_to_mysql(
1758
+ # df=res,
1759
+ # db_name='聚合数据',
1760
+ # table_name='_全店商品销售',
1761
+ # move_insert=True, # 先删除,再插入
1762
+ # # df_sql=True,
1763
+ # # drop_duplicates=False,
1764
+ # # icm_update=['日期', '商品id'], # 设置唯一主键
1765
+ # service_database=service_database,
1766
+ # )
1767
+ # res = g.performance(bb_tg=False) # 盈亏表,依赖其他表,单独做
1768
+ # m.df_to_mysql(
1769
+ # df=res,
1770
+ # db_name='聚合数据',
1771
+ # table_name='_推广商品销售',
1772
+ # move_insert=True, # 先删除,再插入
1773
+ # # df_sql=True,
1774
+ # # drop_duplicates=False,
1775
+ # # icm_update=['日期', '商品id'], # 设置唯一主键
1776
+ # service_database=service_database,
1777
+ # )
1778
+ #
1779
+ # res = g.performance_concat(bb_tg=False) # 推广主体合并直播表,依赖其他表,单独做
1780
+ # m.df_to_mysql(
1781
+ # df=res,
1782
+ # db_name='聚合数据',
1783
+ # table_name='天猫_推广汇总',
1784
+ # move_insert=True, # 先删除,再插入
1785
+ # # df_sql=True,
1786
+ # # drop_duplicates=False,
1787
+ # # icm_update=['日期', '推广渠道', '营销场景', '商品id', '花费', '展现量', '点击量'], # 设置唯一主键
1788
+ # service_database=service_database,
1789
+ # )
1790
+ #
1791
+ #
1792
+ # res = g.performance_jd(jd_tg=False) # 盈亏表,依赖其他表,单独做
1793
+ # m.df_to_mysql(
1794
+ # df=res,
1795
+ # db_name='聚合数据',
1796
+ # table_name='_京东_推广商品销售',
1797
+ # move_insert=True, # 先删除,再插入
1798
+ # # df_sql=True,
1799
+ # # drop_duplicates=False,
1800
+ # # icm_update=['日期', '跟单sku id', '货号', '花费'], # 设置唯一主键
1801
+ # service_database=service_database,
1802
+ # )
1763
1803
 
1764
1804
 
1765
1805
  # 这里要注释掉,不然 copysh.py 可能有问题,这里主要修改配置文件,后续触发 home_lx 的 optimize_datas.py(有s)程序进行全局清理
@@ -1774,4 +1814,3 @@ if __name__ == '__main__':
1774
1814
  data_aggregation(service_databases=[{'company': 'mysql'}], months=1) # 正常的聚合所有数据
1775
1815
  # data_aggregation_one(service_databases=[{'company': 'mysql'}], months=1) # 单独聚合某一个数据库,具体库进函数编辑
1776
1816
  # optimize_data.op_data(service_databases=[{'company': 'mysql'}], days=3650) # 立即启动对聚合数据的清理工作
1777
-
mdbq/pbix/refresh_all.py CHANGED
@@ -4,6 +4,7 @@ import win32com.client
4
4
  import time
5
5
  import psutil
6
6
  from pywinauto.application import Application
7
+ import datetime
7
8
  import warnings
8
9
  # from mdbq.config import set_support
9
10
 
@@ -21,7 +22,8 @@ class RefreshAll:
21
22
  def refresh_pbix(self, file):
22
23
  # 刷新 PBI
23
24
  if not os.path.isfile(file):
24
- print(f'{file} -> 文件不存在')
25
+ now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S ')
26
+ print(f'{now}{file} -> 文件不存在')
25
27
  return
26
28
  # with open(self.pbix_path, 'r', encoding='utf-8') as f:
27
29
  # content = f.readlines()
@@ -37,18 +39,21 @@ class RefreshAll:
37
39
  """刷新程序"""
38
40
  for es in range(4):
39
41
  try:
40
- print(f'正在刷新 >>>{file}')
42
+ now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S ')
43
+ print(f'{now}正在刷新 >>>{file}')
41
44
  self.pbi(path=file)
42
- print('文件已刷新!')
45
+ # print('文件已刷新!')
43
46
  break
44
47
  except Exception as e:
45
48
  print(e)
46
- print('报错的文件 >>>' + file + ' >> ' + str(es + 1))
49
+ now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S ')
50
+ print(f'{now}报错的文件 >>>' + file + ' >> ' + str(es + 1))
47
51
 
48
52
  def refresh_excel(self, file):
49
53
  # 刷新 excel
50
54
  if not os.path.isfile(file):
51
- print(f'{file} -> 文件不存在')
55
+ now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S ')
56
+ print(f'{now}{file} -> 文件不存在')
52
57
  return
53
58
  if not file.endswith('.xlsx') and not file.endswith('.xls'):
54
59
  return
@@ -61,7 +66,8 @@ class RefreshAll:
61
66
  # if not excel_list:
62
67
  # return
63
68
  try:
64
- print(f'正在刷新 >>>{file}')
69
+ now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S ')
70
+ print(f'{now}正在刷新 >>>{file}')
65
71
  xlapp = win32com.client.Dispatch('Excel.Application') # 创建Excel程序App
66
72
  xlapp.Visible = False # 窗口是否可见
67
73
  xlapp.DisplayAlerts = False # 是否显示警告信息
@@ -78,7 +84,7 @@ class RefreshAll:
78
84
  wb.Save()
79
85
  wb.Close(SaveChanges=True)
80
86
  xlapp.Quit()
81
- print('文件已刷新!')
87
+ # print('文件已刷新!')
82
88
  except Exception as e:
83
89
  print(file, e)
84
90
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mdbq
3
- Version: 2.2.1
3
+ Version: 2.2.3
4
4
  Home-page: https://pypi.org/project/mdbsql
5
5
  Author: xigua,
6
6
  Author-email: 2587125111@qq.com
@@ -5,7 +5,7 @@ mdbq/aggregation/aggregation.py,sha256=98pECXV6yw7XSjoLnJBgHIQWM2s2aaB8ii5qNebAI
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=h8AHq0v8xvsGjqoCZkAH1ZXZ3n05Q-JETVR6WDWzCyg,82334
8
+ mdbq/aggregation/query_data.py,sha256=2ZxfuqMWndrWg8mOzR2INW27g7AQjoluJFMJuxJq4Pc,85683
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
@@ -35,10 +35,10 @@ mdbq/other/sku_picture.py,sha256=vHHnajaS6Nz2sEduENihEUY_ZMhyBuQO7WuzrXSDSXM,481
35
35
  mdbq/other/ua_sj.py,sha256=JuVYzc_5QZ9s_oQSrTHVKkQv4S_7-CWx4oIKOARn_9U,22178
36
36
  mdbq/pbix/__init__.py,sha256=Trtfaynu9RjoTyLLYBN2xdRxTvm_zhCniUkVTAYwcjo,24
37
37
  mdbq/pbix/pbix_refresh.py,sha256=JUjKW3bNEyoMVfVfo77UhguvS5AWkixvVhDbw4_MHco,2396
38
- mdbq/pbix/refresh_all.py,sha256=M8g42JEJuKnSgugHIG9ZkLXrm3KPHYRKi2Uv0XYlKnE,5499
38
+ mdbq/pbix/refresh_all.py,sha256=viOlLCmz9zg61Q2nzjgl8dChfQxnxRd1A_jmQMb2oDM,5918
39
39
  mdbq/pbix/refresh_all_old.py,sha256=_pq3WSQ728GPtEG5pfsZI2uTJhU8D6ra-htIk1JXYzw,7192
40
40
  mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
41
- mdbq-2.2.1.dist-info/METADATA,sha256=9k0-Dze1iVspgpsGXhg_EWjKuc2FrKtYFw-mjf1HVSk,245
42
- mdbq-2.2.1.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
43
- mdbq-2.2.1.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
44
- mdbq-2.2.1.dist-info/RECORD,,
41
+ mdbq-2.2.3.dist-info/METADATA,sha256=W3NlmpUi3QhHKBvVmpGSh6puSIY-MYntvTiWCQJb4eo,245
42
+ mdbq-2.2.3.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
43
+ mdbq-2.2.3.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
44
+ mdbq-2.2.3.dist-info/RECORD,,
File without changes