【问题标题】:How to load a temporary table from SQL Server or Tableau Desktop?如何从 SQL Server 或 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 中的临时表用于仪表板?如果不是,请就如何使这些临时表在仪表板中可用提出一些替代方案。

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

【问题讨论】:

    标签: sql-server tableau-api


    【解决方案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 数据提取
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 2017-03-31
    相关资源
    最近更新 更多