麦粉社区
>
帖子详情

[数据准备] 快速搞懂SmartBI数据抽取

动态中心 发表于 2 小时前
发表于 2 小时前

日常做数据报表时,你是不是也遇到过这些困扰? “业务系统数据太多,直接查询卡到崩溃”、“不同系统数据分散,整合起来太费劲”、“实时查询影响业务系统性能,被IT部门叫停”…… 其实这些问题,用SmartBI的数据抽取功能就能轻松解决!今天就带大家从0到1搞懂数据抽取,帮你快速上手,高效搞定数据抽取使用问题~


 


一、数据抽取作用


数据抽取是指从源数据库中抽取原始数据到高速缓存库,它可以保证秒级获取大级别量的数据结果,提高系统性能。


IMG_256


 


二、高速缓存库使用


如上所说,数据抽取是抽取到高速缓存库的,高速缓存库是Smartbi 提供的对数据查询进行缓存和提速的功能,为了解决用户原始数据库查询慢并且不好解决的场景,可以通过定时抽取把数据缓存到缓存库,提升报表的查询性能,所以我们需先确保高缓存库的可用性。


另外,高速缓存库本质也是一个数据库服务,需部署了对应数据库,再进行配置。


数据连接——system下找到高速缓存库,双击或右键打开,根据实际情况配置好,点击测试连接通过后保存使用:


 


IMG_257


 


高速缓存库的支持和配置详情可看:高速缓存库


 


三、抽取机制


(1)数据集或分析确定结果字段,发起数据抽取指令后,从源数据库中将字段的所有数据抽取到高速缓存库。


(2)再次查询当前数据集或分析的数据时,从高速缓存库获取数据。


注意事项:


抽取线程设置可以自定义跳转抽取并发数量,到系统运维设置-系统选项-性能优化可查看和微调整,不过考虑到自定义设置太大容易导致服务器内存不够,建议还是自动优化计算分配即可。


 















抽取



抽取并发线程数



用于设置对单个数据集的抽取的并发数量。


数据模型引擎V2.0上的抽取不支持多线程。



单线程抽取数据行数



用于设置每个线程的抽取数据量。



 


IMG_258


 


四、支持数据抽取功能的模块


(1)数据集类



  • V10 及以上版本:数据准备模块默认支持数据模型的抽取设置;


IMG_259



  • 低版本或开启旧数据集的高版本,除数据模型外,还支持以下旧数据集类型的抽取设置:自助数据集、可视化数据集、SQL数据集、原生SQL数据集、存储过程数据集、Java数据集、即席查询数据集【旧即席查询】、透视分析数据集【旧透视分析】,详情可看:旧数据集数据抽取如何配置


(2)ETL功能


ETL资源,输出目标节点选直接输出到高速缓存库:


IMG_260


(3)强制需使用到抽取的功能



1)例如使用了以上不支持直连的存储过程查询,会提示:由于以下查询只支持抽取模式,数据模型无法切换成直连模式:“存储过程查询” 并强制抽取:


 


IMG_261


2)使用ETL高级查询或普通子查询右键“转换为ETL高级查询”,会默认强制输出到MPP:


IMG_262


 


3)模型内添加不同来源业务库的数据进行整合处理,添加或切换会提示:数据模型不支持跨库直连模式,如果要添加选择的表或视图,必须切换成抽取模式,确定切换? 或   数据模型中的表/查询来源多个数据库,暂不支持直连模式:


 


IMG_263


 


五、数据模型抽取类型


数据模型抽取的整体逻辑简单介绍:



  • 先把数据模型每个查询的数据写入到CSV文件。

  • 再把CSV文件导入到MPP对应的临时表中。

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


分全量抽取、增量抽取和查询动态抽取【按次抽取】,各类型适用场景对比说明:


 






















抽取类型



适用场景



全量抽取



1、数据量较小,抽取速度快,不会很影响性能;
2、数据更新不频繁
3、对数据一致性要求高,不希望出现遗漏或差异;



增量抽取



常用于频繁更新且数据量比较大的表:
1、历史数据不会变动  --入库方式可以使用“追加”;
2、表内有“时间戳”字段,可用来和"更新时间"做对比实现增量更新,–入库方式可以使用“更新与插入”;
3、适用于需要定期更新历史数据并追加新数据的场景(例如:每日回溯近 7 天数据,清除历史数据后重新抽取 7 天最新数据);



查询动态抽取



