生成最小和最大日期之间的日期范围 Athena presto SQL 序列错误

2024-01-29

我正在尝试使用 Presto SQL (Athena) 生成一系列日期unnest and sequence类似的东西generate_series在 postgres 中。

我的桌子看起来像

job_name | run_date     
A        | '2021-08-21'
A        | '2021-08-25' 
B        | '2021-08-07' 
B        | '2021-08-24' 


SELECT d.job_name, d.run_date
FROM (
     VALUES
        ('A', '2021-08-21'), ('A', '2021-08-25'),
        ('B', '2021-08-07'), ('B', '2021-08-24')
         ) d(job_name, run_date)

我的目标是输出如下

job_name |   run_date
       A | 2021-08-21
       A | 2021-08-22
       A | 2021-08-23
       A | 2021-08-24
       A | 2021-08-25
       B | 2021-08-07
       B | 2021-08-08
       B | 2021-08-09
       B | 2021-08-10
       B | 2021-08-11
       B | 2021-08-12
       B | 2021-08-13
       B | 2021-08-14
       B | 2021-08-15
       B | 2021-08-16
       B | 2021-08-17
       B | 2021-08-18
       B | 2021-08-19
       B | 2021-08-20
       B | 2021-08-21
       B | 2021-08-22
       B | 2021-08-23
       B | 2021-08-24

我尝试使用以下查询来实现此目的 - 但是在尝试取消嵌套日期序列时出现错误

SELECT t.job_name, d.dte
FROM (SELECT job_name
        ,    min(run_date) as mind
        ,    max(run_date) as maxd
        ,    SEQUENCE(min(run_date), max(run_date)) as date_arr
     FROM job_log_table t
     GROUP BY job_name
  )  jd
CROSS JOIN
    UNNEST(jd.date_arr) d(dte)
LEFT JOIN job_log_table t 
    ON t.job_name = jd.job_name
    AND t.latest_date = d.dte;

这会产生以下错误:

[HY000][100071] [Simba][AthenaJDBC](100071) An error has been thrown from the AWS Athena client. [ErrorCategory:USER_ERROR, ErrorCode:SYNTAX_ERROR], Detail:SYNTAX_ERROR: line 5:14: Unexpected parameters (date, date) for function sequence. Expected: sequence(bigint, bigint, bigint) , sequence(bigint, bigint) , sequence(timestamp, timestamp, interval day to second) , sequence(timestamp, timestamp, interval year to month)

这是 Athena 的 Presto SQL 风格的限制还是我在某个地方犯了一个小学生错误?


您需要提供interval生成日期序列(在本例中interval '1' day):

WITH dataset AS (
  SELECT * 
  FROM 
    ( VALUES      
        ('A', DATE '2021-08-21'), ('A', DATE '2021-08-25'),
        ('B', DATE '2021-08-07'), ('B', DATE '2021-08-24')
    ) AS d (job_name, run_date)
) 

select job_name, sequence(min(run_date), max(run_date), interval '1' day) seq
from dataset
group by job_name

Output:

job_name seq
A [2021-08-21 00:00:00.000, 2021-08-22 00:00:00.000, 2021-08-23 00:00:00.000, 2021-08-24 00:00:00.000, 2021-08-25 00:00:00.000]
B [2021-08-07 00:00:00.000, 2021-08-08 00:00:00.000, 2021-08-09 00:00:00.000, 2021-08-10 00:00:00.000, 2021-08-11 00:00:00.000, 2021-08-12 00:00:00.000, 2021-08-13 00:00:00.000, 2021-08-14 00:00:00.000, 2021-08-15 00:00:00.000, 2021-08-16 00:00:00.000, 2021-08-17 00:00:00.000, 2021-08-18 00:00:00.000, 2021-08-19 00:00:00.000, 2021-08-20 00:00:00.000, 2021-08-21 00:00:00.000, 2021-08-22 00:00:00.000, 2021-08-23 00:00:00.000, 2021-08-24 00:00:00.000]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

生成最小和最大日期之间的日期范围 Athena presto SQL 序列错误 的相关文章

