3

我目前正在尝试使用 Tableau Extract API 从我在 PostgreSQL 数据库中的表中生成一些 TDE。我能够编写代码从单个表生成 TDE,但我想为多个连接表执行此操作。更具体地说,如果我有两个由某个字段内部连接的表,我将如何为此生成 TDE?

我可以看到,如果我使用少量表,我可以使用带有 JOIN 子句的 SQL 查询来创建一个巨大的表,并从该表生成 TDE。

>> SELECT * FROM table_1 INNER JOIN table_2 
   INTO new_table_1 
   ON table_1.id_1 = table_2.id_2;

>> SELECT * FROM new_table_1 INNER JOIN TABLE_3
   INTO new_table_2
   ON new_table_1.id_1 = table_3.id_3

然后从 new_table_2 生成 TDE。

但是,我有一些表有 40 多个不同的字段,所以这可能会变得混乱。

当前版本的 API 甚至有可能吗?

4

3 回答 3

2

您可以根据需要从任意数量的表格或其他来源中读取。或者使用具有大量连接的复杂查询,或者创建一个视图并从中读取。通常,当您有一个连接多个表的复杂查询时,创建视图很有帮助。

数据提取 API 完全不知道您如何或从何处获取数据以提供给它 - 重点是允许您从没有为 Tableau 预构建驱动程序的不寻常来源获取数据。

由于 Tableau 有 Postgres 驱动程序并且可以直接从中读取,因此您根本不需要使用数据提取 API 编写程序。您可以使用 Tableau Desktop 定义数据提取。如果您需要计划数据提取的自动刷新,可以使用 Tableau Server 或其 tabcmd 命令。

于 2013-07-17T17:12:02.323 回答
1

非常感谢您的回复。我知道我可以使用 Tableau Desktop 来定义我的数据提取。事实上,我之前已经做过很多次了。我只是尝试使用 API 创建数据提取,因为我需要创建一些计算字段,而这几乎不可能使用 Tableau Desktop 创建。

此时,我对在 SQL 查询中使用 JOIN 犹豫不决,因为生成的表看起来太复杂而难以理解(其中一些表也具有相同的字段名称)。

当您说我可以从多个表或源中读取数据时,这是否意味着 Tableau Extract API?在这一点上,我在这个 API 中找不到任何地方可以容纳多个来源。例如,我知道当我在 Tableau Desktop 中使用多个表时,左侧有图标告诉我数据提取是由多个表组成的。API似乎没有发生这种情况,这让我陷入困境。无论如何,再次感谢您的回复。

于 2013-07-17T21:56:01.433 回答
1

回到主题,这是我几天前在我的python代码上尝试过的东西

try:
    tdefile= tde.Extract("extract.tde")
except:
    os.remove("extract.tde")
    tdefile = tde.Extract("extract.tde")

tableDef = tde.TableDefinition()

# Read each column in table and set the column data types using tableDef.addColumn
# Some code goes here...    

for eachTable in tableNames:
    tableAdd = tdeFile.addTable(eachTable, tableDef)

    # Use SQL query to retrieve bunch_of_rows from eachTable

    for some_row in bunch_of_rows:
    # Read each row in table, and set the values in each column position of each row
    # Some code goes here...
    tableAdd.insert(some_row)
    some_row.close()

tdefile.close()

当我执行这段代码时,我得到每个表必须被称为“提取”的错误。

当然,这段代码有其缺陷,因为这段代码中没有说明每个表是如何连接的。

所以我在这里有点被抛弃,因为除非我使用 JOIN 生成一个包含所有内容的表,否则我似乎不能使用多个表。

于 2013-07-17T22:18:33.077 回答