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

How to list records with the "NOT IN" filter based in two atributes in GoodData

例如,我有这些 table:

 __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   |

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

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

我也尝试分别对每个代码进行计数,然后将一个与另一个相减,但它没有用(这个指标是有效的,但我需要在报告中看到供应商的名称和GoodData 不允许我 select HOW 选项卡中的 vendor_name 使用此指标):

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

还有其他方法可以让这个计数生效吗?

这是工作方法。您可以使用内部指标来计算每个供应商的销售额,并将其与 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