我的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
错误:“意外令牌:','`
答案 0 :(得分:1)
根据您的尝试,有两种方法:
内部载荷
您可以在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]);
答案 1 :(得分:1)
上面关于装入内标志的答案是正确的,但是为了将来参考,在FROM之前直接有一个逗号,它将引发装入错误。
LOAD
[ProductNumber],
[Requirement],
[Inventory],
[Department],
FROM [lib://Desktop/fake-example-data.xlsx]
应该:
LOAD
[ProductNumber],
[Requirement],
[Inventory],
[Department]
FROM [lib://Desktop/fake-example-data.xlsx]