1、需要对模型内个别子查询设置数据行权限控制的情况,例如对子查询SQL的where条件应用设置了数据行权限,查询动态抽取是根据登录用户本身的权限情况进行抽取,只能查看自己有权限的数据;
2、数据量比较大,需提前模型应用参数过滤减少一次性返回以提高查询性能,但希望切换参数实时查询对应数据可以采用查询动态抽取;



1、全量抽取


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


IMG_264 IMG_265


注意事项:



  • 如果使用参数 进行筛选,全量抽取会按照默认参数值抽取,在报表层,切换参数无法过滤到非默认值的数据导致切换参数失效,建议改用查询动态抽取或报表层级使用字段筛选器;

  • 如果模型的查询是数据源表,并且在源表设置了行权限,全量抽取不会继承源表设置的行权限,需要重新在模型上设置建议参考数据模型基于全量抽取实现数据权限管控使用;


2、增量抽取


例如数据库中有一张表,每天都会新增数据,这时候我们就可以使用增量抽取,只将每天新增的数据更新到高速缓存库表,这样就不需要更新整张数据表,节省了更新时间和更新资源。完整操作可参考详情


IMG_266


 


增量数据获取方式:



增量入库方式:



  • 支持追加、更新与插入;


注意事项:



3、查询动态抽取


主要是报表刷新时若切换的参数为未抽取过的新参数,或参数已过预设置好的有效期了,系统将自动触发重新抽取,然后相同权限的用户间,抽取结果共享,减少重复抽取,减少资源消耗。


 


IMG_267


 


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


注意事项:



  • 查询动态抽取(原:按次抽取):与计划任务无关,不需另外设置抽取计划,仅由刷新查询根据有效期触发;且在设置了查询动态抽取的情况下就算再设置了抽取计划,也还是会根据数据有效期设置判断失效后由刷新查询触发重抽;

  • 2025.06.04之后的V11版本ETL高级查询开始支持查询动态抽取;

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

  • 相同权限的用户间,抽取结果共享,减少重复抽取,减少资源消耗;

  • 支持设定动态有效期(默认30分钟):可以自定义修改;如果超过了设置的时间,会自动清理旧表,刷新查询触发重新抽取;

  • 报表刷新时,参数切换的触发逻辑如下:若切换的参数为未抽取过的新参数,或参数已过有效期,系统将自动触发重新抽取;用户重新登录,若参数不变且该参数此前已查询过且仍在有效期内,再次查询时不会触发重新抽取;

  • 查询动态抽取适合数据量小的情况,如果数据量大,切换参数备选值都会抽取,比较耗时,影响用户体验;


4、示例演示说明


为了帮大家更好理解和实操,下面以「根据区域参数获取订单信息」为例,演示查询动态抽取的设置方法。具体操作步骤如下:


(1)下面以“根据区域动态获取订单信息” 进行介绍;


(2)在SQL查询查询订单表并应用 区域 参数, 如下图:


IMG_268


 


(3)保存SQL查询,并回到数据模型,创建参数,如下图,可参考 参数设置 创建参数:


 


IMG_269


 


(4)在抽取设置 设置为 查询动态抽取,并保存数据模型:


 


IMG_270


 


(5)去创建 透视分析 ,并把参数拖入到画布中,切换参数,组件可以根据参数动态展示数据:



  • 如果是第一次切换的参数值,会从底层数据库取数,会触发抽取;如果后面再切换回原来的参数值,在数据有效期内不会重新取数,而是取缓存的数据。

  • 如果有新的数据进来,可以退出账号重新登录再查看或者清空缓存。


IMG_271


IMG_272


5、分区设置


上面三种抽取类型都可以看到支持分区设置的,分区设置是为了把表数据相对平均分成多个分区,抽取程序会尽可能一个分区分配一个线程进行并行抽取,这样能够极大的提高大数据量情况下的数据抽取性能。另外,分区主要是为了加速查询使用的,比如通过设置日期-月分区,当查询的时候就直接去底层那个分区数据区获取数据了,而不需要扫描额外的数据。


注意事项:


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



  • 其中StarRocks的分区的设置: 目前不支持年季、年周,只支持年、年月、年月日,详细可查看StarRocks官网;

  • 而SmartbiMpp支持年周的话,会与年季有冲突,所以SmartbiMpp也不支持年周。

  • SmartbiMpp要求每次批量导入数据时不能跨越特别多的分区,默认分区上限是100,如果想要更多分区,可以通过修改SmartbiMpp的配置文件中参数max_partitions_per_insert_block来控制数量。


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


(3)具体示例说明


下面以示例说明分区设置的操作以及查看是否命中了分区:以产品内置的northwind数据库里面的【orders】、【orderdetails】为示例构建数据模型


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


