这是我第一次使用qlikview,因为我有使用SQL的经验,所以非常简单。我正在为求职申请,但我有一个问题。我需要做一个计数声明。首先,最好的做法是将计数放入Load语句或Select语句中?还是取决于具体情况?其次,我目前在load语句中有它,它给了我一个错误。这是代码:
//This is the Order Details Table
OrderDetails:
LOAD OrderID & LineNo as OrderLineKey, OrderID, /*LineNo,*/ Discount, ProductID, Quantity,
UnitPrice, UnitPrice*Quantity*(1-Discount) as Sales, Count(ProductID) as ProductIDRecordCounter;
SQL SELECT OrderID, Discount, Quantity, ProductID, UnitPrice, LineNo
FROM `Order Details`
GROUP BY OrderID, ProductID, Discount, Quantity, UnitPrice, LineNo;
这是它给我的错误:
无效的表达式SQL SELECT OrderID,Discount,Quantity,ProductID, UnitPrice,LineNo FROM
Order Details
GROUP BY OrderID,ProductID, 折扣,数量,UnitPrice,LineNo
在添加count语句之前(当然是语句工作所必需的组)之前它是有效的。
答案 0 :(得分:0)
SQL语句将发出SQL查询,因此首先确保在对数据库执行SQL语句后运行的所有内容(例如使用SQL Management Studio,SQL Developer或其他一些工具可以使用测试SQL查询。)
LOAD语句描述了Qlik将对从前一个命令(另一个LOAD或SQL)接收的数据执行的其他步骤。乍一看,我会说你可以将LOAD语句中的大部分逻辑转移到SQL语句而不会造成太大的伤害。我会完全放弃在你的场景中使用额外的LOAD命令(在SQL命令之上)。
答案 1 :(得分:0)
同意布鲁诺。 如果可能移动Group By
选择中的SQL
语句。如果你的数据很小,你不会看到很大的速度差异,但是在大数据集上,速度是显而易见的(在SQL
中快得多)
这样写Group By
子句用于SQL
语句,但实际的聚合函数在QlikView
中,因此你得到错误。
如果您想保持这样(从SQL
加载,然后在QlikView
中汇总),您的代码应为:
OrderDetails:
LOAD
OrderID & LineNo as OrderLineKey,
OrderID,
/*LineNo,*/
Discount,
ProductID,
Quantity,
UnitPrice,
UnitPrice * Quantity * (1-Discount) as Sales,
Count(ProductID) as ProductIDRecordCounter
GROUP BY
OrderID,
ProductID,
Discount,
Quantity,
UnitPrice,
LineNo;
SQL
SELECT
OrderID,
Discount,
Quantity,
ProductID,
UnitPrice,
LineNo
FROM `Order Details`;