DAX/POWERBI: подсчитывает билеты, прикрепленные к элементу и всем его дочерним элементам

#dax

#dax

Вопрос:

Я новичок в DAX и PowerBI, и у меня проблема с написанием формул DAX для моего случая: у меня есть две таблицы: Активы и заявки. У каждого есть идентификатор, а у активов есть ParentAssetId (может быть 0 или None). В выражении DAX: я хотел бы подсчитать (и перечислить) все билеты, прикрепленные к активу и его дочерним элементам.

Я пробовал этот способ, но безуспешно:

 nbChildTickets = 
VAR mykey = 
    SELECTEDVALUE ( Assets[AssetKey] )
VAR mypar = 
    SELECTEDVALUE ( Assets[ParentId] )
RETURN
    CALCULATE(
        COUNTX(Tickets, Tickets[TicketKey]),
        FILTER(Tickets, RELATED(Assets[ParentId]) = mykey)
    )
  

Таблицы и холст

Это таблица активов, которая содержит как AssetKey, так и столбцы ParentID.

Есть какая-нибудь идея или как это сделать? Спасибо

Ответ №1:

Вопрос, эти таблицы уже связаны? В случае, если это так, кажется, что вам не понадобится подобная мера, чтобы получить количество # билетов по активу и его родительскому элементу. Я бы сделал это следующими двумя способами. Предположим, вам это нужно в таблице:

Вариант 1.

  1. Создайте простой показатель подсчета, чтобы получить количество билетов в таблице Tickets, это может быть что-то вроде Number of Tickets = COUNTROWS('Tickets')
  2. Перетащите таблицу на холст.
  3. Добавьте в таблицу активы и ее дочерние столбцы, наконец, добавьте свою новую меру в таблицу

Вариант 2. На случай, если у каждого билета есть идентификатор.

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

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

Комментарии:

1. Здравствуйте, спасибо за подсказки. Я добавил копию своих таблиц и холста в первом сообщении. Но у моих активов есть только AssetsId и ParentID. Прямых дочерних элементов нет. Мне удалось получить количество заявок для каждого ресурса, но не для Assest и его дочерних активов. Обратите внимание, что дочерние активы находятся в той же таблице, что и родительские: это таблица активов.

2. Поскольку у меня нет прямой информации о дочерних элементах или конкретной таблицы, мне не удалось выполнить шаги «дочернего столбца», на которые вы ссылаетесь. У вас есть еще какие-нибудь подсказки для моего случая?

Ответ №2:

Сначала создайте две связи между активами и таблицей билетов. Одна связь будет активна (один ко многим) в столбце AssetKey столбца.

Вторая связь будет неактивной. Актив [AssetKey] = Билет [ParentID]

Теперь используйте приведенные ниже меры —

 Number Of Tickets = COUNT(Tickets[TicketKey])

Number of Child = CALCULATE(COUNT(Tickets[AssetKey]),USERELATIONSHIP(Asset[AssetKey],Tickets[ParentId]))
  

Схема взаимосвязи приведена на рисунке ниже :

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

Результат указан ниже:

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

Пустую строку можно исключить из визуальных фильтров :

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