【问题标题】:Power query conditional max min date电源查询条件最大最小日期
【发布时间】:2016-07-13 13:20:41
【问题描述】:

我正在使用 PowerQuery 2013,但我是新手。

这是我的数据示例:

我需要在市场级别裁剪 Power Query 中的日期,以仅包含重叠的日期范围(不能只删除带有空值的行 - 数据范围内可以有空值)。

我找到了许多使用函数的文章,但我只是不足以让它们适应我的情况。

我尝试创建一个函数(称为 MaxDate),然后在我的数据中创建一个调用此函数的列:

MaxDate函数查询:

(table as table, mkt as text) => Table.Max(Table.SelectRows(table, [Market]=mkt))[Date]

在新列中调用函数:

= Table.AddColumn(Sales, "GetMaxDate", each MaxDate(Sales, [Market])[Date])

这返回了“错误”,我无法解决。我打算生成最小/最大日期列,然后过滤掉超出范围的日期作为最终输出。

【问题讨论】:

    标签: excel-2013 powerquery


    【解决方案1】:

    尝试像这样调整语法:

    (table as table, mkt as text) => Table.Max(Table.SelectRows(table, each [Market]=mkt), "Date") 
    

    【讨论】:

    • 成功了!!!!!!!!!!!!!谢谢!!!! :-) 只有一个怪癖,它返回一个带有“记录”的列,然后我需要展开它以选择日期列(有点像合并表展开)。有没有办法只返回日期值而不是整行?
    • 是的,只需在末尾添加:[Date]{0} - 它会在 [Date] 列中查找第一行的值:(table as table, mkt as text) => Table. Max(Table.SelectRows(table, each [Market]=mkt), "Date") [Date]{0}
    【解决方案2】:

    好的,拍2 ...

    我认为你可能过于复杂了。使用您指示的形状的数据,我将启动一个引用该数据集的新查询。然后,我将按 [市场] 分组并汇总 [日期] 的最大值和最小值。我会将该查询设置为 Load To = Only Create Connection。

    然后我将通过引用原始数据集开始一个新的查询。我会使用 Merge 将其加入刚刚创建的 Max/Min Query,加入 [Market]。然后我会添加一个计算过滤列,例如

    if [Date] = [Min Date] or [Date] = [Max Date]

    最后我会过滤添加的列 - 保留 FALSE 值。

    【讨论】:

    • 谢谢,但这将消除时间轴内带有 null 的行,我只需要切断“结束”。
    • 好的,我不明白这个要求。我已经重写了我的答案。
    • Mike 我试过这个,它需要很长时间,因为我需要使用 2 个大型数据源。通过函数完成它需要大约相同的时间,但实现起来更简单,所以我选择了 ImkeF 的答案。我很感激这些想法! :)
    猜你喜欢
    • 2017-06-21
    • 2020-08-29
    • 2019-04-17
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    相关资源
    最近更新 更多