2017-05-16 19 views
0

私はbigqueryでいくつかのメタプログラミングをしていて、私が期待していなかったことに気付きました。selectでbigqueryの必須フィールドをnullableにする方法はありますか?

SELECT * FROM `bigquery-public-data.samples.shakespeare` LIMIT 1000 

公共データセットに対して行く必要があります。

私はこのクエリを使用しています。

"schema": { 
"fields": [ 
{ 
    "name": "word", 
    "type": "STRING", 
    "mode": "NULLABLE" 
}, 
{ 
    "name": "word_count", 
    "type": "INTEGER", 
    "mode": "NULLABLE" 
}, 
{ 
    "name": "corpus", 
    "type": "STRING", 
    "mode": "NULLABLE" 
}, 
{ 
    "name": "corpus_date", 
    "type": "INTEGER", 
    "mode": "NULLABLE" 
} 
] 
}, 

これは、最初は良く見えるかもしれませんが、あなたはbigquery-public-data.samples.shakespeareのためにテーブル定義を見れば、あなたはその選択内のすべてのフィールドがあることに気づくでしょう:あなたは、そのクエリを分析する場合は、スキーマがこのように見えたことがわかりますテーブルの中で必要なので、selectのスキーマでnullableになるのはなぜですか?

いくつかのコンテキスト:

私はできるだけ正しいすべての値をエンコードしてみてくださいwher私はF#のタイププロバイダに取り組んでいます。つまり、オプションの型としてnullを指定でき、通常の型としてnullを指定することはできません。私がいつでもnull可能になると、nullableにできないフィールドの使用ははるかに面倒になります。

答えて

0

フィールドは、テーブルスキーマにREQUIREDているにもかかわらず、クエリはNULL値に非NULL値を変換する変換を行うことができ、したがって、クエリ結果は、次にどのような原稿台(NULL可能に関して、データタイプの両方)は、異なるスキーマを有していてもよいです持っていました。

+0

私は知っていますが、クエリアナライザは、変換された値がnullであるかどうかを調べることができます。アナライザーにそのことを確認させる「強制」と言う方法はありませんか? –

+0

私はmssqlの土地から来ていると私はかなりあなたがそこに得ることを確信しています。 –

+0

私は質問に取り組んでいるものにいくつかのコンテキストを追加しました。 –

関連する問題