Как передать динамические значения во входные параметры SAP HANA? - PullRequest
0 голосов
/ 11 ноября 2019

У меня есть вычисленное представление в SAP HANA, из которого я должен извлечь данные за предыдущие 3 месяца с текущей даты в операции копирования ADF Azure. В этом представлении есть входной параметр, '$$CalmonthInput$$', для фильтрации по месяцам.

Я попытался использовать запрос выбора для значения входного параметра, но не сработал. Он показал ошибку синтаксиса SQL. Я также попробовал ниже синтаксис, но с той же синтаксической ошибкой PLACEHOLDER."$$MY_DATE_PARAMETER$$" => current_date

Этот параметр является обязательным. Поэтому я не могу удалить параметр и использовать предложение WHERE

SELECT
      "CalendarYearMonth", -- This is the column i need to filter on
      "PlanningLevelCategoryText",
      "COUNTRY_NAME",
      "REGION",
      "SUB_REGION",
      "CLUSTER",
      "AmountinCompanyCodeCurrencyUSD", 
FROM "_SYS_BIC"."ACTUAL_DATA"('PLACEHOLDER' = ('$$TradingPartnerInput$$',
      '''All'''),
     'PLACEHOLDER' = ('$$CalmonthInput$$', SELECT REPLACE(LEFT(ADD_MONTHS(CURRENT_DATE, -1), 7), '-', '') FROM TEMP),
      'PLACEHOLDER' = ('$$PLViewInput$$',
      '''DOMESTIC''')

1 Ответ

0 голосов
/ 25 ноября 2019

Оператор выбора возвращает таблицу с 1 строкой. Входные параметры принимают только скалярные переменные. В CV HANA вы можете использовать производную от процедуры или скалярной функции в качестве входного параметра, а не прямой. Создайте простую функцию с помощью запроса select и верните ее обратно в качестве вывода, как показано ниже.

tab1 = SELECT REPLACE(LEFT(ADD_MONTHS(CURRENT_DATE, -1), 7), '-', '') as DATE FROM TEMP;
return tab1.DATE[1];
...