编辑 excel 查询以与 powerbi 查询配合使用
Editing excel query to work well with powerbi query
我有 excel 需要在 powerbi 中制作的报告。现在我对最后一个查询还有 1 个问题。
在 excel 中有一个 sheet "Lists" 包含各种随机数据(例如文档路径、计算日期等,它们都是非常随机的)。
在查询中我有行:
#"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 文件 sheet "Lists"(从 A1 到 F7 的 table)- 像这样:
+--------------+------------------+------------+------------+-----------------+----------+
| 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}
指的是 end
列,其中值为 11.03.2020
。
现在这个 11.03.2020
是用代码 =DATE(YEAR(NOW());MONTH(NOW());DAY(NOW())-1)
.
计算的
在PowerBI中我不想使用这种方法如何获取数据,如果可能的话我想把这些数据以某种方式放入原始查询代码中。
因此,我希望代码在不指向另一个 sheet 或位置的情况下执行相同的计算,而不是 Number.ToText(Date.Year(Excel.CurrentWorkbook(){[Name="Request"]}[Content]{0}[end]))
。
同
Date.Year(Excel.CurrentWorkbook(){[Name="Request"]}[Content]{5}[start])
此处使用代码 =EOMONTH([@end];-1)+1
而不是指向 sheet 行 [Content]{5}[start]
希望我解释得足够好:)
或者因为这不是从 "Lists" sheet 中提取的唯一数据查询,也许在 powerbi 中创建这样的 sheet 也更容易?在那种情况下,是否有任何文档可以解释如何执行此操作?因为我不认为 PowerBI 使用 (Excel.CurrentWorkbook)
或类似的东西。
M语言的幂查询很好built-in date functions.
而不是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)
我有 excel 需要在 powerbi 中制作的报告。现在我对最后一个查询还有 1 个问题。 在 excel 中有一个 sheet "Lists" 包含各种随机数据(例如文档路径、计算日期等,它们都是非常随机的)。
在查询中我有行:
#"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 文件 sheet "Lists"(从 A1 到 F7 的 table)- 像这样:
+--------------+------------------+------------+------------+-----------------+----------+
| 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}
指的是 end
列,其中值为 11.03.2020
。
现在这个 11.03.2020
是用代码 =DATE(YEAR(NOW());MONTH(NOW());DAY(NOW())-1)
.
在PowerBI中我不想使用这种方法如何获取数据,如果可能的话我想把这些数据以某种方式放入原始查询代码中。
因此,我希望代码在不指向另一个 sheet 或位置的情况下执行相同的计算,而不是 Number.ToText(Date.Year(Excel.CurrentWorkbook(){[Name="Request"]}[Content]{0}[end]))
。
同
Date.Year(Excel.CurrentWorkbook(){[Name="Request"]}[Content]{5}[start])
此处使用代码 =EOMONTH([@end];-1)+1
[Content]{5}[start]
希望我解释得足够好:)
或者因为这不是从 "Lists" sheet 中提取的唯一数据查询,也许在 powerbi 中创建这样的 sheet 也更容易?在那种情况下,是否有任何文档可以解释如何执行此操作?因为我不认为 PowerBI 使用 (Excel.CurrentWorkbook)
或类似的东西。
M语言的幂查询很好built-in date functions.
而不是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)