DAX - вернуть последнюю дату, предшествующую дате публикации - PullRequest
1 голос
/ 05 июня 2019

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

Каждая Счет-фактура содержит запись [Область налогообложения]. Каждая [Налоговая зона] состоит из нескольких [Кодов налоговой юрисдикции].

Налоговая юрисдикция * В каждой записи 1008 * есть [Дата вступления в силу] и [Налоговая ставка]. Когда [Налоговая ставка] изменяется для [Налогового кодекса юрисдикции], в Налоговая юрисдикция добавляется новая запись с тем же [Налоговым юрисдикционным кодом] и новой [Дата вступления в силу]. Старая запись остается с предыдущей [Дата вступления в силу].

На основании поля [Налоговая зона] в Счет на покупку мне необходимо вернуть сумму [Налоговая ставка] из Налоговая юрисдикция для каждого включенного уникального [Код налоговой юрисдикции] в соответствующем [Код налоговой зоны] в Налоговая зона . Однако [Налоговая ставка], возвращаемая для каждого уникального [Код налоговой юрисдикции], должна быть записью с самой последней [датой вступления в силу] для этого [Код налоговой юрисдикции], которая равна в или ранее [Дата публикации] ] с Счет на покупку .

Например, для выделенной записи на рис. 1 потребуется вернуть (1.9 + 3), поскольку это ставки для каждого [кода налоговой юрисдикции] в [код налоговой зоны] = "CO-DELTA", которые несут самая последняя [Дата вступления в силу], предшествующая [дате публикации] 12/23/2018.

На Рис. 2 выделенная запись содержит ту же [Налоговую область], но требует другой ставки, поскольку новые [Налоговые ставки] вступили в силу для тех же [Кодов налоговой юрисдикции].

Рис 1:

enter image description here

Рис 2:

enter image description here

Я в полной растерянности от того, как этого добиться. Любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 06 июня 2019

Прежде всего, убедитесь, что между таблицами установлены (многие ко многим) отношения:

table relationships (Many to many)

Теперь вы можете создавать свои эффективныеНалоговая мера:

Effective Tax = 
VAR PostingDate =
    MAX ( 'Purchase Invoice'[Posting Date] )
RETURN
    SUMX (
        'Tax Area',
        CALCULATE (
            SUM ( 'Tax Jurisdiction'[Tax Rate] ),
            FILTER (
                'Tax Jurisdiction',
                'Tax Jurisdiction'[Effective Date]
                    = CALCULATE (
                        MAX ( 'Tax Jurisdiction'[Effective Date] ),
                        FILTER ( 'Tax Jurisdiction', 'Tax Jurisdiction'[Effective Date] <= PostingDate )
                    )
            )
        )
    )

Вывод данных для вашего образца:

sample output

См. https://pwrbi.com/so_56467693/ для работающего примера PBIXфайл

...