gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 23:25:44 25 4
gpt4 key购买 nike

最终目标和背景

我的 Qlik 工作表中的最终产品应该有一个显示“% Covered”列的表格。这是一个部门中库存大于或等于要求的项目的百分比。

下面是结束表的示例(覆盖百分比字段是计算字段:

| 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]);

Error: "Data has not been loaded. Please correct the error and try loading again."

[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]);

Error: "Data has not been loaded. Please correct the error and try loading again."

[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

Error: "Unexpected token: ','`

最佳答案

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

内部负载

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

[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]);

关于database - 在 Qlik Sense 数据加载脚本中的何处放置标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58307988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com