页面树结构
转至元数据结尾
转至元数据起始

存储过程数据集是针对存储过程定义数据集条件和内容的一类数据集。

关于存储过程数据集的创建入口、资源显示和使用,统一通过V10.5 license控制。如希望在V10.5版本中继续使用存储过程数据集,则需更新授权包含存储过程数据集的license文件。

前提条件

  • 在产品中使用的存储过程在数据库创建时是有一些要求的,具体请先参考存储过程要求。
  • 在创建存储过程数据集前,必须确保“存储过程管理”窗口中通过 自动检测检测结果集 按钮分别检测出相关的参数和获取存储过程的结果集。

操作入口

在系统导航栏中选择 数据准备 ,在数据集的更多中选择 新建>存储过程数据集 。

界面介绍

“存储过程数据集”界面主要分为以下几区域:

  • 可选资源区:该区列出可供选择的字段。
  • 输出字段区:该区列出了所有可被存储过程数据集使用的资源。
  • 参数绑定区:将存储过程中的参数与事实表中相应的参数进行绑定的操作区。
  • 属性区:列出存储过程数据集输出的资源,并可以在下方设置属性。在“存储过程数据集”界面中同样可以进行告警设置、局部参数设置。
  • 工具栏:列出了所有可用于编辑存储过程数据集的工具按钮。

可选资源区

存储过程数据集必须确保在“存储过程表属性”窗口中通过 自动检测检测结果集 按钮分别检测出相关的参数和获取存储过程的结果集。

这样才会在可选资源区列出了所有可被存储过程数据集使用的字段。用户只需将各字段拖到该区域即可。

参数绑定区

将存储过程中的参数与事实表中相应的参数进行绑定的操作区。如下图,会把存储过程检测出来的参数放到参数绑定区域,点击 绑定 按钮。

弹出选择参数对话框后,根据需要选择参数后点击确定则实现存储过程参数和产品中的参数的绑定。

预览数据可以看到绑定参数后存储过程数据集生成的灵活分析的效果。

属性区

属性区用于设置数据集相关资源的属性。它主要包含两个部分:数据集输出区和属性面板。

  • 数据集输出区:该区显示所有数据集输出的相关资源,该区通常与“属性面板”结合起来用于对这些资源的属性进行管理,包含:输出字段属性、私有参数输出参数告警设置
  • 属性面板:该区需要与“工作区”结合使用,单击工作区中的任一资源,即在属性面板中列出该资源的相关属性信息。用户可以在属性面板中重新设置资源的相关属性。

工具栏

存储过程数据集工具栏的按钮说明如下:

工具栏的按钮说明如下表,对应的功能点击超链接跳转到详细分析。

按钮名称

说明

保存

保存数据集到默认路径。

另存

保存数据集到用户指定路径。

视图

用于区域的显示和隐藏。包含显示/隐藏资源区、显示/隐藏属性区。

定义多重表头

对SQL数据集的表头进行修改添加,形成多重表头。

参数布局

调整参数在SQL数据集对应的报表中的位置。

Excel模板设置

把当前数据集的数据结果填充到用户自定义的Excel模板中。

高级设置

用于设置当前数据集的缓存策略和分页策略。

预览数据

对新建或修改的数据集进行预览。

数据抽取

用于将当前数据集的数据抽取到MPP。

创建可基于当前数据集快速创建透视分析、仪表分析、灵活分析以及自助数据集。

存储过程要求

前提条件

在Smartbi中使用存储过程的前提条件是:存储过程必须有结果集返回。


1.Oracle是通过输出参数作为结果集返回的。

2.存储过程的OUT参数只支持游标类型,而且只支持单个输出参数。

 

调用方法说明

在Smartbi中存储过程检测参数的调用方法如下:

数据库类型

存储过程获取参数

Teradata

Teradata JDBC接口没有直接提供获取宏参数和字段的方法,所以是通过执行以下SQL语句数据集获得参数的:

SELECT C.* FROM DBC.TABLES T, DBC.COLUMNS C
WHERE

T.DATABASENAME=? AND T.TABLENAME=? AND

T.TABLEKIND='M'  AND T.DATABASENAME=C.DATABASENAME AND T.TABLENAME=C.TABLENAME

Oracel、DB2等其他数据库

调用JDBC中的标准方法: connection.getMetaData().getProcedureColumns(...)


在Smartbi中存储过程检测结果集的调用方法如下。检测结果集:是在前端弹出界面让用户输入参数后,真正的执行一次存储过程而获得输出字段。

数据库类型

存储过程执行过程

Teradata

调用下面语句执行宏:
connection.prepareStatement("{Exec macroName(?,?)}")

Oracel、DB2等其他数据库

调用JDBC中的标准方法:
connection.prepareCall("{Call procName(?,?)}")

数据库权限要求

数据库类型

数据库权限要求

Teradata

要求连接用户必须具有访问DBC.TABLES、DBC.COLUMNS的权限,及调用Exec方法的权限。

Oracel、DB2等其他数据库

要求连接用户必须具有调用getProcedureColumns和Call方法的权限。


  • 无标签