【问题标题】:How to find last 7 days records using pig latin?如何使用猪拉丁语查找最近 7 天的记录?
【发布时间】:2014-04-13 03:56:33
【问题描述】:

我是 Pig latin 的初学者。我需要从 csv 中找到最近 7 天的记录,其中包含最近 4 年的数据。

谁能帮助我理解这一点。

【问题讨论】:

  • 您的日期或时间戳列/列的格式是什么?您需要每个密钥或任何密钥的最后 7 天吗?

标签: apache-pig records latin


【解决方案1】:

更通用的方法是比较每一行数据并检查它是否超过 7 天? 为此,我们需要捕获每行数据中的日期。设数据集为关系数据集,列字段为chararray类型的日期。

在 Pig 0.11 中,您可以使用 ToDate() 函数将日期字段从 chararray 转换为 datetime 数据类型,然后使用 DaysBetween() 获取 CurrentTime() 和日期之间的差异并根据它进行过滤。例如:

lastSevenDaysRec = FILTER dataSet BY DaysBetween(CurrentTime(), ToDate(date, 'yyyy MM dd')) <= 7

您可以查看following documentation,详细了解 Pig Latin 中不同的日期时间函数。您还可以查看 ToDate 函数中使用的有效格式

【讨论】:

    【解决方案2】:

    假设你的数据集是 A 并且每天有一行,并且它有一个名为 date 的字段,你可以尝试类似这样的操作:

    B = GROUP A BY date;
    B = ORDER A BY group DESC;
    B = LIMIT B BY 7;
    

    然后,您会将过去 7 天的记录按日期分组。

    【讨论】:

    • 如果每个日期有 1000 条记录会怎样?
    • 已解决。一开始你只需要一组。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多