#powerbi #dax #powerquery
#powerbi #dax #powerquery
Вопрос:
Я новичок в Power BI, у меня есть таблица в Excel. Мне нужно создать то же самое в Power BI.
У меня есть одна таблица в Excel, в которой есть следующие поля:
После первой сортировки таблицы на основе идентификатора и даты, а затем добавления столбца A, столбца B и столбца C, где значение столбца A равно предыдущему значению столбца C, а значение столбца C равно сумме столбца A и столбца B. Желаемая таблица будет:
где,
Column A = IF($A2=$A1,$G1,0)
Column B = D2-E2
Column C = SUM(E2:F2)
Как добиться этого в Power BI?
Ответ №1:
Я полагаю, что это может быть что-то вроде того, что вы ищете. Для этого требуется индекс, чтобы вы могли использовать индекс для ссылки на значения предыдущей строки.
Вместо вычисления столбца A из столбца C, как было предложено в вашей формуле ($ G1), я вычислил его из [Доход]. Это потому, что столбец C еще не существовал и еще не будет существовать, потому что он не будет вычисляться до тех пор, пока не будет существовать столбец A (E в вашей формуле).
В любом случае, если ваша таблица называется Table1 и имеет [ID], [Name], [Date] и [Revenue], как на вашем первом изображении, тогда вы сможете использовать этот код. В противном случае измените «Table1» на любое имя вашей таблицы. Кроме того, вам нужно будет заменить «YourPathAndFile.xls » ниже укажите ваш путь и имя файла — что-то вроде «C:Usersyournamesomefolderfilename.xls «. Включите кавычки как для имени таблицы, так и для пути и файла, как показано ниже.
let
Source = Excel.Workbook(File.Contents("YourPathAndFile.xls"), null, true),
Table1_Table = Source{[Item="Table1",Kind="Table"]}[Data],
#"Changed Type" = Table.TransformColumnTypes(Table1_Table,{{"ID", type text}, {"Name", type text}, {"Date", type date}, {"Revenue", Currency.Type}}),
#"Sorted Rows" = Table.Sort(#"Changed Type",{{"ID", Order.Ascending}, {"Date", Order.Ascending}}),
#"Added Index" = Table.AddIndexColumn(#"Sorted Rows", "Index", 0, 1, Int64.Type),
#"Added Custom" = Table.AddColumn(#"Added Index", "Column A", each if [Index] = 0 then 0 else if [ID] = #"Added Index"{[Index]-1}[ID] then #"Added Index"{[Index]-1}[Revenue] else 0),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "Custom B", each [Revenue] - [Column A]),
#"Added Custom2" = Table.AddColumn(#"Added Custom1", "Custom C", each [Column A] [Custom B]),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom2",{"Index"})
in
#"Removed Columns"
То, что я сделал, было:
- Запустил Power BI
- Получил данные из электронной таблицы и добавил таблицу (Table1) в Power Query (Получить данные> Все> Excel> Подключиться> Перешел к файлу Excel> Дважды щелкнул файл (мог бы выбрать файл и вместо этого нажать Открыть)> Выбрал соответствующую таблицу (Table1)> Преобразовать данные)
- Я убедился, что типы данных столбцов соответствуют моим желаниям. (Выберите столбец> Преобразование> Тип данных: > выберите подходящий тип> повторить для каждого необходимого столбца)
- Я отсортировал столбцы ID и Date (выберите [ID]> щелкните стрелку раскрывающегося списка> нажмите Сортировать по возрастанию> повторить для [Дата])
- Я добавил столбец индекса (Добавить столбец> Столбец индекса)
- Я добавил столбец A (Добавить столбец> Пользовательский столбец> заполнить, как показано ниже, и нажмите OK)
- Я добавил столбец B (Добавить столбец> Пользовательский столбец> заполнить, как показано ниже, и нажмите OK)
- Я добавил столбец C (Добавить столбец> Пользовательский столбец> заполнить, как показано ниже, и нажмите OK)
- Я удалил столбец индекса (щелкните правой кнопкой мыши [Индекс]> Удалить)
Результат: