【问题标题】:Power query - Group a table based on the date and the hourly interval电源查询 - 根据日期和每小时间隔对表进行分组
【发布时间】:2022-01-22 05:23:46
【问题描述】:

我需要使用 Sum 根据日期和每小时间隔对表格进行分组:

  • 日期
  • 间隔:从今天早上 8 点到今天

以前我使用 MS Access 和一个查询来创建它。现在我需要通过 MS Excel 中的 Power Query。

这是之前使用的 SQL 查询: SELECT switch(Tbl_Prod_Chat.[Interval]>=8,Tbl_Prod_Chat.[Date],Tbl_Prod_Chat.[Interval]=8,Tbl_Prod_Chat.[Date],Tbl_Prod_Chat.[Interval]

建表如下:

  • 字段 1“日期”(类型/格式:mm/dd/yyyy)
  • 字段 2“间隔”(类型:整数):1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16、17、18 , 19, 20, 21, 22, 23, 0
  • 字段 3“联系数量”(类型:整数)

新表将是:

  • 字段 1“日期”
  • 字段 2“总交易量”(从今天上午 8 点到今天上午 8 点+1 的 24 小时总和)。

你能帮我解决这个问题吗? 谢谢

Seb

【问题讨论】:

    标签: powerquery m


    【解决方案1】:

    听起来您只需要添加一个自定义列

    添加列..自定义列...

    =  if [Interval] >7 or [Interval]=0 then [Date] else Date.AddDays([Date],-1)
    

    或

    = if [Interval] <8 and [Interval] > 0 then Date.AddDays([Date],-1) else [Date]
    

    这将花费所有时间 [8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,0] 并使用当前日期并将从下一个日期开始计算所有时间 [1,2,3,4,5,6,7]。

    然后在该新的自定义列上右键单击 ... Group By .. 并在列上执行求和操作:联系量,在新列名称中使用您想要的任何名称

    示例完整代码

    let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Date", type date}, {"Interval", Int64.Type}, {"Volume of contact", Int64.Type}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each if [Interval] >7 or [Interval]=0 then [Date] else Date.AddDays([Date],-1), type date),
    #"Grouped Rows" = Table.Group(#"Added Custom", {"Custom"}, {{"Volume of Contact", each List.Sum([Volume of contact]), type number}})
    in #"Grouped Rows"
    

    【讨论】:

    • 太棒了!!谢谢@horseyride!!
    • 很高兴这有帮助。请切换上/下箭头旁边的复选标记以将答案标记为已接受
    猜你喜欢
    • 2014-12-23
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多