注:此博客是在旧配置文件上重新创建一个旧博客,作为将我的所有内容整合到一个综合配置文件的过程的一部分。
此博客的目的是共享在HANA中传递参数和在SELECT语句中使用占位符的两个端到端示例。
我创建了两个场景:
最大的我学到的一课是预先决定要调用什么参数,并且在创建参数时不要输入任何拼写错误,我在Table函数中拼写了一个错误,我花了很长时间才修复,因为HANA Studio似乎对旧参数名有记忆,而且我很难让对象在链接时激活。这种挣扎也可能是由于我的HANA工作室版本,甚至玩参数太晚了?
对于这两种情况,我都使用了来自_SYS\u BI模式的M\u财政日历表,企业管理应用,它是一个标准的交付表,可以在HANA Studio中使用"时间生成"功能来填充。
当显示表的内容时,您将看到与我们的示例相关的以下列:日历变量,会计年度和会计期间。我们已经将变体硬编码为V6,并将使用参数检索特定会计年度和会计期间的日期。
首先,我创建了一个表函数TF\u DEMO\u Fiscal,其中包含两个输入参数:P\u FISCYEAR和P\u FISCPER。然后,我们只需在从M\u财政日历表中选择时使用WHERE子句中的输入参数即可。
然后可以将表函数TF\u DEMO\u财政添加到计算视图CV\u DEMO\u财政中的投影节点。由于我们的表函数需要输入参数,移动物联网,我已经在计算视图的语义上创建了两个输入参数:P\u FISCYEAR和P\u FISCPER。
一旦创建了参数,请选择包含表函数TF\u DEMO\u FISCAL的投影节点,这样节点的输出窗格就可以在右侧看到。我在语义节点上创建的参数是可见的,右击"输入参数"文件夹,数据分析法,选择"管理映射"。
这允许我们将来自表格函数(左侧)的参数映射到计算视图(右侧)中的参数。
保存并激活计算视图,然后进入数据预览。这将打开"变量和输入参数"对话框,我现在可以在其中选择2018财年和第1财年。
正如预期的那样,参数被传递到表函数,只检索到所需的数据,云信息,即7月的31条记录。
此时,您可以按"显示日志"查看执行时的SQL向您展示数据,这很有用,韩国云服务器,因为我们可以看到占位符用于将参数传递给计算视图,如果我们想从其他过程调用计算视图,我们将使用类似的编码。
生成的SQL:
选择TOP 5000"会计年度"、"会计期间"、"日期SQL",sum("Count")为"\u SYS\u BIC."系统中的"Count"-local.private.xxx/CV\u DEMO\u财政"('PLACEHOLDER'=('$$P\u FISCYEAR$$','2018'),'PLACEHOLDER'=('$$P\u FISCPER$$','1'))按"会计年度","会计期间","日期SQL"
分组。在第二种情况下,我们将表M\u FISCAL\u CALENDAR直接拉到计算视图中,并且仍然有"相同的两个参数:P\u FISCYEAR和P\u FISCPER.
到Projection\u 1节点(包含M\u FISCAL\u CALENDAR),我们对数据应用了三个过滤器:
注意参数名称被$$包围。
保存并激活计算视图,然后转到数据预览。这将打开"变量和输入参数"对话框,我现在可以选择2018财年和1财年,执行时显示预期数据。
然后我创建一个名为PR\u DEMO\u Fiscal的过程,在该过程中,我们将从计算视图中进行选择。该过程有两个参数:P\u FISCYEAR\u PROC和P\u FISCPER\u PROC.
注意:名称需要与计算视图中的参数名称不同。如果使参数名相同,则它将不起作用,并将出现随机错误:"无法创建目录对象:参数类型不匹配;无法将列表达式用作列视图参数:"尽管如此,我始终遇到了奇怪的错误,然后我使参数名不同,当我他们同样去测试原来的问题它消失了。不知道为什么!感谢Kostia Kharchenko(@kostyah)在2015年的帖子中为我解答了这个问题。
然后我执行了这个程序,选择了2018财年和1财年。
在这个程序中,我要求选择的最长日期,它正确地返回了2017年7月31日
希望这个博客有用。我已经搜索和阅读了许多博客和占位符和计算视图的答案,这似乎是一个许多人都在努力解决的问题。发展愉快!