Tableau自定义查询错误

时间:2018-01-25 23:54:38

标签: sql amazon-redshift tableau

尝试对Amazon Redshift运行以下自定义SQL查询到Tableau桌面时,我收到以下错误。我能够预览"在Tableau中,但当我实际尝试将其用作数据源时,它不起作用。

[Amazon] [RedShift ODBC](30)尝试执行查询时出错:ERROR:无效的数字,值' L',Pos 0,类型:Double详细信息:----- ------------------------------------------错误:无效的数字,值和# 39; L',Pos 0,类型:双码:1207上下文:LNDL527501查询:1611757位置:: 0进程:query0_71 [pid = 0] ---------------- ----

 SELECT d.dat, m.merch_id, q1.miles_purchased, q1.total_units, 
            CASE
                WHEN date_diff('day'::text, m.first_trans::timestamp without time zone, d.dat::timestamp without time zone) < 0 THEN 0::bigint
                ELSE date_diff('day'::text, m.first_trans::timestamp without time zone, d.dat::timestamp without time zone)
            END AS days_open
       FROM schemaname.all_dates d
      CROSS JOIN ( SELECT t.merch_id, min(t.transaction_date)::date AS first_trans
               FROM schemaname.transactions t
              GROUP BY t.merch_id) m
       LEFT JOIN ( SELECT t.merch_id, t.transaction_date::date AS trans_date, sum(t.settlement_amt) / 16.5 * 60::numeric AS miles_purchased, sum(t.settlement_amt) / 16.5 AS total_units
          FROM schemaname.transactions t
         GROUP BY t.merch_id, t.transaction_date::date) q1 ON m.merch_id::text = q1.merch_id::text AND d.dat = q1.trans_date;

 - `List item`

1 个答案:

答案 0 :(得分:0)

通过在自定义SQL中对解决方案进行硬编码,然后使用Tableau简单地绘制特定硬编码SQL的结果,您正在努力改善自己(并且效率低下)。

让Tableau生成SQL - 这种方法更加灵活和高效。避免使用自定义SQL - 这是现在极少数情况下所需的选项 - 它可以防止Tableau执行可以使Tableau快速执行的各种查询优化。

要做到这一点,您必须信任该工具并学习使用Tableau概念。它类似于使用高级语言并相信编译器生成准确有效的机器代码。通过学习使用Tableau功能并让它生成查询,您可以在生产力和可移植性方面获得类似的提升。并不是说理解数据库概念和SQL没有帮助。

因此,不是自定义SQL,而是直接连接到当时的事务表,然后学习使用计算字段,过滤器,表格计算,LOD计算和其他功能来进行分析。这些功能可以完成查询尝试的大部分或全部内容。

最后,如果您坚持使用自定义SQL,请尝试从查询中删除尾随分号

相关问题