Страницы: 1
RSS
Создание меры, для получения нарастающего итога по суткам в разрезе получасов (DAX)
 
Добрый день! Ранее я создавал похожую тему в которой, уважаемый Максим Зеленский написал мне меру, для отображения показателя с нарастающим итогам по суткам в разрезе получасов в сводной таблице. В примерах той темы было много лишнего и возникло недопонимание, поэтому создал новую тему.

Сейчас появилась необходимость не только отображать показатель с нарастающим итогом в сводной таблице, но и использовать эту меру в качестве условия для других вычислений (например, в связке с функцией IF).

В файле создано 2 меры: Показатель за получас (DAX) и Показатель нарастающим итогом (DAX). А в исходных данных есть рассчёт этих же показателей, который можно использовать в качестве сверки правильности рассчета.

Так вот, если в Power Pivot создать столбец и прописать формулу:
Код
=[Показатель за получас (для проверки)]=[Показатель за получас (DAX)]
то Power Pivot во всех строках этого столбца выдаст TRUE.

Скрытый текст


Однако, если прописать аналогичную формулу для проверки показателя с нарастающим итогом
Код
=[Показатель нарастающим итогом за сутки (для проверки)]=[Показатель нарастающим итогом (DAX)]
то на выходе в множестве строк будет FALSE

Скрытый текст

Подскажите пожалуйста как скорректировать меру показателя с нарастающим итогом, чтобы при ее сопоставлении с показателем для проверки на выходе было TRUE?
 
Вы как-то странно выражаетесь. Что значит
Цитата
Murderface_ написал:
Так вот, если в Power Pivot создать столбец и прописать формулу ... то Power Pivot во всех строках этого столбца выдаст TRUE.
Я ваших картинок со сторонних ресурсов не вижу - все заблочено. Это вы про меру в сводной?
Что значит
Цитата
Murderface_ написал:
Однако, если прописать аналогичную формулу для проверки показателя с нарастающим итогом
Куда прописать как формулу? В вычисляемый столбец в модели данных?
У вас с Максимом именно по этой причине были недопонимания в предыдущей теме, т.к. он оперировал общепринятыми терминами (для тех кто учился по книжкам и справочным материалам M$), а вы рассказываете используя какими-то усвоенными для себя определениями. Вот ему и надоело.
Изменено: PooHkrd - 01.07.2019 11:18:07
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
Это вы про меру в сводной
Да. Это скриншот окна Power Pivot, со столбцом, в которых введена формула из первого сообщения.

Цитата
PooHkrd написал:
Куда прописать как формулу? В вычисляемый столбец в модели данных?
Именно туда.

