Google 大查询:如何过滤输出以仅显示至少具有 1 个非零值的行?
Google Big Query: how to filter output to show only rows that have at least 1 non-zero value?
我正在处理如下所示的数据集:
作为此查询的结果:
SELECT "campaign_1" campaign_name, 0 clicks, 5 impressions, 1000 cost UNION ALL
SELECT "campaign_2", 1, 5, 0 UNION ALL
SELECT "campaign_3", 0, 0, 0
我的目标是显示此 table 中至少有 1 个非零值的所有行。换句话说,我想要的输出是:
为了解决我自己的问题,我尝试使用一个包含每一列名称的大 WHERE 子句,并按以下格式列出每一列:WHERE column_1 != 0 AND column_2 != 0 ...
。这没有用,因为它也消除了前 2 行,因为它们也包含 0。
我在 Whosebug 上搜索了这个问题的现有答案,虽然我找到了 Mikhail Berlyant 对类似问题的解决方案 here,但这个特定的解决方案不适用于这种情况。因此,我将其发布为一个新问题。
提前感谢您分享您的知识和帮助!
如果值不能为负数或 null
(如示例数据所示),您可以:
where column_1 + column_2 + ... > 0
或者您可以使用 greatest()
:
where greatest(column_1, column_2, ...) > 0
在这种情况下,您是否可以在所有条件之间使用 OR
运算符。在那种情况下,您仍然会在保留 1 和 2 的同时消除 campaign_3。
WHERE column_1 != 0 OR column_2 != 0
....但是 GMB 概述的内容似乎更简单并且更不容易出错。
如果出于某种原因您想重复使用您在问题中引用的 post 的解决方案 - 您可以使用下面的变体
#standardSQL
SELECT *
FROM `project.dataset.table` t
WHERE REGEXP_CONTAINS(TO_JSON_STRING(t), r':[^0][,}]')
带输出(如果适用于您问题中的样本数据)
使用此解决方案的潜在好处是,如果您有超过 3-5 个 columns/metrics - 在这种情况下,您不需要在查询中显式调用它们
另请注意:以上假设广告系列的名称有多个字符
我正在处理如下所示的数据集:
作为此查询的结果:
SELECT "campaign_1" campaign_name, 0 clicks, 5 impressions, 1000 cost UNION ALL
SELECT "campaign_2", 1, 5, 0 UNION ALL
SELECT "campaign_3", 0, 0, 0
我的目标是显示此 table 中至少有 1 个非零值的所有行。换句话说,我想要的输出是:
为了解决我自己的问题,我尝试使用一个包含每一列名称的大 WHERE 子句,并按以下格式列出每一列:WHERE column_1 != 0 AND column_2 != 0 ...
。这没有用,因为它也消除了前 2 行,因为它们也包含 0。
我在 Whosebug 上搜索了这个问题的现有答案,虽然我找到了 Mikhail Berlyant 对类似问题的解决方案 here,但这个特定的解决方案不适用于这种情况。因此,我将其发布为一个新问题。
提前感谢您分享您的知识和帮助!
如果值不能为负数或 null
(如示例数据所示),您可以:
where column_1 + column_2 + ... > 0
或者您可以使用 greatest()
:
where greatest(column_1, column_2, ...) > 0
在这种情况下,您是否可以在所有条件之间使用 OR
运算符。在那种情况下,您仍然会在保留 1 和 2 的同时消除 campaign_3。
WHERE column_1 != 0 OR column_2 != 0
....但是 GMB 概述的内容似乎更简单并且更不容易出错。
如果出于某种原因您想重复使用您在问题中引用的 post 的解决方案 - 您可以使用下面的变体
#standardSQL
SELECT *
FROM `project.dataset.table` t
WHERE REGEXP_CONTAINS(TO_JSON_STRING(t), r':[^0][,}]')
带输出(如果适用于您问题中的样本数据)
使用此解决方案的潜在好处是,如果您有超过 3-5 个 columns/metrics - 在这种情况下,您不需要在查询中显式调用它们
另请注意:以上假设广告系列的名称有多个字符