【问题标题】:BigQuery QuantilesBigQuery 分位数
【发布时间】:2018-12-25 08:01:34
【问题描述】:

我想使用 BigQuery 和 Datalab 进行异常值检测。 MIN 和 MAX 给我相同的值,但分位数不同。 BigQuery 给了我

Row f0_    f1_      approx_quantiles     
1   0.01   820.55   0.01     
                    190.04   
                    820.55

这似乎是错误的,它们只是最小值和最大值。 Datalab 给我其他分位数。

我做到了:

SELECT MIN(Menge),MAX(Menge),APPROX_QUANTILES(Menge,2)  AS approx_quantiles  FROM `nifty-stage-155512.de_veolia_vus_dev_views.tank_data_4`

其他人有同样的经历吗?或者有人有解决方案吗???

编辑

从datalab我得到

0.25     61.645
0.50    190.000
0.75    253.000
Name: MENGE, dtype: float64

【问题讨论】:

    标签: sql statistics google-bigquery google-cloud-datalab


    【解决方案1】:

    我有点困惑。你想要第 25 和第 75 分位数吗?来自文档。

    APPROX_QUANTILES

    APPROX_QUANTILES([DISTINCT] 表达式,数字 [{IGNORE|RESPECT} NULLS])

    说明

    返回一组表达式值的近似边界,其中数字表示要创建的分位数。该函数返回一个 number + 1 个元素组成的数组,其中第一个元素是近似最小值,最后一个元素是近似最大值。

    如果需要更多分位数,则需要增加“数字”的值。所以 4 会给你 [min,25th,50th,75th,max] 例如

    【讨论】:

    • 查看我的编辑。通常我会期望其他分位数。所以我 61 岁及以下的所有东西以及 253 岁以上的所有东西都可能是一个潜在的异常值
    • 所以 APPROX_QUANTILES(Menge,4) 会给你这些值作为数组中的第二个和第四个值。但是您可能会发现 PERCENTILE_CONT ir PERCENTILE_DISC 更有用? cloud.google.com/bigquery/docs/reference/standard-sql/…
    • 好的,我明白了。我以为 APPROX_Quantiles 已经给了我 75,50,25 个分位数。
    • SELECT percentiles[offset(25)], percentiles[offset(50)], percentiles[offset(75)] FROM (SELECT APPROX_QUANTILES(Menge, 100) percentiles FROM ... 做到了吗跨度>
    【解决方案2】:

    也可能是解决方案:

    SELECT percentiles[offset(25)], percentiles[offset(50)], percentiles[offset(75)]
    FROM (SELECT APPROX_QUANTILES(Menge, 100) percentiles FROM 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-06
      • 2017-10-12
      • 1970-01-01
      • 2021-10-05
      • 2018-01-16
      • 2019-02-05
      • 2018-02-16
      • 2018-06-27
      相关资源
      最近更新 更多