页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

目前数据模型含有导入文件、JAVA查询、脚本查询、ETL高级查询、存储过程查询、生成日期表这些查询时,必须使用 抽取 模式

1 概述

Smartbi 数据模型提供“直连”和“抽取”两种数据加载模式:

...


4.1 数据抽取类型介绍

数据抽取支持 全量抽取按次抽取 查询动态抽取 (原:按次抽取)、增量抽取

由于在V11最新版本上优化了抽取逻辑,原先的抽取生成大宽表改成了抽取小宽表,详情可查看:
警告
title重要提示

1、由于在V11最新版本上优化了抽取逻辑,原先的抽取生成大宽表改成了抽取小宽表,详情可查看:数据模型引擎V2.0

2、在数据模型引擎V2.0 上:

  • 数据模型的结构没有调整,如果抽取失败,在报表层能正常查看数据(查看上一次抽取成功的数据)
  • 如果数据模型没有抽取,在查询报表时会自动抽取。


4.1.1 全量抽取

注意

全量抽取模式:

1、如果使用 参数 进行权限控制,比如华南区域的员工只能查看华南的数据,华北区域员工只能查看华北的数据,那么抽取的时候需要使用管理员的账号进行抽取; 详情可查阅计划任务

2、如果模型的查询是 数据源表,并且在源表设置了行权限,全量抽取不会继承源表设置的行权限,需要重新在模型上设置行权限;详参:数据模型行权限。如果是数据模型V2.0引擎,抽取时不引用计划任务设置的执行人的权限,行权限在查询时生效,详情可查看:数据模型引擎V2.0

3、如果模型使用了参数进行数据过滤或者权限控制,在报表层,切换参数无法过滤到非默认值的数据,详参:参数设置

...

全量抽取,即全量覆盖抽取, 每次抽取的时候将表数据全部抽取至MPP数据库,如果MPP已有数据,全量抽取会覆盖MPP已有的数据

示意图如下:


4.1.2 增量抽取

SQL查询存储过程查询java查询可视化SQL查询脚本查询支持增量抽取,导入文件生成日期表ETL高级查询不支持增量抽取。

详情可查看:增量抽取介绍

4.1.3 查询动态抽取(原:按次抽取)

警告
title重要变更
按次抽取,在V11

 查询动态抽取(原:按次抽取),在V11 数据模型引擎V2.0上优化了抽取逻辑,主要优化了:

  • 支持设定动态有效期(默认30分钟):在运维设置/系统设置/高级选项:DATAMODEL_DYNAMIC_IMPORT_EXPIRED进行设置;如果超过了设置的时间,会自动清理旧表。
  • 报表刷新时,系统将自动触发重新抽取;
  • 相同权限的用户间,抽取结果共享,减少重复抽取,减少资源消耗。


信息

1、按次抽取:与计划任务无关。查询动态抽取(原:按次抽取):与计划任务无关。

2、如果模型里面的查询是数据源表,并且在源表设置了行权限,按次抽取会继承源表设置的行权限; 详参:数据模型行权限

3、“按次抽取”是结合用户登录生成的Session及查询的参数组合进行抽取。如果用户注销或关闭浏览器,下一次登录系统会重新抽取。

4、按次抽取,如果把报表共享给其他人查看,用户使用public权限第一次打开会进行抽取数据,只要第一次打开的用户不注销或关闭浏览器,后面的用户都无需重新抽取。

5、ETL高级查询不支持按次抽取。

6、按次抽取适合数据量小的情况,如果数据量大,切换参数备选值都会抽取,比较耗时,影响用户体验。

“按次抽取”使用场景:查询动态抽取(原:按次抽取)”使用场景:

  • 数据安全问题:按次抽取是根据用户本身的权限进行抽取,只能查看自己有权限的数据;并且每次登出会清空缓存表。
  • 数据实时性问题:按次抽取是根据参数备选值进行抽取,如果源库本身性能不行,并且数据量不大,对数据实时性要求更高,可以采用按次抽取。

...

4、在抽取设置 设置查询为 按次抽取,并保存数据模型。

Image AddedImage Removed

  • 数据有效期:当模型中设置了数据有效期,基于它做的报表,如果访问的时候发现失效了,会重新抽取;如果失效了但是没有访问不会重抽,直到下次访问的时候才会重抽。

5、去创建 交互式仪表盘,并把参数拖入到画布中,切换参数,组件可以根据参数动态展示数据:

  • 如果是第一次切换的参数值,会从底层数据库取数,会触发抽取;如果后面再切换回原来的参数值,不会重新取数,而是取缓存的数据。
  • 如果有新的数据进来,可以退出账号重新登录再查看或者清空缓存。 


4.1.4  分区设置

信息

1、抽取的分区设置目前支持的MPP库:只有SmartbiMpp产品默认使用高速缓存库CHStarRocks

  • 其中StarRocks的分区的设置: 目前不支持年季、年周,只支持年、年月、年月日,详细可查看官网:https://docs.starrocks.io/zh/docs/3.1/table_design/data_distribution/expression_partitioning/
  • 而clickhouse支持年周的话 会与年季有冲突,所以clickhouse也不支持年周。
  • clickhouse 要求每次批量导入数据时不能跨越特别多的分区,默认分区上限是100,如果想要更多分区,可以通过修改clickhouse的配置文件中参数max_partitions_per_insert_block来控制数量。

