快速查看将嵌套添加到SQL查询中会导致Athena错误

时间:2018-12-14 17:41:04

标签: amazon-athena presto amazon-quicksight

我正在尝试在Quicksight中创建非常简单的可视化效果,为此,我在Quicksight中使用了SQL查询,

SELECT COUNT(distinct uuid), day
FROM analytics.myTable
GROUP BY day

不幸的是,每当我在Quicksight中运行此查询时,由于以下错误,该查询都会失败

  

来自AWS Athena客户端。 SYNTAX_ERROR:第2:8行:“ _ col0”列   无法解决

当我查看Athena时,我可以看到Quicksight正在“嵌套” SQL查询...这就是导致Athena中错误的原因,

/* QuickSight 4da449cf-ffc6-11e8-92ea-9ffafcc3adb3 */
SELECT "_col0"
FROM (SELECT COUNT(distinct uuid)
FROM pregnancy_analytics.final_test_parquet) AS "DAU"

我不明白的是: a)为什么这会标记错误? b)为什么Quicksight会嵌套SQL?

如果我只是直接在Athena中运行命令,

SELECT COUNT(distinct uuid) FROM analytics.myTable

它确实显示了列名“ _col0”,

    _col0
1   1699174

因此,Quicksight引发错误的事实实际上应该不是问题。

有人可以提供一些有关如何解决此问题的建议吗?

谢谢

2 个答案:

答案 0 :(得分:2)

您可以修改查询以显式命名聚合列,然后查询将起作用。

示例:

SELECT COUNT(distinct uuid) as "distinct_uuid", day
FROM analytics.myTable
GROUP BY day

答案 1 :(得分:0)

通常在可视化软件中,您将需要显式地命名聚合/函数包装的列,因为它们默认为_col0之类的东西,该软件无法很好地解析,因此会引发该错误。

具体地说,我一直在使用Presto在Superset中看到这一点。

对于您的问题,您应该按照Piotr的建议进行操作,即在COUNT(distinct uuid)之后添加一个名称-我偏爱freq,但看起来您会想要uuid或unique_uuid之类的东西:)