Как разделить каждую строку вычисляемого столбца на сумму другого вычисляемого столбца? - PullRequest
1 голос
/ 19 июня 2019

Я не могу получить правильное деление с этими примерами данных:

Calculated column    Another calc. column
   48                  207
  257                  370
  518                  138
  489                  354
  837                  478
1,005                  648
1,021                2,060
1,463                2,164
2,630                1,818
2,993                2,358
3,354                3,633
4,332                5,234
4,885                6,108
4,514                6,008
4,356                6,888
4,824                7,382
7,082                5,988
7,498                6,059
                     4,865
                     4,192
                     3,816
                     2,851
                     2,768
                     2,093
                     2,207
                       770
                       397
                       149
                       178
                       336
                       167
                       124
                        18

Я пытаюсь создать новый вычисляемый столбец.

Для каждой строки Iхотите получить значение Calculated column и разделить его на сумму Another calc. column.

сумму Another calc. column = 82826

Это желаемый результат в совершенно новом вычисленномстолбец, назовем его % Column:

% Column

0,000579528167484
0,003102890396735
0,006254074807428
.
.
.

NOTE - эти 3 столбца: Calculated column, Another calc. column и % Column находятся в одной таблицеи все вычисляемые столбцы .

Я перепробовал множество формул, но ни одна не вернула желаемый результат.: |Я предполагаю, что это из-за природы вычисляемых столбцов, или я не понимаю суть этого.

Это вообще возможно, или я должен следовать другим путем, используя Меру?

Можете ли вы пролитьнемного света?

####### EDIT #######

Я собрал образец файла, чтобы помочь отладить это.Вот оно: https://drive.google.com/open?id=1r7kiIkwgHnI5GUssJ6KlXBAoeDRISEuC

Как видите:

  • Earned Daily % HARDCODED прекрасно работает, потому что 82826 жестко закодирован как знаменатель.
  • Earned Daily % by StelioK и Earned Daily % by Alexis Olson выводят одинаковое неверное значение для деления при использовании формулы SUM.

Я использую последнюю версию Power BI Desktop, если это имеет значение: Version: 2.70.5494.701 64-bit (June 2019)

enter image description here

Ответы [ 3 ]

3 голосов
/ 19 июня 2019

В принципе, в вычисляемых столбцах нет ничего плохого, и формулы Alexis и StelioK верны.

Основная проблема здесь - путаница между вычисляемыми столбцами и показателями.Вы смотрите на результаты концептуально неправильным образом - через матричный визуал с несколькими активными фильтрами на слайсерах.Если вы удалите фильтры, вы увидите, что общая сумма составляет 140 920, а не 82 826.Последнее число является общим для набора данных отфильтрованный , а не для всей таблицы.

Чтобы понять это правильно, вам необходимо понять несколько фундаментальных концепций Power BI:

  • Вычисляемые столбцы всегда статичны.После завершения расчета он не может реагировать на срезы или другие элементы управления пользовательского интерфейса.Это просто статические данные, идентичные данным в неисчисляемых столбцах.Формулы DAX, используемые для вычисления столбцов, активны только при их создании или при перезагрузке данных.
  • Если вы хотите, чтобы ваши вычисления реагировали на срезы и т. Д., Они должны быть мерами.Это единственный способ, без исключений.
  • Избегайте рассчитанных столбцов, они совершенно бесполезны.Power BI - это все о мерах;Я не могу придумать единственную причину использования вычисляемых столбцов.Когда вы добавляете столбец, вы существенно улучшаете свои исходные данные, потому что чувствуете, что упускаете что-то, что вам нужно для вашего отчета.Но эта потребность может быть гораздо лучше решена в источнике (базе данных или импортируемом вами файле) или с помощью Power Query, который предназначен именно для такого рода задач.Лучшая практика заключается в следующем: создайте столбцы в источнике, для всех остальных мер проектирования.
  • Еще один важный совет: никогда не помещайте поля (столбцы) в визуальные элементы напрямую.Всегда пишите меру DAX, а затем используйте ее.Полагаться на автоагрегацию Power BI - очень плохая практика.
2 голосов
/ 19 июня 2019

Для меня следующие работы:

DIVIDE( Table1[Calculated column], SUM(Table1[Another calc column]) )

Если это не сработает, мне нужно посмотреть файл, в котором вы можете воспроизвести проблему.


Редактировать: После просмотра вашего файла итоговое значение 82,826 будет истинным с выбранными вами фильтрами .

Обратите внимание, что вычисляемые столбцы не являются динамическими, и не может реагировать на фильтры, поскольку они рассчитываются только при первой загрузке таблицы.

Если вам нужно, чтобы оно было динамичным, запишите его как меру, похожую на эту:

Earned Daily =
DIVIDE (
    CALCULATE (
        SUM ( 'Test data'[Value] ),
        'Test data'[Act Rem] = "Actual Units",
        'Test data'[Type] = "Current"
    ),
    CALCULATE (
        SUM ( 'Test data'[Value] ),
        ALLSELECTED ( 'Test data' ),
        'Test data'[Act Rem] = "Remaining Units",
        'Test data'[Type] = "PMB"
    )
)
2 голосов
/ 19 июня 2019

Вы можете сделать это, используя следующий DAX:

% Column =
VAR TotalSum =
    SUM ( 'Table'[Another Calc column] )
RETURN
    IF (
        NOT ( ISBLANK ( 'Table'[Calc Column] ) ),
        CALCULATE ( DIVIDE ( SUM ( 'Table'[Calc Column] ), TotalSum ) ),
        0
    )

Что дает следующее: enter image description here

Надеюсь, это поможет !!

...