2、分区设置仅支持抽取模式,支持的范围:全量抽取、增量抽取、查询动态抽取。

下面以示例说明分区设置的操作以及查看是否命中了分区。

以产品内置的northwind数据库里面的【orders】、【orderdetails】为示例构建数据模型

1、把【orders】、【orderdetails】加载到数据模型中,并创建数据模型

Image Added


2、保存好模型,设置模型为 抽取 模式,并设置【orders】为全量抽取,设置分区设置:

Image Added

选项

分区设置选择日期或日期时间类型的字段作为分区依据时,系统会自动将数据分配到相应的分区表中。这样做不仅有助于更快的抽取数据,还能显著提升查询效率,特别是在进行大规模数据分析时。
温馨提示:
请选择一个在记录创建后几乎不发生变化的字段作为分区字段,例如记录的创建时间。
避免使用那些在数据生命周期内可能会更新的字段(如最后修改时间),因为这会导致分区数据重复或不准确。

分区字段目前只支持日期、日期时间字段,每次只能选择一个字段。

分区格式

选项:年、年季、年月、年月日。暂不支持年周,原因:starRocks不支持年周、年季,而clickhouse支持年周的话 会与年季有冲突,所以没有支持


信息

max_partitions_per_insert_block设置方法:

方法一:配置文件设置

  1. 找到ClickHouse的配置文件,通常位于/etc/clickhouse-server/config.xml或/etc/clickhouse-server/users.xml。

  2. 在配置文件中找到块,该块包含了ClickHouse的配置选项。

  3. 在块中添加以下配置项:

<profile>
<max_partitions_per_insert_block>1000</max_partitions_per_insert_block>
</profile>
  1. 保存并关闭配置文件。

  2. 重启ClickHouse服务,使配置生效。

方法二:会话级别设置

  1. 在ClickHouse客户端中连接到数据库

  2. 在会话中执行以下SQL语句:

SET max_partitions_per_insert_block=1000(1000只是示意,可自行修改)
  1. 该设置将仅在当前会话中生效,适用于临时导入大量数据的情况。


3、设置好分区之后对模型进行抽取,点击【立即抽取】,再去“系统监控/SQL/MDX监控”查看到抽取到MPP表的表名,如下图:

Image Added

4、使用数据库工具连接MPP库,使用下面的语句查看是否命中分区?

如果查询有对应的数据,则分区成功。

Image Added

代码块
SELECT
    partition,
    name,
    active
FROM system.parts
where table like '%o_662e015ae0aced9a870441ef1f3a2990_0_2%'


4.1.5 抽取设置介绍

信息
title前置条件

抽取的整体逻辑简单介绍:

  • 先把数据模型每个查询的数据写入到CSV文件。
  • 再把CSV文件导入到MPP对应的临时表中。
  • 等把所有的查询都数据“拷贝”到MPP中后,再把MPP中每个查询的数据导入到大宽表中(根据模型基数关系生成的大宽表),其中引擎V2.0是生成小宽表,;如果其中一个查询“导入”数据失败,抽取就算失败。

Smartbi数据模型的手工抽取类型有:抽取并建宽表、单个查询的抽取、更新宽表。

Image Added

选项
抽取并建宽表适用于手动抽取的任意场景,比如模型的某个字段数据类型改了,别名改了,关系修改了,增加了某个字段等等,点击“抽取并建宽表”都会把整个模型的查询全部重抽并重新生成大宽表。 
单个查询的抽取
  1. 如果模型从来没有抽取过,点击单个查询的抽取,模型仍会运行【抽取并建宽表】的逻辑,因为这时只抽单个查询没有意义,在报表层会报错。
  2. 如果模型的某个查询变动过,比如修改了基数关系或者增加了字段等,你选中其中一个查询进行抽取,也会把已修改的所有查询给抽了,并且更新大宽表。
  3. 如果你很明确只是修改了这个查询,比如只针对这个查询更改了字段别名,那么就可以直接重新抽取这个查询的数并更新大宽表,节省等待时间。
  4. 在模型中 导入文件,因为本身已经导入到MPP中了,所以无需设置抽取方式。
更新宽表

如果模型里面的所有查询都没有任何调整,只是基数更改了,那么可以直接用更新宽表的方式减少抽取时间。

抽取参数值
  • 入口:
Image Removed
  • Image Added
  • 默认值:如果在参数设置映射了查询的参数,那么默认值以参数设置的为准;
  • 自定义: 如果想快速的更改参数默认值,可以直接自定义默认值;抽取时是以自定义的默认值进行抽取。

...


抽取计划
抽取计划
4.1.

...

6 抽取计划

信息

1、只要是抽取的模型,第一次保存之后都会自动生成计划任务,默认是停止状态。

2、在数据模型上点击”抽取并建宽表“不走抽取计划进行抽取。

...

2、设置好查询的抽取方式以及抽取参数值,如果想定时更新模型的数据,那么可以使用计划任务进行抽取, 详参:计划任务


4.1.

...

7 抽取日志

用户查看抽取日志:

  • 可以更好的判断模型是否已经抽取成功。
  • 如果模型抽取失败可以在抽取日志中查看抽取失败的原因。

...