如何根据 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
例如,我有这些 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