首页 > 解决方案 > 编辑 excel 查询以与 powerbi 查询配合使用

问题描述

我有需要在 powerbi 中制作的 excel 报告。现在我对最后一个查询还有 1 个问题。在 excel 中有一个“列表”表,其中包含各种随机数据(例如文档路径、计算日期等,它们都是非常随机的)。

在查询中,我有一行:

#"Filtered Rows1" = Table.SelectRows(#"Added Items", each Cube.AttributeMemberId([#"Date - Time.Year"]) = Text.Combine({"[Time].[Time].[Calendar Year].&[", Number.ToText(Date.Year(Excel.CurrentWorkbook(){[Name="Request"]}[Content]{0}[end])),"]"}) meta [DisplayName = Number.ToText(Date.Year(Excel.CurrentWorkbook(){[Name="Request"]}[Content]{0}[end]))]),
#"Changed Type1" = Table.TransformColumnTypes(#"Filtered Rows1",{{"Date - Time.Days", type date}}),
#"Filtered Rows" = Table.SelectRows(#"Changed Type1", each [#"Date - Time.Days"] >= #date(Date.Year(Excel.CurrentWorkbook(){[Name="Request"]}[Content]{5}[start]),Date.Month(Excel.CurrentWorkbook(){[Name="Request"]}[Content]{5}[start]),Date.Day(Excel.CurrentWorkbook(){[Name="Request"]}[Content]{5}[start])) and [#"Date - Time.Days"] <= #date(Date.Year(Excel.CurrentWorkbook(){[Name="Request"]}[Content]{0}[end]),Date.Month(Excel.CurrentWorkbook(){[Name="Request"]}[Content]{0}[end]),Date.Day(Excel.CurrentWorkbook(){[Name="Request"]}[Content]{0}[end]))),

在该代码第一行部分:

Number.ToText(Date.Year(Excel.CurrentWorkbook(){[Name="Request"]}[Content]{0}[end]))

我发现这段代码连接到 excel 文件表“列表”(从 A1 到 F7 的表格) - 如下所示:

+--------------+------------------+------------+------------+-----------------+----------+
| NameOfSource |   httpaddress    |   start    |    end     |      Path       |   File   |
+--------------+------------------+------------+------------+-----------------+----------+
| Data 1       | http:....        | 09.03.2020 | 11.03.2020 | http:....       |          |
| Data 2       | http:....        |            |            | http:....       |          |
| Data 3       | X:\....\.. .txt  |            |            | X:\....\.. .txt |          |
| Data 4       | X:\....\.. 2.txt |            |            | X:\....\.. .txt |          |
| Data 5       | X:\....\.. 3.txt | 01.03.2020 | 08.03.2020 | X:\....\.. .txt | xxx.json |
+--------------+------------------+------------+------------+-----------------+----------+

所以我的猜测是代码部分[Content]{0}是指endvalue 所在的列11.03.2020。现在这11.03.2020是用代码计算的=DATE(YEAR(NOW());MONTH(NOW());DAY(NOW())-1)

在 PowerBI 中,我不想使用这种方法来获取数据,如果可能的话,我希望以某种方式将这些数据放入原始查询代码中。因此,Number.ToText(Date.Year(Excel.CurrentWorkbook(){[Name="Request"]}[Content]{0}[end]))我不想让代码在不指向另一张纸或其他地方的情况下进行相同的计算。

Date.Year(Excel.CurrentWorkbook(){[Name="Request"]}[Content]{5}[start])

[Content]{5}[start]这里使用代码而不是指向工作表行=EOMONTH([@end];-1)+1

希望我解释得足够好:)

或者,由于这不是从“列表”表中提取的唯一数据查询,也许在 powerbi 中创建这样的表更容易?在那种情况下,是否有任何文档可以解释如何执行此操作?因为我不认为 PowerBI 使用(Excel.CurrentWorkbook)或类似的东西。

标签: excelpowerbipowerquerym

解决方案


强大的查询 M 语言具有非常好的内置日期功能

而不是DATE(YEAR(NOW());MONTH(NOW());DAY(NOW())-1),你可以写

Date.AddDays(DateTime.Date(DateTime.LocalNow()),-1)

而不是EOMONTH([@end];-1)+1,你可以写

Date.StartOfMonth(DateTime.Date(DateTime.LocalNow()))

如果您首先将今天的日期定义为

Today = DateTime.Date(DateTime.LocalNow())

然后写

Date.AddDays(Today,-1)

Date.StartOfMonth(Today)

推荐阅读