1 概述
2 适合场景
3 具体示例
3.1 分区字段字符串:在事实表上设置了分区字段,可直接使用分区字段作为过滤条件,能直接命中
以MYSQL数据库表创建分区为例进行说明
1、连接到mysql数据库中创建表:DateExchange,同时给设置好分区,如下图:
创建表时,以”年月日“进行分区,当“年月日”<20250101时,需要命中“p202501”;当“年月日”<20250201时 需要命中”p202502“;当“年月日”<20250301时 需要命中”p202503“;当“年月日”符合其他条件,那就命中”other“。
2、创建好表,给表灌几条数据,如下图:
3、去创建数据模型,把该表加入到数据模型中,保存数据模型:
4、去创建透视分析,让”年月日“作为过滤条件:
5、去到系统监控/SQL/MDX监控中查看并复制运行的取数SQL语句:
6、去到mysql数据库中,使用explain +上一步复制的SQL的语句,执行,查看命中了哪个分区:
可以看到上图,命中了”p202502“分区。如果partitions显示了:p202501,p202502,p202503,other, 则代表没有命中分区。
如果使用事实表分区字段作为过滤条件,这个产品本身就可以直接命中的。
3.2 分区字段字符串:在事实表上设置了分区字段,使用关联的维表的时间维度作为过滤条件
以3.1示例创建的表以及分区为例进行说明
1、在数据库下的表进行“分区设置”
2、设置分区字段:
- 分区字段:可以选择日期、字符串、整型字段。
- 当选择”日期“字段无需设置“数据格式”,当选择”字符串“或”整型“字段时,需要设置”数据格式“。
- 数据格式:必须与分区字段在数据库中的真实数据格式一致,否则查询时可能出错或命中不了。示例中“年月日”的数据是“20250101”这样的,所以数据格式也要选择与之匹配的“yyyyMMdd”。
3、设置好分区字段之后去创建模型,添加一个维表,让它与事实表关联,如下图:
4、创建模型,把在数据库表上的分区同步过来:
- 入口:数据源表的右键菜单增加了“分区设置”。点击“分区设置”每次都需要把源数据库中设置中的分区信息同步过来:
- 点击【确定】之后,到模型的分区设置,需要设置 时间维度:
- 时间维度:必须选择基于“分区字段”或者关联的日期维表所创建的时间维度,否则查询时可能出错,或者查询数据不正确。
5、基于该模型去创建透视分析,使用日期时间维度的“年月”作为过滤条件:
6、去到系统监控/SQL/MDX监控中查看并复制运行的取数SQL语句:
7、去到mysql数据库中,使用explain +上一步复制的SQL的语句,执行,查看命中了哪个分区:
可以看到上图,命中了”p202503“分区。
8、再使用“年季”的作为过滤条件:
与步骤6、7一样,去系统监控拷贝执行SQL语句到mysql数据库中用explain 执行,发现也能命中分区:
总结:关联的日期维表所创建的时间维度下面的所有时间层次作为过滤条件,都能命中分区。
3.3 分区字段为日期:在事实表上设置了分区字段,使用关联的维表的时间维度作为过滤条件
以mysql数据库表创建分区为例进行说明
1、连接到mysql数据库中创建表:orders_partition,同时给设置好分区,如下图:
创建表时,以”OrderDate“进行分区,当“OrderDate”<2020-02-01 00:00:00时,需要命中“p202001”;当“OrderDate”<2020-03-01 00:00:00时 需要命中”p202002“;当“年月日”符合其他条件,那就命中”p_future“。