Службы таблиц / анализа SSAS «многие ко многим» для ввода нескольких валют - вывод нескольких валют - PullRequest
0 голосов
/ 29 марта 2020

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

Поэтому я получаю много-много, соединяю таблицу InvoiceTable и таблицу валют. Чтобы присоединиться к ним, я создаю в SQL объединенное поле с днем ​​и кодом валюты. enter image description here

Link Invoice to Currency

Затем (повторное использование учебника из inte rnet) я создаю вычисление, выполняя поиск из счета-фактуры к курсу.

Amount adj:=SUMX(Invoices,Invoices[TotalInvoiceAmount]/LOOKUPVALUE(ExchangeRatesPerDay[Rate],ExchangeRatesPerDay[ToCurrencyConcatenatedday112],Invoices[CurrencyCodeConcatenateInvoiceDate112]))

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

enter image description here

Из сообщения об ошибке похоже, что поиск получает несколько значений, что странно, потому что в Excel я фильтрую по одной валюте. Поэтому для каждой комбинации день + код валюты есть только одна строка. Я проверяю SQL, используя этот запрос

with cte as (
SELECT  [RateTypeName]
      ,[FromCurrency]
      ,[ToCurrency]
      ,[StartDate]
      ,[Rate]
      ,[EndDate]
      ,[ConversionFactor]
      ,[RateTypeDescription]
      ,[dday]
      ,[dday112]
      ,[ToCurrencyConcatenatedday112]
      ,[FromCurrencyConcatenatedday112]
        , count(*) over (partition by [ToCurrencyConcatenatedday112],FromCurrency ) as co
  FROM [stg].[ExchangeRatesPerDay]
  )

  select * from cte where co>1

И он не возвращает никаких записей.

Буду признателен за любую вашу идею.

С уважением

Винсент

...