IMG_273


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


IMG_274


















分区设置



选择日期或日期时间类型的字段作为分区依据时,系统会自动将数据分配到相应的分区表中。这样做不仅有助于更快的抽取数据,还能显著提升查询效率,特别是在进行大规模数据分析时。


 


温馨提示:



  • 请选择一个在记录创建后几乎不发生变化的字段作为分区字段,例如记录的创建时间【也即作为分区字段存储的历史数据是固定不变的】。

  • 避免使用那些在数据生命周期内可能会更新的字段(如最后修改时间),因为这会导致分区数据重复或不准确。



分区字段



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



分区格式



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


其中StarRocks的分区的设置: 目前不支持年季、年周,只支持年、年月、年月日,详细可查看官网:https://docs.starrocks.io/zh/docs/3.1/table_design/data_distribution/expression_partitioning/


SmartbiMpp要求每次批量导入数据时不能跨越特别多的分区,默认分区上限是100,如果想要更多分区,可以通过修改clickhouse的配置文件中参数max_partitions_per_insert_block来控制数量。


max_partitions_per_insert_block设置方法:


方法一:配置文件设置


1)找到ClickHouse的配置文件,通常位于:


/etc/clickhouse-server/config.xml或/etc/clickhouse-server/users.xml


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


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


 


1000


 


4)保存并关闭配置文件


5)重启ClickHouse服务,使配置生效。


方法二:会话级别设置


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


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


SET max_partitions_per_insert_block=1000(1000只是示意,可自行修改)


3)该设置将仅在当前会话中生效,适用于临时导入大量数据的情况。



 


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


IMG_275


4)使用数据库工具连接MPP库,使用下面的语句查看是否命中分区,如果查询有对应的数据,则分区成功


 


IMG_276









SELECT


    partition,


    name,


    active


FROM system.parts


where table like '%o_662e015ae0aced9a870441ef1f3a2990_0_2%'



旧数据集抽取类型详情可看:旧数据集数据抽取如何配置


 


六、定时抽取设置


抽取设置后可设置定时抽取计划,抽取计划的触发类型就是时间,需要我们自定义设置的是:间隔类型、运行设置、失败重试机制、推送提醒,具体各配置项含义可参考:新建计划



  • 数据模型设置


设置入口如下,抽取箭头展开选择抽取计划,点击进入设置界面即可:


IMG_277


IMG_278


 



 


七、常见抽取问题


(1)如何中断抽取


数据准备——抽取监控——找到正在同步内容——常用操作内处理:


 


IMG_279


IMG_280


(2)如何分析抽取失败原因


有时之前正常使用的数据集突然抽取失败了,我们如何快速定位到问题原因呢?可以去查看对应的抽取日志,根据日志报错信息去对应处理即可。


可以到数据抽取-抽取监控-找到失败内容的常用操作区查看日志看看:


 


IMG_281


 


若是数据模型类型,也可以编辑数据模型右上角查看抽取日志:


 


IMG_282


(3)能否设置禁用缓存


在抽取模式下,缓存会一直保留,直到数据模型重新抽取。


(4)电子表格报表数据集能否设置抽取


问题描述:


WEB电子表格或电子表格使用报表数据集创建模型查询或SQL查询时,有办法设置抽取吗?


解决方案:


不支持直接设置,建议使用数据模型设置抽取后,再基于抽取的数据模型去新建模型查询使用。


 


IMG_283


(5)如何优化抽取性能


在实际使用中,很多时候会有疑问:“数据量一大,抽取就变慢,怎么才能又快又稳?” 别担心,针对大数据量抽取性能优化这个高频痛点,我们整理了几个经过验证的实战示例,每一个都能直接参考使用。下面就通过具体案例,手把手教你如何从策略、配置到资源分配上,全方位提升抽取性能:


大数据量抽取性能优化


如何进行数据的增量抽取


大数据量查询优化:预计算(抽取模式)配置指南


大数据量查询优化:利用数据模型分区快速过滤数据


 


好啦,今天从 0 到 1 带你全面了解了 SmartBI 的数据抽取功能,是不是一下子就清晰多了?以后再遇到数据太多查询慢、跨系统整合难、怕影响生产库性能这些头疼问题,别再硬扛啦~直接用上数据抽取,报表更流畅、分析更安心、效率直接拉满!

高级模式
B Color Image Link Quote Code Smilies
您需要登录后才可以回帖 登录 | 立即注册

0回帖数 0关注人数 35浏览人数
最后回复于:2 小时前

社区

指南

AI

搜索

快速回复 返回顶部 返回列表