PowerBI Folding on Native Query 基于 AWS Athena 查询-增量刷新
Posted
技术标签:
【中文标题】PowerBI Folding on Native Query 基于 AWS Athena 查询-增量刷新【英文标题】:PowerBI Folding on Native Query based on AWS Athena query-incremental refresh 【发布时间】:2020-12-21 12:05:39 【问题描述】:为了设置增量刷新,我试图确定 AWS Athena 查询是否成功折叠在 PowerBI 中的本机查询上。我创建了参数,在这些参数上过滤了我的日期时间列,并尝试了诊断工具(从 4:50 开始,请参阅https://www.youtube.com/watch?v=QEFze-LdLqo),但它继续运行并且没有显示任何结果。所以,我正在尝试在高级编辑器中查询的方法(https://www.youtube.com/watch?v=KEh2Udm6ibA&feature=youtu.be 20:00 起)。但是由于这个示例是在 SQL 中,并且我正在使用 AWS Athena,所以我不断收到错误消息。以下是我迄今为止尝试过的高级编辑器查询:
示例 1:
> let
> Source = Odbc.Query("dsn=Simba Athena", "SELECT * FROM ""databasename"".""tablename"" where StartTimeCET>= ' " &
> DateTime.From(RangeStart) & "' and StartTimeCET< '" &
> DateTime.From(RangeEnd) & "' ") in Source
错误:我们无法将运算符 & 应用于 Text 和 DateTime 类型。
示例 2:
> let
> Source= Odbc.Query("dsn=Simba Athena", "SELECT * FROM ""database"".""tablename""
> where StartTimeCET>= ' " DateTime.From(RangeStart) "' and
> StartTimeCET< '" DateTime.From(RangeEnd) "' ")
错误:应使用令牌逗号。
示例 3:
let
Source = Odbc.Query("dsn=Simba Athena", "SELECT * FROM ""database"".""tablename"" where StartTimeCET>= ' "" &
Text.From(RangeStart) & ""' and StartTimeCET < '"" & Text.From(RangeEnd) & "" ' ") in Source
错误:异常解析查询 SELECT * FROM ""database"".""tablename"" where StartTimeCET>= ' " & Text.From(RangeStart) & "' and StartTimeCET
关于如何为 AWS Athena 编写这样的高级编辑器查询有什么想法吗?为了简化,我想根据 RangeStart 和 RangeEnd 参数过滤 PowerBI 中的高级编辑器查询。参数和 StartTimeCET 列都是日期/时间类型。
【问题讨论】:
您能否确认这些查询是否到达了 Athena ?您可以在 Athena 历史控制台中查看这一点。 当我删除参数的 where 条件时,它们会到达雅典娜。它们不适用于 where 条件 第一个错误尝试community.powerbi.com/t5/Desktop/… 【参考方案1】:我想我解决了错误,但仍然无法“查看本机查询”。
您可以通过使用 Presto 语法编写并使用具有适当日期格式的 DateTime.ToText() 函数来传递手动 Athena 直接查询步骤,即
Odbc.Query("dsn=Simba Athena",
"SELECT * FROM tablename
WHERE StartTimeCET >= TIMESTAMP '" & DateTime.ToText(RangeStart, "yyyy-MM-dd") & "'
AND StartTimeCET < TIMESTAMP '" & DateTime.ToText(RangeEnd, "yyyy-MM-dd") & "'
")
编辑: 我想我已经设法使用 Athena 在 Power BI 中实现了“增量负载”。这(仍然)不允许您查看本机查询,但您仍然可以让 Power BI 操纵直接查询来实现它。
为避免在 Athena 中全面扫描 S3 数据 - 您必须在数据集中启用 Partitions。 在不偏离主题的情况下,一旦通过 Athena 对 S3 数据进行分区,您就可以用天/月/年精确定位数据集,而无需扫描整个数据集。
完成此操作后,您可以通过运行您分享的上一个视频链接中提到的直接查询来实现增量负载,并实现资源高效的查询执行。
最终的查询看起来像 -
Odbc.Query("dsn=Simba Athena",
"SELECT * FROM tablename
WHERE year >= " & DateTime.ToText(RangeStart, "yyyy") & "
AND month >= " & DateTime.ToText(RangeStart, "MM") & "
AND day >= " & DateTime.ToText(RangeStart, "dd") & "
AND year <= " & DateTime.ToText(RangeEnd, "yyyy") & "
AND month <= " & DateTime.ToText(RangeEnd, "MM") & "
AND day <= " & DateTime.ToText(RangeEnd, "dd") & "
")
希望这会有所帮助:-)
【讨论】:
以上是关于PowerBI Folding on Native Query 基于 AWS Athena 查询-增量刷新的主要内容,如果未能解决你的问题,请参考以下文章