将外部参数传递给 QV 脚本
Passing external parameter to QV script
我是 QlikView 的新手,正在寻找有关如何将外部参数传递给 qv 脚本(即 qvw 文件)的指导。
以下是我正在处理的场景:
我们正在创建一个来源为数据库的报告,我们将使用自动化工具从 Linux 服务器触发脚本。在做了一些研究之后,我发现了两种从 QV 脚本连接到数据库的方法。
1) 使用脚本中的连接字符串连接数据库,但在我们的例子中,密码每 3 个月更改一次。所以它取消了这个选项。
2) 其他选项是从 linux 作业在 qv 服务器上创建一个文本文件,该文件将保存连接字符串并将该文本文件包含到脚本中。我的情况排除了此选项,因为我们的 qv 服务器由其他团队共享,并且将密码硬编码在公共服务器上的文件中是不安全的。
现在我正在考虑将连接字符串或用户名和密码作为参数从自动化工具传递给脚本。
是否可以从 linux 服务器向 qv 脚本传递外部参数?如果是,该怎么做?
如下所示:
ODBC CONNECT TO server (XUserId is $(vuser), XPassword is $(vpwd));
SQL SELECT * FROM db.table;
$(vuser)
和 $(vpwd)
是变量。
提前感谢您的宝贵时间,如果您需要对此进行更多说明,请告诉我。
Qlikview Reference Manual
的 第 7.1 章 Command Line Syntax
(我强烈建议大量使用)说:
/v
If this switch is immediately followed by a variable name and an assignment, the variable will obtain the
assigned value before the script execution starts.
什么手册不会告诉你,变量必须存在于脚本中,即你通过设置->变量概述[=25添加变量=] Ctrl-Alt-V 然后你可以通过:
qv /r /vvuser=user1 file.qvw
我使用了不同的解决方案。在每个 qlikview 文件中,我添加行
$(must_include=.\etc\DBConnect.txt);
然后在文本文件 DBConnect.txt 中定义连接,它可能如下所示:
ODBC CONNECT TO [conn] (XUserId is cRQCaaaaaaaaaaabbbbbbbROaA, XPassword is YaaaaaaBBBBBBBBZ);
这样公司中的所有用户都可以使用相同的 qlikview 文件并使用他们自己的凭据刷新它。但是,所有与服务器的 ODBC 连接都必须具有相同的名称。
我是 QlikView 的新手,正在寻找有关如何将外部参数传递给 qv 脚本(即 qvw 文件)的指导。
以下是我正在处理的场景:
我们正在创建一个来源为数据库的报告,我们将使用自动化工具从 Linux 服务器触发脚本。在做了一些研究之后,我发现了两种从 QV 脚本连接到数据库的方法。
1) 使用脚本中的连接字符串连接数据库,但在我们的例子中,密码每 3 个月更改一次。所以它取消了这个选项。
2) 其他选项是从 linux 作业在 qv 服务器上创建一个文本文件,该文件将保存连接字符串并将该文本文件包含到脚本中。我的情况排除了此选项,因为我们的 qv 服务器由其他团队共享,并且将密码硬编码在公共服务器上的文件中是不安全的。
现在我正在考虑将连接字符串或用户名和密码作为参数从自动化工具传递给脚本。
是否可以从 linux 服务器向 qv 脚本传递外部参数?如果是,该怎么做?
如下所示:
ODBC CONNECT TO server (XUserId is $(vuser), XPassword is $(vpwd));
SQL SELECT * FROM db.table;
$(vuser)
和 $(vpwd)
是变量。
提前感谢您的宝贵时间,如果您需要对此进行更多说明,请告诉我。
Qlikview Reference Manual
的 第 7.1 章 Command Line Syntax
(我强烈建议大量使用)说:
/v
If this switch is immediately followed by a variable name and an assignment, the variable will obtain the assigned value before the script execution starts.
什么手册不会告诉你,变量必须存在于脚本中,即你通过设置->变量概述[=25添加变量=] Ctrl-Alt-V 然后你可以通过:
qv /r /vvuser=user1 file.qvw
我使用了不同的解决方案。在每个 qlikview 文件中,我添加行
$(must_include=.\etc\DBConnect.txt);
然后在文本文件 DBConnect.txt 中定义连接,它可能如下所示:
ODBC CONNECT TO [conn] (XUserId is cRQCaaaaaaaaaaabbbbbbbROaA, XPassword is YaaaaaaBBBBBBBBZ);
这样公司中的所有用户都可以使用相同的 qlikview 文件并使用他们自己的凭据刷新它。但是,所有与服务器的 ODBC 连接都必须具有相同的名称。