与 Qlik Sense 中的 Service Now 的动态 REST 连接

Dynamic REST connection to Service Now in Qlik Sense

我正在尝试将 QlikSense 中创建的所有 REST 连接统一到 ServiceNow,因为每次从新 table 中提取数据时我都必须创建一个新连接。这将使将来管理我的所有连接变得困难,因此我试图只有一个连接将根据所需的 table 通过使用“WITH CONNECTION”功能覆盖特定参数。

我尝试像下面的代码一样传递参数,但在加载数据后 table:

中没有任何内容
LET vURL = "http://example.org/.../.../.../nameofthetable?";

RestConnectorMasterTable:
SQL SELECT 
    ...my fields to query from Service NOW...
FROM JSON (wrap off) "result" PK "__KEY_result"
WITH CONNECTION (
URL "$(vURL)",
QUERY "timeout" "900",
QUERY "method" "GET",
QUERY "httpProtocol" "1.1",
QUERY "isKeepAlive" "true",
QUERY "bodyEncoding" "UTF-8",
QUERY "sendExpect100Continue" "true",
QUERY "autoDetectResponseType" "true",
QUERY "queryParameters" "sysparm_query%2u_stateINin_progress,Closed,New%1sysparm_fields%2sys_created_by,%1sysparm_display_value%2true",
QUERY "addMissingQueryParametersToFinalRequest" "false",
QUERY "PaginationType" "Offset",
QUERY "OffsetStartField" "sysparm_offset",
QUERY "IsOffsetStartFieldHeader" "false",
QUERY "OffsetStartFieldValue" "0",
QUERY "OffsetCountFieldName" "sysparm_limit",
QUERY "IsOffsetCountFieldHeader" "false",
QUERY "OffsetCountValue" "10000",
QUERY "OffsetTotalPath" "X-Total-Count",
QUERY "IsOffsetTotalPathHeader" "true",
QUERY "allowResponseHeaders" "false",
QUERY "allowHttpsOnly" "true",
QUERY "useProxy" "false",
QUERY "proxyBypassOnLocal" "false",
QUERY "proxyUseDefaultCredentials" "true"
);

我没有收到任何错误,但我不知道这是否是加载数据的正确语法,或者这是否是我应该使用的正确方法。

我看到其他一些人发布了与此类似的问题,但其中 none 详细解释了他们是如何解决的。

任何人都可以帮助我解决这个问题,因为我已经在 QlikSense 社区中问过但没有运气所以也许这里有人。

参考文献:

1.- Dynamically-load-and-fill-variables-from-a-table-through-a-loop

2.- REST Connector - WITH CONNECTION Syntax

3.- WITH CONNECTION keyword

4.- Passing a parameter to REST connector URL

5.- REST API Connector - Multi-table

WITH CONNECTION部分可以改变连接的一些参数,但不是全部。可以在那里更改 http 参数,例如:url、headers、查询参数和 body。您不能更改其余部分,如:方法(get 或 post)、超时、http 协议等。这些属性是连接特定的,它们必须在连接级别更新(手动编辑连接或通过存储库更新时) API)

查看有关 WITH CONNECTION 关键字的文档

顺便说一下,QUERY 命令只会在发送请求之前在 url 中添加一个查询参数。这就是为什么您没有获得任何数据的原因。例如

let vURL = 'http://example.com'

RestConnectorMasterTable:
SQL SELECT 
    ...my fields to query from Service NOW...
FROM JSON (wrap off) "result" PK "__KEY_result"
WITH CONNECTION (
URL "$(vURL)",
QUERY "type" "XML",
QUERY "subtype" "text"
);

将在发送之前更改 url,实际的 url 将是 http://example.com?type=XML&subtype=text