从分析连接开始
创建一个分析连接,从通过 Qlik Cloud 或各种第三方机器学习工具部署的模型中加载和生成数据。这些模型通常公开基于 REST 的 API 端点。在创建和使用连接之前,您需要创建和部署或访问所需的机器学习模型。
除了 Qlik AutoML,还有几个第三方平台可以创建、训练和部署机器学习模型,例如:
-
Azure ML
-
Amazon SageMaker
在 Azure 机器学习工作室中用无代码 AutoML 训练分类模型
为机器学习端点启用分析连接
默认情况下,机器学习端点是禁用的。
租户管理员可以在设置窗口的特性控制下的管理中启用机器学习端点。
使用分析连接和服务器端扩展语法
分析连接可以将数据发送到 Qlik AutoML 或外部暴露的机器学习端点以进行计算。从这些连接返回的数据可以加载到Qlik Sense 应用程序中。
数据加载脚本和图表表达式是可以向 Qlik Sense 应用程序添加分析连接的两种方式。服务器端扩展 (SSE) 函数和参数都在 Qlik Sense 中处理,然后转换为 REST 请求,发送给机器学习模型。SSE 加载脚本和图表表达式必须遵守 SSE 语法。参阅服务器端扩展语法。
数据加载脚本
-
您可以从 SSE 调用返回一个表,并使用 Qlik Sense 数据加载脚本中的 LOAD ... EXTENSION 语句从分析连接加载数据。您可以向模型发送单个表,然后返回单个数据表。
-
当您在 Qlik Sense 数据加载脚本中使用SSE函数(LOAD ... EXTENSION 语句除外)时,基数将被保留,并返回一列。
-
来自任何其他加载语句例如 Load ... From ... 的 SSE 函数调用只支持标量和聚合函数类型。这意味着包含 n 行数据将导致对模型的 n 次调用,除非您将数据聚合为单个调用。
-
将在分析连接中自动检测数据类型。如果数据没有数值以及至少一个非 NULL 文本字符串,则字段被视为文本。在其他任何情况下中,其将被视为数字。可以通过用 String() 或 Mixed() 包装字段名来强制数据类型。String() 强制字段为文本。如果字段是数字,则会提取双重值的文本部分,不会执行转换。 Mixed() 强制字段为双。
图表表达式
-
图表表达式不能使用从 SSE 函数调用已返回的表。当您在图表表达式中使用 SSE 函数时,基数将被保留,并且只有返回的第一列将被 Qlik Sense 使用。
引用数据连接的空间
如果要将应用程序或脚本发布到托管空间,或者希望 SSE 请求引用当前空间中的连接,请使用相对语法。或者,使用对特定空间名称的引用来配置请求。这些概念在加载脚本和图表表达式中都很重要。
有关使用空间感知语法的更多信息,请参阅:
示例 1:加载脚本中的相对空间语法
以下示例是加载脚本中从连接到分析连接的示例。代码已被修改成指向应用程序或脚本当前空间中的连接。这是通过在连接名称的开头添加一个冒号来完成的(在本例中为“:Amazon_Titan_(Amazon_Bedrock)”)。如果没有这个冒号,引用将指向运行重新加载的用户(或重新加载计划所有者)的个人空间中的连接。
EXTENSION endpoints.ScriptEval('{"RequestType":"endpoint", "endpoint":{"connectionname":":Amazon_Titan_(Amazon_Bedrock)"}}', QuestionsTable{Question_ID,Question});
在将应用程序或脚本发布到也包含分析连接的托管空间之前,可以使用这种空间感知语法。
示例 2:图表表达式中的相对空间语法
以下示例是一个图表表达式,其中包含对当前空间中连接的引用。这是通过在连接名称的开头添加一个冒号来完成的(在本例中为“:Amazon_Titan_(Amazon_Bedrock)”)。如果没有这个冒号,引用将指向运行重新加载的用户(或重新加载计划所有者)的个人空间中的连接。
if(vQuestion <> '', endpoints.scriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":":Amazon_Titan_(Amazon_Bedrock)","column":"outputText"}}',vQuestion))
在将应用程序或脚本发布到也包含分析连接的托管空间之前,可以使用这种空间感知语法。
示例 3:加载脚本中的硬编码空间语法
如果希望对分析连接的引用仅在特定空间中起作用,则可以对表达式进行硬编码,使其包含对该空间的直接引用。如果不包括空间名称(也省略了添加到示例 1 和 2 中的冒号),则语法将硬编码为引用运行重新加载的用户(或重新加载计划所有者)的个人空间中的连接。
如果使用选择数据向导添加加载语句,则会自动使用此语法。
EXTENSION endpoints.ScriptEval('{"RequestType":"endpoint", "endpoint":{"connectionname":"My_Shared_Space:Amazon_Titan_(Amazon_Bedrock)"}}', QuestionsTable{Question_ID,Question});
在这种情况下,引用指向名为 My_Shared_Space 的空间中的连接。
示例 4:图表表达式中的硬编码空间语法
该示例与示例 3 相似。如果不包括空间名称(也省略了添加到示例 1 和 2 中的冒号),则语法将硬编码为引用运行重新加载的用户(或重新加载计划所有者)的个人空间中的连接。
if(vQuestion <> '', endpoints.scriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"My_Shared_Space:Amazon_Titan_(Amazon_Bedrock)","column":"outputText"}}',vQuestion))
在这种情况下,引用指向名为 My_Shared_Space 的空间中的连接。