Дескриптивна мова моделі розрахунків (DAX) в Microsoft Excel і Power BI дозволяє виконувати різноманітні обчислення, включаючи розрахунки з валютними ставками. У даній статті ми детально розглянемо підхід до групування та сумування даних за допомогою DAX, зокрема, як знайти валютні ставки для кожної валюти та використати їх для обчислення суми в різних валютах.
Спочатку, для обчислення суми в різних валютах потрібно знати курс обміну для кожної валюти. У нашому прикладі ми маємо таблицю, де вказані курси обміну для деяких валют:
1 2 3 4 5 6 7 8 9 |
_SlicerTable +----------+---------+ | Currency | RateCol1| +----------+---------+ | USD | 1 | | CNY | 0.5 | | EUR | 0.9 | | JPY | 0.7 | +----------+---------+ |
Тепер, маючи дані про суму та валюту для кожного запису, ми можемо обчислити суму в різних валютах. Для цього ми використовуємо функцію SUMMARIZE для групування даних за валютами та їх сумами:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
_Currency Amounts = VAR CurrencyAmounts = SUMMARIZE('myDF', myDF[Currency], 'myDF'[Amount]) VAR USD_Rate = MAXX(FILTER('_SlicerTable', _SlicerTable[Currency] = "USD"), '_SlicerTable'[RateCol1]) VAR EUR_Rate = MAXX(FILTER('_SlicerTable', _SlicerTable[Currency] = "EUR"), '_SlicerTable'[RateCol1]) VAR CNY_Rate = MAXX(FILTER('_SlicerTable', _SlicerTable[Currency] = "CNY"), '_SlicerTable'[RateCol1]) VAR JPY_Rate = MAXX(FILTER('_SlicerTable', _SlicerTable[Currency] = "JPY"), '_SlicerTable'[RateCol1]) RETURN SUMX( CurrencyAmounts, SWITCH( myDF[Currency], "USD", 'myDF'[Amount] * USD_Rate, "EUR", 'myDF'[Amount] * EUR_Rate, "CNY", 'myDF'[Amount] * CNY_Rate, "JPY", 'myDF'[Amount] * JPY_Rate ) ) |
Цей код дозволяє обчислити суму в різних валютах, множачи суму на відповідний курс. Як результат, ми отримуємо суму в базовій валюті за вказаними курсами обміну. Наприклад, якщо у нас є дані про суму в доларах США (USD), євро (EUR), китайських юанях (CNY) та японських єнах (JPY), то за допомогою цього коду ми зможемо отримати загальну суму в базовій валюті.