2
我正在使用Hive數據在PySpark Shell中工作。這裏的目標是收集多個項目的計數器。下面我有一個示例數據框和數據查詢。我使用的資源:Is it possible to specify condition in Count()?,但它是用於有限的計數器。SQL查詢分隔計數器
DriveHealth = sqlContext.sql("Select Health From testdrivestatus")
Health |
----------
Healthy
Healthy
Error A
Error B
Error C
這裏的目標是創建計數器將計:
與健康驅動器數量爲健康
驅動器數量與健康是不是健康,所以錯誤A,錯誤B和錯誤C.
有獨立的健康狀況因此對健康的計數器,錯誤A,錯誤B和錯誤驅動器數量C.
在這種情況下,我們有這樣的事情......
Health Counter
--------------
Healthy: 2
Unhealthy: 3
Error A: 1
Error B: 1
Error C: 1
東西我都試過了,這對於案件少量的工作,但我有超過60個不同的健康狀態,我想知道是否有更好的方法來做到這一點:
DriveHealth = sqlContext.sql("Select
Count(case Health when 'Healthy' then 1 else null end) as Healthy,
Count(case Health is not 'Healthy' then 1 else null end) as UnHealthy,
Count(case Health when 'Error A' then 1 else null end) as ErrorA,
... (skipping typing Through Error C)
From testdrivestatus
呃!無聊的時刻給我。謝謝。我會盡快接受。 – Travis
如何添加不健康的列?我只需要在不健康的情況下做出獨立的情況? – Travis
@ TJ72我不知道你正在使用哪個數據庫引擎,但經驗法則是任何非聚合值(即選擇一列而不是計數/總和/平均值等)應該在你的組中。因此,例如,要添加「ErrorCode」列,您可以執行SELECT count(*),Healthy,ErrorCode FROM testdrivestatus GROUP BY Health,ErrorCode' – RToyo