【问题标题】:Sorting and Flagging the data对数据进行排序和标记
【发布时间】:2019-07-18 17:44:24
【问题描述】:

我在 Amazon Redshift 服务器中有一个巨大的数据集,我需要对数据集进行一些排序和标记(附加示例数据集以供参考)。我需要完成的两个任务:

  1. 我需要按S_Numberdays_difference 升序对数据进行排序
  2. 标记 - 需要创建一个名为 flag 的新列,它应该执行以下步骤:

    • 如果我的第 1 行:S_Number = row -1: S_Number then row -1: Flag +1 else 1

我使用 Alteryx 来提取数据,但我仍然使用 SQL 查询来完成任务。任何帮助都会非常有帮助。

我已经给出了示例输入文件的链接以及预期的输出。让我知道我的问题不清楚。

Sample_Input_File

Expected_Output

【问题讨论】:

  • 到目前为止您尝试过什么,遇到了什么问题?请通过显示几行输入数据和您期望的输出来简化事情。您提供的文件似乎不匹配。例如,输出文件的 s_number 为 5001181943B2,但输入文件中不存在。另外,请尝试更好地解释flag。随时编辑您的问题以提供此信息。
  • 如果您仍然使用 Alteryx 提取数据,那么在 Alteryx 中排序是微不足道的,MuliRow 公式可以使用几乎与您描述的完全相同的语法来分配您的新标志列,尽管您可以按S_Number 并始终将 flag 设置为 row-1:flag + 1。这可能从 0 而不是 1 开始,但很容易。
  • 您好 JohnRotenstein 和 johnjps111 - 感谢您的回复。由于角色限制,无法亲自联系你们感谢并解释场景。我已经在记事本中回答了你的问题,并上传了相同的内容。请看一看。但我认为 Javier Ramirez 已经回答了这个问题。约翰·罗滕斯坦 - dropbox.com/s/xd21vgrdmnvfyw4/Reply_to_John_Rotenstein.txt?dl=0 Johnjps111:dropbox.com/s/0bxl959tmej4mvn/Reply_to_Johnjps111.txt?dl=0

标签: sql amazon-web-services amazon-redshift alteryx


【解决方案1】:

如果我理解正确,您希望对结果进行排序并添加按S_Number 分组的每一行的位置。如果是这样,这在 SQL 和 Redshift 中称为 “窗口函数”,您可以获得与以下查询共享的结果。请注意我没有运行查询,所以它可能有一个小的语法错误(希望不会)。

SELECT timestamp, S_Number, days_difference, ROW_NUMBER () OVER
(PARTITION BY S_Number ORDER BY timestamp ASC) AS Flag
FROM your_table
ORDER BY S_Number ASC, timestamp ASC

【讨论】:

  • 嗨@Javier Ramirez 感谢您的回复,是的,这就是我想要的。我仍然需要验证它。但它可以满足我的要求。再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多