Страницы: 1
RSS
DAX. Выбор типа транспорта исходя из объема груза, Выбрать значение из справочника на основании объема посчитанного мерой
 
Приветствую, друзья.
Застрял на казалось бы простом вопросе и никак не могу найти решение. Либо все получается очень сложно, либо что-то не то вообще)

Необходимо по объему посчитанному мерой для города определить подходящий тип транспорта.
Пример с моделью данных прикрепляю.
Между справочником  и таблицей данных связи не будет.

Заранее благодарен.
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
 
Dyroff,
Код
Тип тс :=
VAR curV = [Объем груза]
VAR minTV =
    CALCULATE ( MIN ( 'спрТипТС'[Объем до] ); 'спрТипТС'[Объем до] >= curV )
VAR tType =
    CALCULATE ( MAX ( 'спрТипТС'[Тип транспорта] ); 'спрТипТС'[Объем до] = minTV )
VAR result =
    IF ( HASONEVALUE ( 'Данные'[Город] ); tType )
RETURN
    result
 
surkenny, Огонь! Спасибо. Именно то что нужно.
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
 
Dyroff, приветствую.
Нужно добавить лишь один столбец в справочник и тогда мера становится довольно простой и понятной:
Код
=CALCULATE(
   VALUES('спрТипТС'[Тип транспорта]);
   FILTER(
      'спрТипТС';
      [Объем груза]>'спрТипТС'[Объем от] &&
      [Объем груза]<='спрТипТС'[Объем до]
   )
)


П.С. ну или как surkenny,сделал  :D
Изменено: Vladimir Chebykin - 20.04.2022 10:08:13
 
Vladimir Chebykin, Спасибо. Да, тоже очень даже рабочий вариант.
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
 
Vladimir Chebykin, тут ведь как посмотреть :) А если транспорта много? А если добавляется новый тип между текущими - это же диапазон еще у следующего не забыть поменять :)
Можно это делать в PQ, но мне было лень:
Код
let
  src = Excel.CurrentWorkbook(){[ Name = "Таблица2" ]}[Content],
  sort = Table.Sort ( src, { { "Объем до", Order.Ascending } } ),
  addVF = Table.FromColumns (
    Table.ToColumns ( sort ) & { { null } & List.RemoveLastN ( sort[Объем до], 1 ) },
    Table.ColumnNames ( sort ) & { "Объем от" }
  ),
  typed = Table.TransformColumnTypes ( addVF, { { "Объем до", Int64.Type }, { "Тип транспорта", type text }, { "Объем от", Int64.Type } } )
in
  typed
Изменено: surkenny - 20.04.2022 11:33:48
Страницы: 1
Наверх