如何从 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怎么与sql连接

怎么启动tableau server

Tableau Server 中的直接 SQL Server 连接,业务用户没有数据库的读取权限

从 Tableau Desktop 10 连接到 Tableau Server

SQL Server 不匹配时返回 TableAU 中的所有字段,匹配时只返回 Table