首页 > 解决方案 > Google Big Query - 如何将列中空值的特定百分比分配给特定类别?

问题描述

我正在研究一个数据集,我正在分析生产和开发进口之间的比率。该表如下所示:

  Date           Team_id      Outcome
    
2020-10-07           1        Production
2020-10-09           1        Development
2020-10-11           1        Development
2020-10-13           1        Production
2020-10-15           1        Development
2020-10-17           1        Production
   ...
   ...
   ...
2020-06-19           1          NULL
2020-04-21           1          NULL
2020-03-23           1          NULL
2020-01-25           1          NULL

作为一家年轻的公司,我们最近才开始收集这些信息。因此,对于在我们开始收集有关导入是在生产环境还是开发环境中完成的数据之前发生的日期,此结果列中的所有值都是 Null。

对于所有空值,我想假设 75% 的导入是在开发中完成的,25% 的导入是在生产中完成的。(百分比是随机的以适合上面的示例表)因此,我的目标是将所有 Null 值的 75% 转换为 Developemt 类别,并将 Null 值的 25% 转换为 Production 类别。Null 值的顺序分配什么值无关紧要,重要的是它们中的 75% 变为开发,其中 25% 变为生产。考虑到这一点,我希望上面的表格看起来像下面的表格:

      Date           Team_id      Outcome
        
    2020-10-07           1        Production
    2020-10-09           1        Development
    2020-10-11           1        Development
    2020-10-13           1        Production
    2020-10-15           1        Development
    2020-10-17           1        Production
       ...
       ...
       ...
    2020-06-19           1        Development
    2020-04-21           1        Production
    2020-03-23           1        Development
    2020-01-25           1        Development

同样,根据我的目标表,哪些为空的值变为开发或生产并不重要,重要的是 75% 的空值变为开发,25% 的空值变为生产。

以我目前的技能,我知道如何通过 CASE 语句将空值分配给特定值。我不知道如何将百分比值分配给空值以将所需的空值百分比转换为特定类别,例如生产/开发

提前感谢您的帮助!

标签: google-bigquery

解决方案


数一数你有多少nulls
选择空值的 75% 位置,例如:前一个项目占 75% 和后来 25% 的那一天。

然后发出两个更新语句,一个where date<T1和另一个where date>=T1相应地更新。


推荐阅读