Редактирование запроса Excel для правильной работы с запросом powerbi. - PullRequest
0 голосов
/ 12 марта 2020

У меня есть отчет Excel, который должен быть сделан в Powerbi. Теперь у меня есть еще 1 проблема с последним запросом. В Excel есть лист «Списки», который содержит все виды случайных данных (например, пути к документам, вычисленные даты и т. Д. c, все они довольно случайные).

В запросе у меня есть строка:

#"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} относится к столбцу end, где значение равно 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) или что-то подобное.

1 Ответ

1 голос
/ 12 марта 2020

В языке Power Power 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)
...