页面树结构

版本比较

标识

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

1 概述

用户可以通过编写SQL语句对数据中的表进行加工、处理再添加到数据模型中。

信息
title前置条件

1、SQL查询支持直连、抽取模式。

2、如果SQL查询里的SQL语句在模型里是作为一个子查询使用,如果SQL不支持嵌套,则需要修改SQL语句或者切换为抽取模式2、如果SQL查询里的SQL语句在模型里是作为一个子查询使用,如果原业务库不支持嵌套SQL,则需要修改SQL语句或者切换为抽取模式

     详细可参考:直连&抽取

3、如果SQL查询定义了参数,可参考参数管理参数设置进行参数映射!

4、目前SQL查询编辑器仅支持执行一条SQL语句!通过"分号(;)"可以进行多条SQL语句的执行,最后一个必须是select语句(说明:SQL查询会以分号分隔,将这些复杂SQL当作多条SQL执行,不支持存储过程、代码块等相关写法),可能会影响保存、预览数据。

5、SQL查询如果嵌套后,可能会导致字段的数据类型识别不准确,如果不准确,可通过CONVERT函数转换规避。

6、数据模型的SQL查询中的参数,不支持备选值中包含逗号,如果备选值包含逗号是会自动分割,以多个值进行查询。

2

...

功能介绍

Image Added

序号功能功能说明
1执行

执行:执行全部SQL

执行选中SQL语句:支持用户选中界面上的部分SQL运行

2保存保存SQL查询
3格式化SQL对SQL进行格式化
4复制SQL复制SQL语句到粘贴板
5回到模型返回到数据模型主页



信息

数据源业务视图下创建的SQL查询与数据模型创建的SQL查询,不能使用参数;并且无法制作业务主题。


3 示例说明

3. 1 通过参数过滤数据

我们都知道,金融、制造等行业的数据量比较大,业务用户在分析报表的时候如果把全部的数据都拉下来,会非常耗时,所以在很多场景下,只希望拉取某天或某几天的数据的数据。

...

  • where {[字段=${ParamName}]}参数是动态值,"{[]}"代表参数默认值可不填写,不填写代表查询全部数据。
  • 如果 where 字段=${ParamName},这种写法也支持,但是参数默认值必填,否则执行不通过。
  • 如果在模型中的[参数管理]进行了关联映射,可以随着模型设置的默认值改变输出结果集;具体可参考:参数管理参数设置
  • 参数数据类型,默认是字符串,用户可以选择与SQL查询条件字段匹配的数据类型:日期、日期时间、时间、整型、浮点型、长浮点型、其他。

...

2、如果用户写好了SQL查询,想回到数据模型,建议先点击  保存 之后再点击 回到模型 ;可以在模型修改数据类型、修改别名设置与其他查询的关系或者构建数据模型

...

3.2  通过参数控制权限

业务用户开发了“销售报表”,老板(admin)可以查看全部地区的销售数据,但是各地区的负责人只能查看对应地区的数据。

...

具体的操作步骤如下:

1、创建数据模型并在模型中增加 SQL查询 ,     用户通过SQL查询控制权限用户通过SQL查询控制权限:

  • 如果权限比较简单,比如通过”用户所属组”可以直接匹配的,可直接用 函数 进行控制;上图的CurrentUserDefaultDepartmentAlias就是用户所属组与区域匹配上了,所以可以控制权限。
  • 如果权限控制比较复杂,比如用户存储在另外一个业务库,需要通过SQL语句进行再处理的,可使用 用户属性

...

2、保存并回到模型,查看最终效果(预览模型):如需要把该参数在报表层应用,可以参考:参数管理参数设置进行映射。

...


3.3  通过SQL实现数据加工、多表关联等生成宽表

有时候IT技术人员是直接通过SQL处理、加工好对应的指标,然后让业务人员直接基于处理好的指标进行报表展现,并且查询全部数据,这时候也可以使用模型里面的SQL查询。

...

  • 可以在SQL语句中多表关联、过滤、使用数据库本身的函数进行计算、字符串替换、拼接、case when等等。

3、【保存】之后再回到【回到模型】,可以保存 之后再回到 回到模型,以查询名称命名生成了一个宽表,选中 查询 通过 右键菜单  可以设置与其他查询的关系或者参考构建数据模型构建自己的模型。

...

3.4 通过SQL进行union

注意
title前置条件

如果想复现示例,需要先把示例数据导入到模型中,详细请参考:导入文件数据

示例数据下载:合同示例数据.rar

...