Tableau如何在Redshift上运行查询? (和/或为什么Redshift不能显示Tableau查询?)

时间:2014-07-15 18:48:26

标签: sql amazon-redshift tableau

我在BI工具上踢轮胎,当然包括Tableau。我的部分评估包括将BI工具生成的SQL与我在工具中的操作相关联。

Tableau让我神秘莫测。我的数据库有20亿个东西;但是,无论我在Tableau中做什么,查询Redshift报告已经运行的是"在SQL_CURxyz"中获取10000,即光标操作。在下面的屏幕截图中,您可以看到光标ID已更改,表示正在运行新查询 - 但您不会看到原始查询。

这是Redshift还是Tableau的怪癖?任何想法如何看看实际上在幕后运行的是什么?为什么Tableau总是一次运行10000条记录?

Redshift console

3 个答案:

答案 0 :(得分:10)

我遇到了同样的问题并编写了这个简单的查询来获取当前活动游标的所有查询:

SELECT
    usr.usename                                     AS username
  , min(cur.starttime)                              AS start_time
  , DATEDIFF(second, min(cur.starttime), getdate()) AS run_time
  , min(cur.row_count)                           AS row_count
  , min(cur.fetched_rows)                           AS fetched_rows
  , listagg(util_text.text)
    WITHIN GROUP (ORDER BY sequence)                AS query
FROM STV_ACTIVE_CURSORS cur
  JOIN stl_utilitytext util_text
    ON cur.pid = util_text.pid AND cur.xid = util_text.xid
  JOIN pg_user usr
    ON usr.usesysid = cur.userid
GROUP BY usr.usename, util_text.xid;

答案 1 :(得分:6)

啊,这已在AWS论坛上提出过。

https://forums.aws.amazon.com/thread.jspa?threadID=152473

Redshift的控制台显然没有显示游标背后的查询。为此,您可以查询STV_ACTIVE_CURSORS:http://docs.aws.amazon.com/redshift/latest/dg/r_STV_ACTIVE_CURSORS.html

答案 2 :(得分:3)

此外,您可以更改.TWB文件(实际上只是一个xml文件)并将以下参数添加到odbc-connect-string-extras属性。

  • UseDeclareFetch = 0;
  • FETCH = 0;

你最终会得到类似的东西:

<connection class='redshift' dbname='yourdb' odbc-connect-string-extras='UseDeclareFetch=0;FETCH=0' port='0000' schema='schm' server='any.redshift.amazonaws.com' [...] >

遗憾的是,无法通过应用程序更改此行为,您必须直接编辑该文件。

您应该了解这样做的性能影响。虽然这极大地增强了调试功能,但Tableau选择不允许通过应用程序修改这些参数的原因。