【发布时间】:2017-03-02 05:30:09
【问题描述】:
我需要从 python 访问文本区域计算值,而不首先使用 JS 或 R 脚本(我们不使用统计服务器)将值传输到文档属性。这可能吗?
开始之前:
如果任何受访者认为此问题不完整、格式不正确或标记不正确,请告诉我,以便我尝试解决这些问题。我正在做一个有点敏感的项目,所以我在这里发布的一些内容是故意含糊不清的。鉴于我已与客户签署的 NDA,我将根据我能提供的最完整信息来满足为试图澄清问题而要求提供更多信息的请求。
现在,定义问题:
我正在使用计算值来确定数据表中标记值和过滤值之间的差异。 目的是传递给信息链接的结果参数的效率。我们正在使用超过一百万行,并且对于这种数据量来说,为每个标记行传递唯一值不是一个选项。 我设计了一个 python 脚本,可以根据交叉表的水平轴和垂直轴比较标记值和过滤值。有问题的值由文本区域计算值生成。表达式类似于:
Substitute(Substitute(UniqueConcatenate(
Substitute(
Concatenate([HierarchyCol1],"|",[HierarchyCol2],"|",[HierarchyCol3],"|",[HierarchyCol4],"|",[HierarchyCol5],"_-", [HorixontalAxisCol],
"_+",
Count(RowId()) OVER (Intersect([HierarchyCol1],[HierarchyCol2],[HierarchyCol3],[HierarchyCol4],[HierarchyCol5]))),",","^")),
", ",",+"),"^",",")
这个特定的表达式来自被检查的层次结构的第 5 级。将有 2 个计算值共享此表达式。 一个受到页面过滤的数据限制,另一个受到相关可视化中使用的标记的限制。 这允许我传递导致 where 条件的参数,例如:
WHERE
[filteredColumn] in (...)
and
(
(
[HierarchyCol1] in (...)
AND
[HorixontalAxisCol] in (...)
)
or
(
[HierarchyCol2] in (...)
AND
[HorixontalAxisCol] in (...)
)
(
[HierarchyCol3] in (...)
AND
[HorixontalAxisCol] in (...)
)
(
[HierarchyCol4] in (...)
AND
[HorixontalAxisCol] in (...)
)
(
[HierarchyCol5] in (...)
AND
[HorixontalAxisCol] in (...)
)
)
像这样使用 JS:
var oldValue5=0
transferValue = function(){
//get value from calcVal spotfire Calculated Value Dyn Item
value5=$("#HierarchyCol5CV").text().trim()
//update input when oldValue changes
if(value5!=oldValue5){
$("#HierarchyCol5DP input").val(value1).blur();
}
oldValue5=value5
}
setInterval(transferValue,1000) //1 time per second
输入字段的 ID 为“HierarchyCol5DP 输入”,计算值的 ID 为“HierarchyCol5CV”,以便将计算值放入文档属性实际上在较小的体积数据集上起作用,但文本在较大的数据集上变得太大,特别是在层次结构和水平轴上具有较高基数的数据集上。 JS 实际上将 Spotfire 冻结到完全没有响应的状态。
那么,真正的问题:
如何在python中调用文本区域计算值的.Value?我们没有使用统计服务器,所以 R 不是一个选项,而且 JS 的开销使它基本上无法使用。 -OR- 是否有更有效的方法来完成所需的 SQL where 子句?
【问题讨论】:
标签: ironpython spotfire