Excel数据模型: Return last non blank

标签 excel powerbi powerquery powerpivot

我正在努力只获取每张票证的最后一个非空白值。
在 Power Pivot 测量中,我使用了函数 LASTNONBLANK() ,但结果并不可靠 - 可能是因为数据模型没有考虑行的原始顺序。
Excel 公式或 VBA 不是一个选项,我认为在 Power Query 中效率不会很高。

<表类=“s-表”> <标题> 门票 <第>步 时间戳 值 <正文> 1 1 2021年7月28日下午4:15 1 2 2021年7月28日下午4:23 一个 1 3 2021年7月28日下午4:30 1 4 2021年7月28日下午4:37 b 1 5 2021年7月28日下午4:44 1 6 2021年7月28日下午4:51 1 7 2021年7月28日下午4:59 2 1 2021年7月29日下午1:51 一个 2 2 2021年7月29日下午2:49 b 2 3 2021年7月29日下午3:47 c 2 4 2021年7月29日下午4:44 2 5 2021年7月29日下午5:42 一个 2 6 2021年7月29日下午6:39

对于票证“1”,返回值应为“b”(步骤 4),对于票证“2”,返回值应为“a”(步骤 5)。

<表类=“s-表”> <标题> 门票 值 <正文> 1 b 2 一个

最佳答案

特别是由于数据已排序,因此在 Power Query 中非常简单:

  • 删除空白值行
  • 按票号分组
    • 返回每组中的最后一个值

(如果没有排序,您只需为 Group 中的每个子表添加排序即可)

M代码

let
    Source = Excel.CurrentWorkbook(){[Name="Table28"]}[Content],

    #"Changed Type" = Table.TransformColumnTypes(Source,{
        {"ticket", Int64.Type}, 
        {"step", Int64.Type}, 
        {"timestamp", type datetime}, 
        {"value", type text}}),

    #"Filtered Rows" = Table.SelectRows(#"Changed Type", each ([value] <> null)),
 
    #"Grouped Rows" = Table.Group(#"Filtered Rows", {"ticket"}, {
        {"Last Non-Blank", each List.Last([value])}
        })

in
    #"Grouped Rows"

enter image description here

关于Excel数据模型: Return last non blank,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68618645/

相关文章:

excel - Power Query -> 将逗号转换为句点并获取十进制数

vba - 同一个文件在两台不同的计算机上怎么会得到不同的结果呢?

vba - 在运行时创建多页崩溃 excel

powerbi - Power BI计算不包括周末和非工作时间的时差

xml - 将简单的 XML 导入 Power BI

excel - 文本字符串中单词的唯一计数

vba - 用于合并数据的 Excel 宏

从 TXT 文件创建的 VBA 记录集返回 Null 值 (Excel 2013)

powerbi - 从 ASA 到 Power BI Map 的实时位置数据

angular - 使用 Angular 7 的 Power BI 嵌入式报告中的下载、打印选项