在Qlik Sense数据加载脚本中的何处放置标志?

问题描述 投票:1回答:1

最终目标和背景

大家好,感谢您的阅读!我的Qlik工作表中的最终产品应有一个显示“已覆盖百分比”列的表。这是指部门中库存大于或等于需求的项目所占的百分比。

这里是茶几的外观示例(涵盖百分比字段是计算字段:

| Department | Count of Products | Percent Covered |
|------------|-------------------|-----------------|
| Bio        | 34858             | 89.40%          |
| Mech       | 50119             | 92.05%          |
| Admin      | 560               | 98.22%          |

为了希望更好地说明这一点,这是将计算应用于产品编号表的样子:

| Product Number | Inventory | Requirement | Percent Covered |
|----------------|-----------|-------------|-----------------|
| 444391         | 112       | 113         | 99.11%          |
| 444569         | 86        | 350         | 24.57%          |
| 443551         | 12        | 11          | 109.09%         |

问题

尽管它可以在少量数据中进行测试,但是当加载实际数据时,Qlik无法处理图表本身上的表达式并引发超时错误:

Count({<ProductNumber = {"=[Inventory] >= [Requirement]"}>} ProductNumber) / Count(ProductNumber)

为了解决这个问题,我一直在尝试在数据加载脚本中完成上述工作。在Qlik文档和社区论坛的帮助下,这显然应该起作用:在数据加载器脚本中:If([Inventory] >= [Requirement], 1, 0) as Flag在表达式中:Count({<Flag = {'1'}>} ProductNumber)/Count(ProductNumber)

问题是,无论我将其放在脚本中的什么位置,都会引发错误。

我尝试过的

我已经尝试过所有带有或不带有分号的组合。

[MyAwesomeSheet]:
If([Inventory] >= [Requirement], 1, 0) as Flag
LOAD
    [ProductNumber],
    [Requirement],
    [Inventory],
    [Department],
 FROM [lib://Desktop/fake-example-data.xlsx]
(ooxml, embedded labels, table is [MyAwesomeTable]);

错误:“数据尚未加载。请更正错误,然后尝试再次加载。”

[MyAwesomeSheet]:
LOAD
    [ProductNumber],
    [Requirement],
    [Inventory],
    [Department],
 FROM [lib://Desktop/fake-example-data.xlsx]
If([Inventory] >= [Requirement], 1, 0) as Flag
(ooxml, embedded labels, table is [MyAwesomeTable]);

错误:“数据尚未加载。请更正错误,然后尝试再次加载。”

[MyAwesomeSheet]:
LOAD
    [ProductNumber],
    [Requirement],
    [Inventory],
    [Department],
 FROM [lib://Desktop/fake-example-data.xlsx]
(ooxml, embedded labels, table is [MyAwesomeTable]);
If([Inventory] >= [Requirement], 1, 0) as Flag

错误:“意外令牌:','`


任何帮助将不胜感激!谢谢!

database scripting qliksense
1个回答
0
投票

根据您的尝试,有两种方法:

内部载荷

您可以在load语句本身内部创建标志字段

[MyAwesomeSheet]:
LOAD
    [ProductNumber],
    [Requirement],
    [Inventory],
    [Department],
    If([Inventory] >= [Requirement], 1, 0) as Flag
 FROM [lib://Desktop/fake-example-data.xlsx]
(ooxml, embedded labels, table is [MyAwesomeTable]);

之前的加载

另一种技术正在使用preceding load

您可以根据需要预先装载许多货物。每个负载都从其下面的先前负载中加载数据]

[MyAwesomeSheet]:
Load
    *,
    If([Inventory] >= [Requirement], 1, 0) as Flag
LOAD
    [ProductNumber],
    [Requirement],
    [Inventory],
    [Department],
 FROM [lib://Desktop/fake-example-data.xlsx]
(ooxml, embedded labels, table is [MyAwesomeTable]);
© www.soinside.com 2019 - 2024. All rights reserved.