如何使用" NOT IN"列出记录过滤器基于GoodData中的两个属性

时间:2017-06-19 15:07:03

标签: gooddata maql

例如,我有这些表:

 __vendors___     _______sales_______
|V_Cod|Name  |   |S_Cod |Item  |Price|
|1    |Alan  |   |2     |apple |10   |
|2    |Fred  |   |2     |sugar |5    |
|3    |Alex  |   |3     |rice  |9    |
|4    |David |   |3     |meat  |20   |

我想列出销售表中没有记录的所有卖家,但在MAQL编辑器中,以下指标似乎不起作用:

select count(V_Cod) where V_Cod not in (S_Cod)

我还试图分别从每个代码中计算一个,然后用另一个代码减去一个,但它没有用(这个指标是有效的,但我需要在报告中看到供应商的名称, GoodData不允许我使用此指标在HOW选项卡中选择vendor_name:

select (select count(V_Cod)) - (select count(S_Cod))

还有另一种方法可以使这个计数工作吗?

1 个答案:

答案 0 :(得分:3)

这是一种有效的方法。您可以使用内部指标来计算每个供应商的销售额,并将其与IFNULL功能一起使用。然后,您可以使用此指标过滤外部指标,这只是供应商的简单计数。

SELECT COUNT(V_Cod) WHERE (SELECT IFNULL(COUNT(S_Cod), 0) BY V_Cod)=0

目前有必要使用IFNULL,因为没有销售的供应商不会被内部指标返回,因此不满足条件。

此指标具有供应商的维度,因此您可以在HOW中使用V_Cod和名称。

附注 - 从示例中看,S_Cod似乎不是Sales中的连接点(更可能看起来像是对V_Cod的引用)。从性能角度来看,要计算每个供应商的销售数量,最好使用COUNT(销售记录)或COUNT(无论是什么是连接销售点)而不是COUNT(S_Cod),因为引擎可以做简单的计数而没有明显的

SELECT COUNT(V_Cod) WHERE (SELECT IFNULL(COUNT(Records of sales), 0) BY V_Cod)=0