随机推荐

  • Docker:如何重新启动容器内的进程?

    我有一组测试 我想在 docker 容器上运行 在测试过程中 我正在更改测试数据 并且需要重新启动 JETTY 最好的方法是什么 我可以想象一些选择 使用 SSH 但对于 docker 来说 ssh 并不是最好的选择 docker 上的 P
  • 使用 sorttable.js 对表自动排序

    我正在尝试使用此脚本对 html 表进行排序 http www kryogenix org code browser sorttable http www kryogenix org code browser sorttable JS代码本
  • event.preventDefault();提交表单时不起作用

    我正在尝试将提交的表单的结果放入div而不是在新窗口中打开它 问题是我的event preventDefault 似乎不起作用 我不明白为什么 结果 在我点击提交按钮后总是打开contact form handler php 这是脚本文件
  • 在 Delphi 中使用 SSL 但仍然只有一个 exe

    我们使用 Indy 并且需要在我们的应用程序中支持 SSL 电子邮件 但是我们需要将我们的应用程序放在单个 Exe 中 我们知道默认的 Indy 处理程序要求路径中包含 dll 从 EXE 资源之一中提取 Dll 将是最后的手段 还有更好的
  • CIColorControls 和 UISlider w/Swift 4 [重复]

    这个问题在这里已经有答案了 我试图让滑块影响 UIImageView 的亮度 我的出路和行动 IBOutlet weak var previewImage UIImageView IBAction func adjustBrightness
  • AngularJs 嵌套 ng-repeat 过滤器

    我有一个要过滤的分组嵌套对象 该过滤器仅适用于第二组
  • 如何查找sql​​ server中一个表的所有依赖关系

    我有一个数据库 其中有表 过程 视图和触发器的列表 但我想要一个查询来获取表的所有依赖项 包括引用父表的子表 我们可以使用以下方法来检查依赖关系 方法一 使用sp depends sp depends dbo First GO 方法二 使用
  • SQL Server 自动标识字段的最大大小

    SQL Server 标识字段 int 的最大大小是多少 我每天会在几个表中多次删除和插入数百条记录 我很好奇这会对自动身份字段产生什么影响 我可以每天晚上左右运行一项作业 并根据需要截断这些数据 我很感激你的想法 谢谢 INT 最多可达
  • 圆形 div 中的文本溢出

    我有一个圆形 div 但我的文本不在其中 默认情况下它略高于我无法查明原因 我在顶部添加了边距以将其强制放在 div 内 但我确信有更好的方法来执行此操作 因为我的方法仅适用于一定数量的文本 div description display
  • 如何在C/C++中存储和调用已编译的函数?

    对于非常低级别的优化目的 如果我可以将编译后的函数直接存储在变量中 这对我很有用 not指向函数的指针 也就是说 如果我有一个函数 foo 我想创建一个足够大的 char 缓冲区来容纳为 foo 生成的机器指令 然后能够通过某种方式告诉 C
  • 将值从 for 循环转换为 json 格式

    下面是一个 for 循环的片段 我在其中对 txt 文件名进行排序 然后我尝试将结果保存在 json 格式文件中 但是 由于最后一个原因 它会导致无效的 json 格式 插入obj 我如何将 for 循环中的值转换为 json 格式 scr
  • PHP MySQLi OOP 中“->”和“::”的区别

    谁能说出两者之间的区别mysqli gt commit and mysqli commit 标头在这一页 http php net manual en mysqli commit php is mysqli commit 但在示例中他们使用
  • JSTL 访问哈希图中的整数/长键

    我在 JSTL 中使用 EL 时遇到一些问题 无法按照我的意愿访问 Java Hash Map 我知道在 EL 中 如果 Integer 被作为 Long 访问 则该键是关键 我尝试在 JSTL 中访问以下哈希映射定义 Map
  • Mocha 测试的伊斯坦布尔代码覆盖率

    我正在努力让伊斯坦布尔运转起来 在伊斯坦布尔跑步结束时 我不断收到此消息 未收集覆盖范围信息 退出而不写入覆盖范围 信息 我已经尝试了网上能找到的所有方法 如您所见 scripts start node bin start js test
  • 以特定格式将“词典的词典”写入 .csv 文件

    我正在从多个 csv 文件生成一个字典 它看起来像这样 示例 dtDict AV IM 1 13991730 6 1 2014 0 10 0 96 6 1 2014 0 15 0 92 6 1 2014 0 20 0 97 AV IM 1
  • Admob 显示测试广告,但不显示真实广告

    我正在使用 admob 来展示 Android 广告 测试广告运行良好 但未显示真正的广告 另外 我对真正的插页式广告没有任何问题 因为它们工作得很好 只是真正的横幅广告没有出现 我的java代码是 private Interstitial
  • 在传递给模拟函数的参数上调用成员函数的最简单方法是什么?

    给定接口 class IFooable virtual void Fooable 0 class IFoo virtual void Foo IFooable pFooable 0 和古尔模拟模拟 class TMockFoo public
  • IIS7:像 IIS6 一样设置集成 Windows 身份验证

    这适用于不属于 AD 域的 Windows Server 2008 上的 IIS 7 我想用密码保护一个网站 人们必须输入用户名 密码 例如 Windows 帐户 才能查看该网站 然后 网站将使用自己的身份验证方法 表单 来处理用户帐户并决
  • Ruby 中数组 * 字符串是什么意思?

    我正在查看一些 Rails 源代码并发现 File vendor rails activesupport lib active support vendor builder 2 1 2 builder css rb line 129 129
  • 生成最小和最大日期之间的日期范围 Athena presto SQL 序列错误

    我正在尝试使用 Presto SQL Athena 生成一系列日期unnest and sequence类似的东西generate series在 postgres 中 我的桌子看起来像 job name run date A 2021 0