Как создать сразу несколько столбцов, которые зависят друг от друга в Power BI?

#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"
  

То, что я сделал, было:

  1. Запустил Power BI
  2. Получил данные из электронной таблицы и добавил таблицу (Table1) в Power Query (Получить данные> Все> Excel> Подключиться> Перешел к файлу Excel> Дважды щелкнул файл (мог бы выбрать файл и вместо этого нажать Открыть)> Выбрал соответствующую таблицу (Table1)> Преобразовать данные)
  3. Я убедился, что типы данных столбцов соответствуют моим желаниям. (Выберите столбец> Преобразование> Тип данных: > выберите подходящий тип> повторить для каждого необходимого столбца)
  4. Я отсортировал столбцы ID и Date (выберите [ID]> щелкните стрелку раскрывающегося списка> нажмите Сортировать по возрастанию> повторить для [Дата])
  5. Я добавил столбец индекса (Добавить столбец> Столбец индекса)
  6. Я добавил столбец A (Добавить столбец> Пользовательский столбец> заполнить, как показано ниже, и нажмите OK)

введите описание изображения здесь

  1. Я добавил столбец B (Добавить столбец> Пользовательский столбец> заполнить, как показано ниже, и нажмите OK)

введите описание изображения здесь

  1. Я добавил столбец C (Добавить столбец> Пользовательский столбец> заполнить, как показано ниже, и нажмите OK)

введите описание изображения здесь

  1. Я удалил столбец индекса (щелкните правой кнопкой мыши [Индекс]> Удалить)

Результат:

введите описание изображения здесь