0

我一直在努力理解 Qlik,但是文档很少,而且根本没有大量的脚本示例可以帮助我更快地掌握它。我很沮丧,所以如果我没有很好地解释这一点,我很抱歉。

我的数据很小,只有大约 3500 条记录和 100 列。这是我通过 ODBC 连接连接到的单个表。我需要创建一个新的派生列,该列将保存来自计算的值。我需要在数据加载编辑器中完成此操作。

计算已经给了我,需要从这个伪代码翻译成工作代码:

(sum(Col_A) / total_num__of_records) * value_in_Col_B

  • Col_A 是一个值为 1 或 0 的虚拟列。
  • total_num_of_records 需要是表中总行数的计数。
  • Col_B 是数据库中包含数值(浮点数)的现有列。

在数据加载编辑器中,我需要写这样的东西,但不明白为什么它不起作用。错误消息从字面上显示一个问号,没有解释:

LOAD * , 
     ((SUM(Col_A) / COUNT(Record_ID)) * Col_B) AS New_Column;

这就是我想要做的,但它不起作用,尽管谷歌搜索大量,我无法弄清楚如何在数据加载编辑器中执行如此简单的计算。请帮忙!谢谢!

4

1 回答 1

0

脚本引擎和你一样困惑 :) 笑话。

脚本中的聚合函数需要一个 group by 子句用于所有不在聚合中的字段。没有脚本引擎的组不知道如何 sum() 或 count(),因为它是逐行工作的,因此 Sum(A) = A 和 count(A)=1。

只知道您在这里告诉我们的内容,这个表达式在数据加载编辑器中没有任何意义,并且通过前端在表达式编辑器中得到更好的服务和完美的意义。它会是:

((SUM(Col_A) / COUNT(total Record_ID)) * Col_B)

这会给你 Col_B 乘以标记为 1 的事务的百分比。所以可能是任务完成的百分比或类似的东西。

要在数据加载编辑器中执行此操作,您需要使用您的 group bys 创建一个临时表,然后创建相同的,然后您永远无法在任何其他级别显示该比率,但您在 group by 中定义的内容,因此您将失去所有权力Qlik 前端。

像这样的东西:(我刚刚添加了 DEPARTMENT 以表明所有不在 sum()、count() 中的字段都需要在 group by 中。这包括 Col_B 假设您想要每个 DATE 每个 DATE 每个 DEPARTMENT 的 Col_B 的每个值都有一个 New_Column 值)

DAILY_COMP_RATIOS:
load 
    DATE,
    DEPARTMENT,
    ((SUM(Col_A) / COUNT(Record_ID)) * Col_B) AS New_Column
resident 
    SOURCE_TABLE
group by
    DATE,
    DEPARTMENT,
    Col_B;
于 2020-11-05T18:21:34.707 回答