如何从SQL Server或Tableau Desktop加载临时表?

时间:2017-08-03 03:42:07

标签: sql-server tableau

我在SQL Server数据库的三个临时表中批量保存了三个SQL查询结果,但是从tableau连接到数据库时,这些临时表似乎在tableau中不可用。

例如:

创建临时表#p

CREATE TABLE #p 
(
    PersonID int,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255) 
);

从主表

中将值插入#p
insert into #p 
    select * 
    from Persons 
    where PersonID in (1, 2, 3);

连接到tableau中的SQL Server数据源后,#p临时表未显示在表列表中。有没有办法在tableau中使用临时表作为仪表板?如果没有建议如何在仪表板中提供这些临时表的一些替代方案。

过去几天我一直在努力解决这个问题,所以希望很快能听到你们的一些建议。谢谢你们!

2 个答案:

答案 0 :(得分:1)

本地临时表是会话范围的(这意味着它们仅在生成它们的同一会话中可见)。

您可以尝试使用全局临时表(SQL Server在其名称前面使用##)或普通表,如果您希望它们在其他会话中可见...

当生成它们的会话关闭时,本地和全局临时表都将消失。

答案 1 :(得分:1)

当没有更多连接访问它们时,将自动删除临时表(包括全局临时表)。话虽如此,有几种方法可以实现您在Tableau中尝试做的事情。

<强> 1。具有临时表的初始SQL

Tableau有一个初始SQL&#39;定义连接时可以选择的选项。每次Tableau与服务器建立连接时,都会执行这些语句。请注意临时表是在tempdb中创建的;所以你必须将数据库更改为tempdb。您还必须在SQL中使用完全限定的表名。请特别注意突出显示的区域。

enter image description here

<强> 2。存储过程

如果您有足够的访问权限,则可以将查询创建为存储过程并从Tableau中调用它。存储过程将显示为表格下的单独部分。

enter image description here