Page tree
Skip to end of metadata
Go to start of metadata

有这样两类需求,可能需要用到临时表。

1)主要的查询数据在Oracle数据库中,而在查询时需要关联的另外一个表却在SQL Server数据库中,Smartbi中查询数据时是没法直接跨库关联的,因此我们需要将SQL Server库中的表抽取到Oracle的一临时表中,便于关联查询。

2)在数据库中有一个超大的上亿条记录的数据表,查询时还需关联多张表,查询效率极低,可能需要几分钟,甚至更长时间。一个可能的解决方案就是,把复杂查询的数据,先定时抽取到一个临时表中,减少数据量,在此基础上再去查询,即可极大地改善查询效率。

上述两种情况,在Smartbi中都可以通过计划任务,将数据集数据先定时抽取到联合数据源的临时表中,然后再进行查询。完整的操作步骤描述如下:

 

1. 先决条件:创建一个联合数据源。如果已经有了联合数据源,直接跳转到步骤3。在“ 数据源”节点上点击鼠标右键,点击“联合数据源”菜单项。

    

 

2. 如下图所示,填入联合数据源数据库的连接信息。

   

 

Icon

注意:这里所使用的数据库“用户名”,必须拥有在数据库中创建表、更新数据的权限。因为它需要自动创建临时表,并插入数据。

 

3. 在“资源定制”节点,右键选择 新建查询>原生SQL查询。输入SQL语句后,点击工具栏上的“保存”按钮。

  

4. 接着点击工具栏上的“创建临时表”按钮。注意:必须先“保存”之后,工具栏上才会出现“创建临时表”按钮。在出现的“创建临时表”对话框上填入联合数据源、Schema、临时表名称、临时表别名等信息。接着点击“生成SQL”按钮,然后再点击“保存”按钮,并关闭对话框。

  

5. 回到联合数据源节点下,确认上一步的“临时表”是否已经创建成功。

  

6. 接下来,在“计划任务”节点,点击“新建任务”按钮。在“新建任务”页面上,“任务类型”选择“表数据填充”。然后在下方的“表数据填充设置”中分别选择对应的联合数据源、Schema、表。点击右下角的“保存”按钮,关闭该页面。

  

7. 再点击“新建计划”按钮,在出现的“新建计划”页面上填入如下信息。“待执行任务”,选择前一步所创建的任务。然后设置间隔类型、生效范围、运行设置等信息。点击右下角的“保存”按钮,关闭该页面。

  

8. 至此,所有工作全部完成了。等待所设置的任务“触发时间”过了之后,直接查询第5步中的临时表,确认其中是否已正确插入数据。

 

 

  • No labels