#powerbi
#powerbi
Вопрос:
У меня особая ситуация, когда я пытаюсь найти дополнительные значения на основе случаев / смертей для конкретной страны. Пожалуйста, смотрите прилагаемый пример скриншота для справки о том, как выглядят мои данные.
[![Образец данных] [1]][1]
У меня 4 месяца, страна, количество случаев / смертей, количество. Я должен рассчитать приращение случаев или смертей, а затем продемонстрировать тенденцию. Мой текущий файл содержит данные на мировом уровне, в которых указаны все страны, количество дней в которых превышает несколько месяцев. Я смог выполнить задачу в Excel с небольшими данными, так как было удобно фильтровать, а затем выполнять вычисления.
И еще один момент: для дня 0, поскольку нет подсчета случаев или смертей за предыдущий день, мы рассматриваем количество дней 0 как добавочное значение для демонстрации тенденций.
Кто-нибудь может подсказать, как выполнить эту задачу в Power BI? [1]: https://i.stack.imgur.com/4xNFV.png
Комментарии:
1. Итак, вам нужен код для столбца Increment, верно?
2. любые рекомендации будут полезны…..
Ответ №1:
Вы можете выполнить некоторое преобразование Power Query для получения требуемого столбца. Ниже приведен код из расширенного редактора с учетом вашего имени таблицы Your_source_table_name
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("bc4xDoAgDEDRu3RmoLSgHsEzEAYiJLq44P0j6UCMdPrDW36MYMHAfpcr9x651dbrVoJkIqBixCjmFGNiMVLM4ybGigUbxL4vpebn7EU7rQyi6WTQMo38iBVyHlJ6AQ==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [day = _t, country = _t, #"cases/death" = _t, count = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"day", Int64.Type}, {"country", type text}, {"cases/death", type text}, {"count", Int64.Type}}),
//-- New transformation starts from here
#"Sorted Rows" = Table.Sort(#"Changed Type",{{"country", Order.Ascending}, {"cases/death", Order.Ascending}, {"day", Order.Ascending}}),
#"Added Custom" = Table.AddColumn(#"Sorted Rows", "day_prev", each [day] - 1),
#"Reordered Columns" = Table.ReorderColumns(#"Added Custom",{"day", "day_prev", "country", "cases/death", "count"}),
#"Merged Queries" = Table.NestedJoin(#"Reordered Columns", {"country", "cases/death", "day_prev"}, #"Reordered Columns", {"country", "cases/death", "day"}, "Reordered Columns", JoinKind.LeftOuter),
#"Expanded Reordered Columns" = Table.ExpandTableColumn(#"Merged Queries", "Reordered Columns", {"count"}, {"Reordered Columns.count"}),
#"Renamed Columns" = Table.RenameColumns(#"Expanded Reordered Columns",{{"Reordered Columns.count", "count_prev"}}),
#"Added Custom1" = Table.AddColumn(#"Renamed Columns", "increase", each if [count_prev] = null then [count] else [count] - [count_prev]),
#"Changed Type1" = Table.TransformColumnTypes(#"Added Custom1",{{"increase", Int64.Type}})
in
#"Changed Type1"
Вот окончательный результат-
==========
Вы также можете добиться того же, используя Measure с помощью приведенного ниже кода-
increase_using_measure =
VAR current_row_day = MIN(your_source_table_name[day])
VAR current_row_country = MIN(your_source_table_name[country])
VAR current_row_case_death = MIN(your_source_table_name[cases/death])
VAR current_row_count = MIN(your_source_table_name[count])
VAR previous_day_count =
LOOKUPVALUE(
your_source_table_name[count],
your_source_table_name[day],current_row_day-1,
your_source_table_name[country],current_row_country,
your_source_table_name[cases/death],current_row_case_death
)
RETURN if(previous_day_count = BLANK(),current_row_count, current_row_count - previous_day_count)
Вот результат для обоих случаев-
Комментарии:
1. Привет @mkRabbani …. Мне нужно еще одно разъяснение в отношении того же сценария. Я пошел дальше и создал новый столбец для Increment. Я застрял в создании показателя для скользящей средней за 3 дня. Я попытался, проверив несколько сообщений в Интернете, но не смог сделать это много. Большинство скользящих средних работают с датой (в формате даты). Поскольку у меня дни… только в числовом формате… Я не уверен, какая функция помогла бы мне получить Mov_Avg для 3-дневного временного интервала в индексе приращения.
2. это будет функция calculate, заменяющая значение поиска>>> вычислить(среднее (количество), фильтр (все (имя_таблицы),страна = var_country amp;amp; case = var_case amp;amp; day <= var_day amp;amp; day >= var_day-2))
3. Я пишу со своего мобильного, так как сейчас нахожусь за городом. Вы можете настроить имена таблиц и столбцов с помощью логики. Вы также можете опубликовать новый вопрос для этого нового требования.
4. @mkRabbani… Конечно, я опубликую еще один вопрос по этому поводу