如何从 SQL Server 或 Tableau Desktop 加载临时表?
Posted
技术标签:
【中文标题】如何从 SQL Server 或 Tableau Desktop 加载临时表?【英文标题】:How to load a temporary table from SQL Server or Tableau Desktop? 【发布时间】:2017-08-03 03:42:07 【问题描述】:我在 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 中的临时表用于仪表板?如果不是,请就如何使这些临时表在仪表板中可用提出一些替代方案。
过去几天我一直在努力解决这个问题,所以希望尽快听到你们的一些建议..谢谢!
【问题讨论】:
【参考方案1】:本地临时表是会话范围的(这意味着它们仅在生成它们的同一会话中可见)。
如果您希望它们在其他会话中可见,您可以尝试使用全局临时表(SQL Server 在其名称前使用##)或普通表...
本地和全局临时表都将在它们生成的会话关闭时消失。
【讨论】:
@mauro..非常感谢您的快速回复!我清楚地得到了您的答案...但我正在谈论的问题是我们办公室数据库中的旧批量 sql 查询,如果我们对普通表进行了更改...所以您可以建议在 tableau 仪表板中使用此临时表的任何可能的替代方法吗? @DeviVijayakumar 您可以尝试使用 Glabal 临时表,假设当 Tableau 会话读取相同的全局临时表时生成它们的会话仍然存在 抱歉这么说..我尝试了全局临时表,它也有类似的问题,即使会话处于活动状态,也没有反映在 tableau 表列表中..:-(【参考方案2】:临时表(包括全局临时表)将在没有更多连接访问时自动删除。话虽如此,有几种方法可以实现您在 Tableau 中尝试做的事情。
1.带有临时表的初始 SQL
Tableau 有一个“初始 SQL”选项,您可以在定义连接时选择该选项。每次 Tableau 连接到服务器时,都会执行这些语句。请注意临时表是在 tempdb 中创建的;所以你必须将数据库更改为 tempdb。您还必须在 SQL 中使用完全限定的表名。请特别注意突出显示的区域。
2。存储过程
如果您有足够的访问权限,则可以将查询创建为存储过程并从 Tableau 中调用它。存储过程将在您的表格下显示为单独的部分。
【讨论】:
非常感谢您帮助我。只是怀疑这个过程是否可以在 Tableau 中访问,即使数据库在 SQL 服务中处于非活动状态..就像我暂时断开连接一样!!跨度> @DeviVijayakumar,如果您需要离线访问数据,请查看 Tableau 数据提取以上是关于如何从 SQL Server 或 Tableau Desktop 加载临时表?的主要内容,如果未能解决你的问题,请参考以下文章
Tableau 与 Microsoft SQL Server 2017 的连接
Tableau Server 中的直接 SQL Server 连接,业务用户没有数据库的读取权限