在powerquery中使用公式定义要过滤的列

问题描述 投票:0回答:1

我有一个 excel 源文档,其中包含任务列表和每个工作日的一列,其中包含任务运行的时间。 我想创建另一个从多个来源提取信息并合并数据的文档。 我的问题是如何只选择今天需要运行的任务。

我创建了下面的代码;其中 dayname 应返回每天的前 3 个字母(这些是源文档表中的标题)。然后我过滤该列的非空值。

let
    Source = Excel.Workbook(File.Contents("C:\document.xlsx"), null, true),
    Table1_Table = Source{[Item="Table1",Kind="Table"]}[Data],
    dayname= Text.Start(Date.DayOfWeekName(),3),
    #"Changed Type" = Table.TransformColumnTypes(Table1_Table,{{"Task", type text}, {"Mon", type any}, {"Tue", type any}, {"Wed", type any}, {"Thu", type any}, {"Fri", type any}, {"Sat", type datetime}, {"Sun", type datetime}}),
    #"Filtered Rows" = #!"Table.SelectRows(#""Changed Type"", each ([#dayname] <> null))"
in
    #"Filtered Rows"

编辑: 示例源数据

|任务 |周一|周二|星期三| | ------| -----|----|-------- | |第一|早上 6 点| |早上 6 点 | |其他|凌晨 5 点|凌晨 5 点 |凌晨 5 点 | | xxx|早上 7 点|早上 8 点 |上午 9 点 | 星期二的示例结果 |任务|今天| | ---| ---| |其他|凌晨 5 点| | xxx|早上 8 点|

/编辑

excel powerquery m
1个回答
0
投票

如果您加载数据然后取消透视。 天列标题将旋转成一列。 然后可以按当前日期过滤该列作为三个字母的日期名称。

let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"task ", type text}, {"mon ", type time}, {"tue", type time}, {"wed", type time}}),
#"Unpivoted Other Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"task "}, "Attribute", "Value"),
#"Filtered Rows" = Table.SelectRows(#"Unpivoted Other Columns", each ([Attribute] = 
Text.Start(
    Text.Lower(
        Date.DayOfWeekName(
            DateTime.Date(DateTime.LocalNow())
        ,"en-us")
    )
,3)))

在 #“过滤行”

© www.soinside.com 2019 - 2024. All rights reserved.