質問

次のテストデータをロードしました:

name,   age,gender
"John", 33,m
"Sam",  33,m
"Julie",33,f
"Jimbo",, m
.

スキーマ:name:STRING,age:INTEGER,gender:STRINGと私は、JIMBO行がBigQueryブラウザツール> MyDataSet> Details> Previewセクションの列「AGE」にNULLを表示することを確認しました。

このクエリを実行すると、

SELECT AVG(age) FROM [peterprivatedata.testpeople]
.

私は間違っている24.75を得ます。 avg のドキュメント「NULL値を持つ行」計算に含まれていません。 "

私は何か悪いことをしているか、これは既知のバグですか?(チェックするための公開問題リストがあるかどうかわかりません)。これに対する最も単純な回避策は何ですか?

役に立ちましたか?

解決

これは、インポート時にNULL数値を0に強制する既知のバグです。現在修正プログラムに取り組んでいます。ただし、これらの値 do は定義されていない(さまざまな理由でnullとは異なります)、is_explicitly_definedを確認できます。例えば:

SELECT sum(if(is_explicitly_defined(numeric_field), numeric_field, 0)) / 
       sum(if(is_explicitly_defined(numeric_field), 1, 0)) 
    AS my_avg FROM your_table
.

交互に、別の列を使用してis_nullを表すことができます。その後、クエリは次のようになります。

    SELECT sum(if(numeric_field_is_null, 0, numeric_field)) / 
       sum(if(numeric_field_is_null, 0, 1)) 
    AS my_avg FROM your_table
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top