【辰哥小课堂】亿信BI报表设计之sql数据源

5848
8

辰哥 管理员

发表于2018-11-8 16:19

楼主
在报表模板中,有一个sql数据源,这个sql数据源到底有什么作用呢?这就是我们今天要给大家介绍的内容。


什么是sql数据源
所谓sql数据源,是提供了一个直接写sql语句的地方,并将该sql的查询结果作为BI报表的数据源。正是这样,所以用sql数据源能实现任意复杂的报表,且一张报表取多个库中的数据

sql数据源使用规则
1. 支持select开头的sql语句

2. 支持调用存储过程,将该存储过程的返回结果集作为数据源

3. 在表格中不能对sql数据源的结果再次分组求和


知道了什么是sql数据源及其使用规则,那在报表设计过程中如何使用sql数据源?下面一起了解下:

sql数据源如何使用
sql数据源的简单使用
新建SQL数据源






在使用已定义的sql数据源之前,可测试是否通过:



引用SQL结果中的字段
rs1.字段名

分析表中引用sql字段时,可输入“代号.字段名”:




rs1.列字段

直接写“代号.1,代号.2……”:




将报表参数传递给sql数据源
参数单选
现分析表有一报表参数“行政区划”,分析表使用的sql数据源。



如何将报表参数传递给sql数据源呢?



用宏表达式,将维表的内容传递到sql数据源中。


层级维多选
现需求变更,“行政区划”需多选,那报表参数内容如何传递给sql数据源?

sql的where条件应该写成:<#=if(@xzqh="","1=1","("+asstr(@xzqh).split("\|").select(true,"E3 like'"+diminf("行政区划(卫生)",@,"$prefix")+"%'").join(" or")+")")#>

其中:@xzqh是报表参数,E3是“行政区划(卫生)”维表所对应的主题表字段。



通用维多选
若是维表是通用维,即维表格式如下:


且此时参数内容多选,那报表参数内容如何传递给sql数据源?

sql的where条件应该写成:

<#=if(@sp<>null,asstr(@sp).split("\|").select(true,"a.dl||'$'||a.xllike '"+@+"%'").join(" or "),"1=1") #>

数据源全部sql如下:

selectsp ,xse from fact_bbsj_sql sql,dim_bbsj_sp a

wheresql.sp=a.xl(+) and(<#=if(@sp<>null,asstr(@sp).split("\|").select(true,"a.dl||'$'||a.xllike '"+@+"%'").join(" or "),"1=1")#>)  

如果你还想在分析表中将维字段的名称显示出来:

select a.dl,a.dl_mc spdl,a.xl,a.xl_mcspxl,sql.xse from fact_bbsj_sql sql,dim_bbsj_sp a

where sql.sp=a.xl(+) and(<#=if(@sp<>null,asstr(@sp).split("\|").select(true,"a.dl||'$'||a.xllike '"+@+"%'").join(" or "),"1=1")#>)  

分析表设计如下:


分析表结果如下:


将表元值传递给sql数据源
“sql参数”中输入的表元代号,与sql数据源中的问号一一对应,表示分别用这些表元的值去替换sql数据源中的“?”。
如下图中,在计算的时候,将A2表元的值传递给sql数据源的where语句。


Sql数据源分页
定义2个sql数据源,rs1为分析表数据,再

定义一个叫"totalcount"的sql数据源,表格属性中的"每页行数"就能起作用了

Totalcount中的sql语句是为了求出总行数。






最近看过此主题的会员

ddb

chestnut

8个回答

只看楼主

社区小辣妹 小试身手Lv3

发表于2018-11-8 16:25

只看该作者

取消 关注该作者的回复

沙发

学习了~

韦韬然 数据老手Lv5

发表于2018-11-8 16:28

只看该作者

取消 关注该作者的回复

板凳

a1ex 小试身手Lv3

发表于2018-12-14 15:57

只看该作者

取消 关注该作者的回复

地板

支持了!优质内容!

辰哥 管理员

发表于2018-12-14 18:04

只看该作者

取消 关注该作者的回复

5#

a1ex 发表于 2018-12-14 15:57
支持了!优质内容!

谢谢夸奖,辰哥继续努力!

dujiale 数据达人Lv4

发表于2019-7-24 13:40

只看该作者

取消 关注该作者的回复

8#

为什么我的没有报表模板中数据源那没有sql数据源,难道是我没有这个权限?

dhc 数据小白Lv1

发表于2021-1-26 16:28

只看该作者

取消 关注该作者的回复

9#

看不懂。。。

cityluck 数据小白Lv1

发表于2021-2-25 18:25

只看该作者

取消 关注该作者的回复

10#

非常好

jiajiajia 数据小白Lv1

发表于2023-9-22 18:45

只看该作者

取消 关注该作者的回复

11#

3. 在表格中不能对sql数据源的结果再次分组求和。有遇到这问题的嘛,那想在分组求和怎么办呢

登录后可回答问题,请登录注册

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

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号