2017-08-03 27 views
0

我有三个SQL查询结果批量保存在SQL Server数据库中的三个临时表中,但这些临时表似乎在从tableau连接到数据库时无法在tableau中使用。如何从SQL Server或Tableau Desktop加载临时表?

例如:

从主台

insert into #p 
    select * 
    from Persons 
    where PersonID in (1, 2, 3); 

创建临时表#P

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

值插入#p连接到在画面的#p SQL Server数据源之后临时表没有显示在表中。是否有任何可能的方式,我可以使用tableau中的临时表作为仪表板?如果不善意建议一些关于如何在仪表板中提供这些临时表的方法。

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

回答

1

本地临时表是会话作用域(这意味着它们只在生成它们的同一会话中可见)。

你可以用全局临时表(SQL服务器在其名称前使用##)或普通表试试,如果你希望他们能在其他会话中可见......

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

+0

@ mauro..thank你这么多您的快速回复! –

+0

@ mauro ..非常感谢您的快速回复!我清楚地得到您的答案...但我所谈论的问题是我们的办公数据库中的旧批量sql查询,如果我们对普通表进行更改,这可能会中断。 ..所以你可以建议在tableau仪表板中使用这个临时表吗? –

+0

@DeviVijayakumar你可以尝试使用Glabal Temp Tables,假设当Tableau会话读取相同的全局临时表 – mauro

1

临时表(包括全局临时表)将在没有更多连接访问时自动删除。据说,有几种方法可以实现您在Tableau中尝试执行的操作。

1.临时表

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

enter image description here

2.存储过程

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

enter image description here

+0

非常感谢您帮助我解决问题。即使数据库在SQL服务中处于非活动状态,也可以在Tableau中访问此过程......就像断开连接一样目前的连接!! –

+0

@DeviVijayakumar,如果您需要您的数据可以离线访问,请查看Tableau提取 –