javascript - QlikSense Field selectValues API - 当字段名称是混搭应用程序中的日期数据类型时不起作用
问题描述
当字段为日期格式时,Qliksense SelectValues Field API 中的问题
你好 ,
只是为您提供背景 - 我们在我们的 Web 应用程序中打开了多个 qlik 应用程序,当用户在主应用程序中进行选择时 - 我们在所有打开的应用程序中应用通用选择。对于数据模型中标记为日期的字段,我们遇到了这个奇怪的问题。请检查以下示例。
版本:2020 年 6 月补丁 7 v13.82.15
当字段为日期格式时,我遇到了 selectValues Field API 的问题。
1. 场景 1 - 字段:Month_Year 是日期数据类型:
比方说,我有 val 数组,其中我选择了日期类型字段“Month_Year”的值。
Var FieldName = "Month_Year"; // field in datamodel script : Date#(Month_Year,'MMM YYYY') AS Month_Year
var valArray[]= {
0:"Jan 2020"
1:"Feb 2020"
2:"Mar 2020"
}
app.Field(FieldName ).selectValues(valArray);
它没有在所需的“应用程序”中选择值,因为 FieldName = Month_Year 派生为 Date#(Month_Year,'MMM YYYY')。
2. 场景 2 - 字段:Month_Year 是 TEXT() 字符串数据类型:
比方说,我有 val 数组,其中我选择了文本/字符串类型字段“Month_Year”的值。
Var FieldName = "Month_Year"; // field in datamodel script : Text(Month_Year) AS Month_Year
var valArray[]= {
0:"Jan 2020"
1:"Feb 2020"
2:"Mar 2020"
}
app.Field(FieldName ).selectValues(valArray);
现在,如果我们将字段作为文本(月_年)作为月_年,则相同的字段正在字段中进行选择。
有人在您的 mash up 应用程序中遇到过这个问题吗?
解决方案
这是因为 Qlik 以双重表示形式存储值 - 数字和文本(特别是对于标记为日期的字段)。的实际值01/01/2020
实际上是43831
并将其显示为01 Jan 2020
(或任何日期格式)。因此,当尝试选择Jan 2020
没有发生任何事情时,因为这样的值不存在。
当您“打破”双重表示(使用该 Text()
函数)时,选择有效,但可能会影响性能(主要基于应用程序中的数据量)
查看dual()函数文档以获取有关此行为的更多信息。
为了在这种情况下选择某些东西,您必须找到基础值或元素编号并选择它们。
就我个人而言,我正在为所需的字段创建临时列表框,当我必须选择时,我会找到qElemNumber
所需的值,然后在列表框中选择它们
// let values = ['array', 'of', 'values', 'to', 'select']
// create the session object
let sessionObj = await qDoc.createSessionObject(lbDef);
// get the layout so we can loop through the data pages
let layout = await sessionObj.getLayout();
// get the qElemNumber for the required values
// WARNING: if the field contains more than 1000 (i think) DISTINCT values then we'll have to loop through all the databased
let index = layout.field.qListObject.qDataPages[0].qMatrix.filter(function (m) {
return values.indexOf(m[0].qText) > -1
}).map(function (e) {
return e[0].qElemNumber
});
// perform the selection
let selection = await sessionObj.selectListObjectValues('/field/qListObjectDef', index, toggle);
推荐阅读
- sql - Spring 和 Progress-4GL - 更改 JPA 模式命名查询格式
- java - 使用 Java 修复结束标记
- r - 在 mgcViz 图中结合多个集群的 gam 平滑
- spring - 使用 Spring 集成将字符串从 mqtt 转换为对象
- javascript - 用于拆分数学表达式的正则表达式
- linux - Substrate 节点模板 make: *** [Makefile:19: build] 错误 101
- arrays - 使用自定义数据进行多选
- css - 语法错误:未知单词 (8:3) 请在 react JS 中解决此错误
- python - 自动检测矩阵大小,numpy
- angular - 在 Reactive Form 上制作 FormArray 控件