Цитата
PooHkrd написал:
вы рассказываете используя какими-то усвоенными для себя определениями
Простите, по другому не умею. Буду исправляться. Как вы уже догадались, я с Power Pivot "на вы"  :(  
 
Murderface_, просто учиться надо не только задавая вопросы, но и читать справочную литературу, благо для начинающих на сайте МС инфы навалом. И по DAX в рунете уже немало можно нагуглить. Тогда будете хотя бы говорить на одном с профессионалами языке, и они смогут вам помочь.
Теперь по вашей проблеме, формулы меры вычисляются в контексте фильтров сводной таблицы, формулы для вычисляемых столбцов вычисляются в контексте той строки, в которой производятся вычисления. Если вам нужно чтобы формула для столбца вычислялась как в сводной, то нужно снять с неё контекст строки и установить такие же фильтры как в сводной.
И, если не секрет, то зачем вам вычисляемый столбец с такой проверкой? Может вы все таки расскажете про исходную задачу? А не будете просить как реализовать именно ваше видение (возможно не правильное) такого решения? Что именно вам нужно рассчитать в сводной таблице?
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
Может вы все таки расскажете про исходную задачу
Есть контакт-центр с большим количеством показателей, которые считаются в разрезе получасов и нарастающим итогом за сутки/месяц. Еще есть данные из CMS, которые связаны с обращениями в контакт-центр. Между показателями и данными из CMS в Power Pivot создана связь через дату + время. Так вот необходимо производить подсчет определенных данных из CMS, исходя из значений показателей за получас и нарастающим итогом.

С показателем за получас, как в примере, все работает. Т. е. на листе с данными CMS в модели данных я создаю вычисляемый столбец и пишу формулу ссылаясь на показатель за получас, например:
Код
=IF([Показатель за получас (DAX)]>0,8;1)
то условие работает

Но если аналогичным образом сослаться на показатель с нарастающим итогом, то данные будут некорректны.

Важно, чтобы ссылаясь на меру в вычисляемом столбце модели данных, она выдавала именно значение показателя с нарастающим итогом, а уже не готовое решение. Т. к. условия могут меняться. Также в примере мне нужен лишь 1 показатель, а в итоговом файле их будет минимум 3.

Надеюсь все понятно объяснил.
Изменено: Murderface_ - 01.07.2019 11:50:59
 
Murderface_, т.е. все расчеты вам нужны в сводной, как таковые столбцы в таблице модели данных вам не нужны. Отлично, теперь, предлагаю так: в вашем примере формируете все таблички и связи между ними как в вашей рабочей модели данных, покажите вид отчета сводной таблицы как он вам нужен, и рядом со сводной формулами прописываете показатель, который должен быть сформирован в отчете, если формулами не можете, то пропишите фиксированными значениями, но на пальцах объясните логику, как вы этот показатель получили.
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
Если вам нужно чтобы формула для столбца вычислялась как в сводной, то нужно снять с неё контекст строки и установить такие же фильтры как в сводной
Максим, мне писал такую формулу для вычисляемого столбца в прошлой теме. Но мне нужна именно мера, которая будет выдавать значение показателя нарастающим итогом. Т. е. сам показатель должен рассчитываться в мере, а не в вычисляемом столбце.
 
Цитата
PooHkrd написал:
в вашем примере формируете все таблички и связи между ними как в вашей рабочей модели данных
Я наоборот пытался максимально упростить пример, чтобы мне смогли помочь найти решение.

Если нельзя использовать одну и ту же меру как для сводной так и для вычисляемого столбца, ничего страшного. Пусть их будет две.

Если я пойму как корректно написать формулу, требуемой мне меры для одного показателя, то для остальных показателей я постараюсь написать сам.
Изменено: Murderface_ - 01.07.2019 12:25:48
 
Murderface_, от того как настроены связи очень сильно зависит формула меры. Возможно вам подскажут, что и как в модельке сделать для удобства работы и расчетов, если в ней что-то не так. Уже неоднократно тут давали людям рабочее решение для приведенного примера, а потом возгласы что при переносе на рабочую модель оно не работает.
Пример должен максимально соответствовать структуре рабочей модели, тогда помощь будет быстрой и полезной.
Покажите как надо считать один показатель, и если остальные сможете рассчитать сами, то вопросов нет. Если не выйдет, для остальных показателей создадите отдельные темы.
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
Пример должен максимально соответствовать структуре рабочей модели
Сюда возможно загрузить лишь файл размером не более 100 Кб. Даже с пустым исходником модель данных имеет больший объем.  :(

PooHkrd, есть же конкретный пример из моего первого сообщения в этой теме. Почему нельзя использовать его?
Изменено: Murderface_ - 01.07.2019 15:40:46
 
Murderface_, я не говорю что нельзя, только я попросил, в том виде отчета, который вам нужен покажите на формулах, либо фиксированными значениями что должна выводить в отчет мера, которая считает нужный вам показатель, вы такого не показали.
Вот горшок пустой, он предмет простой...
 
PooHkrd, мера должна выводить значение показателя в процентах. Т. е. если я в модели данных создаю вычисляемый столбец и пишу формулу, например:
Код
=IF([Показатель нарастающим итогом (DAX)]>=0,82;1)
То для каждой строки на ту дату и время, которое в ней указано, должен рассчитываться данный показатель нарастающим итогом на эти сутки (для сверки специально добавил столбец "Показатель нарастающим итогом за сутки (для проверки)") и если его значение удовлетворяет условию, в данном примере >= 82%, то в строке должна появится единица.
 
Я немного разобрался. Для выбора показателя за получас в качестве условия, можно ссылаться на меру в которой он рассчитывается и все будет работать, но для получения показателя с нарастающим итогом нужно писать в вычисляемом столбце формулу:
Код
=CALCULATE(DIVIDE(SUM([Числитель]);SUM([Знаменатель]);0);FILTER(ALLEXCEPT('Таблица1'; 'Таблица1'[Дата]);'Таблица1'[Время]<=EARLIER ('Таблица1'[Время])))
Однако, если делать все на том же листе, где находятся исходные данные для рассчета этого показателя то все ок, но если делать это на другом листе (между листами создана связь Дата + Время), но программа выдает ошибку.
Изменено: Murderface_ - 02.07.2019 13:14:52
 
Цитата
Murderface_ написал:
если делать это на другом листе
Чтобы делать это на другом листе вам нужно указать полную ссылку на столбцы [Числитель] и [Знаменатель], т.е. если вы ссылаетесь на сокращенное название столбца, то движок его ищет на том листе где указана формула (не всегда так, но в вашем случае именно так), если же вы укажете полное название (с указанием таблицы) то формулу можно будет писать на любом листе.
Вот горшок пустой, он предмет простой...
 
PooHkrd, удалось добавить дополненный пример, максимально сжав его в архиве. Возникла очередная проблема, происходит что то невероятное. В примере есть 2 таблицы с одинаковым столбцом "Дата + время_", который должен послужить для создания связи между таблицами. Но как только мы создаем связь, то показатель (который до создания связи считается абсолютно правильно) в столбце "Проверка показателя нарастающим итогом за сутки" начинает выдавать неверное значение. Я не понимаю как такое возможно.
 
Подозреваю, что формула выдает неверное значение после создания связи из-за того, что в Таблице2 есть повторяющиеся интервалы. С другой стороны все аргументы формулы ссылаются именно на Таблицу1.
Также после создания связи и написании формулы в вычисляемый столбец Таблицы2, она выдает ошибку. Скорее всего необходимо скорректировать формулу под эти условия

Код
=CALCULATE(DIVIDE(SUM('Таблица1'[Числитель]);SUM('Таблица1'[Знаменатель]);0);FILTER(ALLEXCEPT('Таблица1'; 'Таблица1'[Дата]);'Таблица1'[Время]<=EARLIER('Таблица1'[Время])))

Прошу вашей помощи.

 
Кажется, удалось получить то, что хотел
Код
=CALCULATE(DIVIDE(SUM('Таблица1'[Числитель]);SUM('Таблица1'[Знаменатель]));FILTER(ALL('Таблица1');'Таблица1'[Дата]='Таблица2'[Дата]&&'Таблица1'[Время]<='Таблица2'[Время]))

 
Здравствуйте! Мне нужна помощь как раз по теме нарастающи итогов. Есть таблица, продаж и покупук валют. Через меру посчитал все промежуточные значения нужные для вычисления итогового показателя, по дате.(в файле прилагается-обрезал для уменьшения). Размер исходнх данных не маленький более 1.5 млн. строк. Итоговый резельтат считает правильно, но когда дохожу до накопительного- результаты не корректные. Нужен накопительные результат по мере ITOGvsego. По дате, с возможносью фильтрования по кссам, пользвателям. Файлы, меры и расчеты прилагаются. Подскажите как это сделать и в чем моя ошибка при расчетах.

https://drive.google.com/drive/folders/1yPHXSea1qcXzG-RUcaCD9dUpYIl4onKo?usp=sharing
Изменено: valerp777 - 20.12.2019 13:48:30
Страницы: 1
Наверх