加入表函数或存储过程时,HANA Calc View占位符的用法

时间:2018-07-03 15:35:09

标签: database analytics hana hana-sql-script

HANA版本:SP12

全部

正如Lars在许多博客和论坛中所述,我已经成功地使用INPUT_PARAMETERS创建了Calc视图。虽然这些视图在直接查询单个和多个输入时可以正常工作,但是在存储的proc或表函数中对Calc View本身执行联接时遇到了问题。

示例:

BASE_SCHEMA”。“ BASE_TABLE_EXAMPLE ”-记录数(*)〜200万条记录

  • 键:材质(不同20k),植物(不同200)

_SYS_BIC”。“ CA_EXAMPLE_PRODUCTIVITY

  • 输入参数:IP_MATNR(nvarchar(5000)),IP_PLANT(nvarchar(5000))
  

问题1:nvarchar的最大值为5000。如果不同字符的计数为5000+,则无法在参数内使用多个输入。

     

问题2:如何以与在SQL中执行INNER_JOIN相同的方法使用PLACEHOLDER逻辑。

base_data = 

  select 
  PLANT
 ,MATERIAL

 from "BASE_SCHEMA"."BASE_TABLE_EXAMPLE"
 group by PLANT,MATERIAL; 

我认为应该执行以下操作,但是当在nvarchar(5000)的输入参数中串联多个字符串以供使用时,输出会引起问题。

select

string_agg(PLANT,''',''') as PLANT
,string_agg(MATERIAL,''',''') as MATERIAL
into var_PLANT, var_MATERIAL

from
(
   select

   PLANT
   ,MATERIAL

   from :base_data
);

到目前为止,虽然我很成功,但是一旦将变量添加到Calc视图的PLACEHOLDER中,它就无法说明我向IP传递了太多字符。有什么建议么???预先感谢。

base_calc =

  select

  PLANT
  ,MATERIAL
  ,MATERIAL_BU
  ,etc....

  from "_SYS_BIC"."CA_EXAMPLE_PRODUCTIVITY"

  (PLACEHOLDER."IP_MATNR"=> :var_MATERIAL,  --<---Fails here. :(
   PLACEHOLDER."IP_PLANT"=> :var_PLANT);

有关SAP SCN的问题。位于here

1 个答案:

答案 0 :(得分:0)

您是否尝试使用WHERE子句代替PLACEHOLDER?

base_calc =

select

PLANT,
MATERIAL,
MATERIAL_BU,
etc....

from "_SYS_BIC"."CA_EXAMPLE_PRODUCTIVITY"

WHERE MATERIAL = var_MATERIAL AND PLANT = var_PLANT;