Sql 如何查询允许在仪表板中的计算字段上使用多个筛选器的表?

Sql 如何查询允许在仪表板中的计算字段上使用多个筛选器的表?,sql,nosql,google-bigquery,dashboard,Sql,Nosql,Google Bigquery,Dashboard,首先介绍一下背景知识: 我正在为一个工作项目工作,我真的被这个项目难倒了。我现在有一个相对较小的数据集,由大约1000条记录组成,这些记录都是接受调查的人的回复 对于这个特殊的案例,我试图计算一个称为NPS(净推广人分数)的数字,该数字基于个人对其拥有的产品给予0-10的“分数”。然后,取给产品打9分或10分的人的百分比(促销员),然后从中减去给产品打0-6分的人的百分比(诽谤者)。这是非常基础的数学 因此,公式如下:%promotors-%Detractors=NPS 现在是事情变得更复杂的部

首先介绍一下背景知识:

我正在为一个工作项目工作,我真的被这个项目难倒了。我现在有一个相对较小的数据集,由大约1000条记录组成,这些记录都是接受调查的人的回复

对于这个特殊的案例,我试图计算一个称为NPS(净推广人分数)的数字,该数字基于个人对其拥有的产品给予0-10的“分数”。然后,取给产品打9分或10分的人的百分比(促销员),然后从中减去给产品打0-6分的人的百分比(诽谤者)。这是非常基础的数学

因此,公式如下:%promotors-%Detractors=NPS

现在是事情变得更复杂的部分。使用调查中的其他回复,我希望能够根据这些其他回复的分组筛选NPS分数。在这篇文章中,我们将把它限制在三个方面:“消费者群体”(我们称他们为S1、S2、S3、S4、S5)、性别(M或F)和世代(Z世代、千禧一代、X世代、婴儿潮一代+)

我已经能够让它与一个过滤器一起工作,您将在下面的代码中看到。问题是允许同时使用多个过滤器

CREATE OR REPLACE TABLE
  Dataset1.NewTable1 AS
SELECT
  DISTINCT Segment,
  SUM(Promotor) - SUM(Detractor) AS Net_Promotor_Diff,
  SUM(S1_count) AS S1_Count,
  SUM(S2_count) AS S2_Count,
  SUM(S3_count) AS S3_Count,
  SUM(S4_count) AS S4_Count,
  SUM(S5_count) AS S5_Count,
  SUM(S1_count) + SUM(S2_count) + SUM(S3_count) + SUM(S4_count) + SUM(S5_count) AS Total_Count
FROM (
  SELECT
    ResponseId,
    Segment_column AS Segment,
    IF (SAFE_CAST(NPS_Score AS Int64) > 8, 1, 0) AS Promotor,
    IF (SAFE_CAST(NPS_Score AS Int64) < 7, 1, 0) AS Detractor,
    IF (SAFE_CAST(NPS_Score AS Int64) IN (7, 8), 1, 0) AS Neutral,
    IF (Segment_column = 'Segment 1', 1, 0) AS S1_Count,
    IF (Segment_column = 'Segment 2', 1, 0) AS S2_Count,
    IF (Segment_column = 'Segment 3', 1, 0) AS S3_Count,
    IF (Segment_column = 'Segment 4', 1, 0) AS S4_Count,
    IF (Segment_column = 'Segment 5', 1, 0) AS S5_Count
  FROM
    Dataset1.MainTable
  WHERE
    Segment_column IS NOT NULL )
GROUP BY
  Segment
好吧,希望我还没有失去你。现在,在下面,我将发布我在仪表板工具中使用的计算字段,以向您展示此查询的应用程序:

100*(sum(Net_Promotor_Diff)/sum(Total_Count))
就像我说的,我的“段”过滤器工作得非常好。我想做的是能够计算出带有多个过滤器的NPS字段,例如:受访者是第1部分千年男性的NPS是什么


如有任何建议或建议,我们将不胜感激。如果我不得不猜测的话,这个原始的查询和表可能不适合我最后要做的事情,因为它不允许多维汇总。

无需执行
在此处选择DISTINCT
GROUP BY
不返回重复项。检查-我觉得它应该与您的案例相关无需执行
选择DISTINCT
此处,
GROUP BY
不返回重复项。检查-我觉得它应该与您的案例相关
100*(sum(Net_Promotor_Diff)/sum(Total_Count))