【问题标题】:How does Tableau run queries on Redshift? (And/or why can't Redshift display Tableau queries?)Tableau 如何在 Redshift 上运行查询? (和/或为什么 Redshift 不能显示 Tableau 查询?)
【发布时间】:2014-09-06 02:26:10
【问题描述】:

我对 BI 工具很感兴趣,当然包括 Tableau。我的部分评估包括将 BI 工具生成的 SQL 与我在工具中的操作相关联。

Tableau 让我迷惑不解。我的数据库有 20 亿个东西;但是,无论我在 Tableau 中做什么,Redshift 报告的已运行查询都是“Fetch 10000 in SQL_CURxyz”,即游标操作。在下面的屏幕截图中,您可以看到光标 ID 发生变化,这表明正在运行新查询 - 但您看不到原始查询。

这是 Redshift 还是 Tableau 的怪癖?知道如何查看引擎盖下实际运行的内容吗?为什么 Tableau 总是一次处理 10000 条记录?

【问题讨论】:

    标签: sql amazon-redshift tableau-api


    【解决方案1】:

    啊,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】:

      此外,您可以更改您的 .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 选择不允许通过应用程序修改这些参数一定是有原因的。

      【讨论】:

        【解决方案3】:

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

        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;
        

        【讨论】:

        • 完美提供光标后面的查询!
        • 您还可以通过在pidxid 上加入STL_UTILITYTEXT 来查看已完成游标后面的查询,以sequence 排序
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-04-07
        • 1970-01-01
        • 2020-04-10
        • 1970-01-01
        • 2021-10-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多