1
私はJava APIを使用して、ドライランを使用してクエリからスキーマを取得していますが、スキーマには実際に必要なときにnull可能なフィールドが含まれています。このクエリでの例ドライランからのスキーマは必須フィールドをnullableとして返します。
、:
SELECT word FROM `bigquery-public-data.samples.shakespeare`
「単語」フィールドは、テーブルで必要とされるにもかかわらず、私は戻って取得結果は
com.google.api.services.bigquery.model.TableSchema =
{"fields":[{"mode":"NULLABLE","name":"word","type":"STRING"}]}
では、これが起こることになっていますか?
私は、クエリのドライランからスキーマを取得することは、標準SQLでしか使用できないと思いました。以前は、必須フィールドを正しく保存したビューを作成してスキーマを取得していました。必要なフィールドにクエリ結果がnullを含む可能性があることについてもっと詳しく説明できますか?ビューと同じスキーマを取得する別の方法があります(ビューは標準SQLではまだサポートされていないため)。 –
私は異なった質問をします - それがREQUIREDまたはNULLABLEとラベル付けされるかどうかはなぜ気になりますか?あなたのアプリケーションにはどんな変更がありますか? –
私のチームは、大きなクエリクライアントの周りに型安全なScala APIを構築しています。私たちのアプローチの1つは、null可能なフィールドをScala Optionタイプにマップすることです。これは、このタイプセーフなAPIのユーザーに、必要と予想されるフィールドのOptionタイプが表示されることを意味します。もちろん、アプリケーションは自由にオプションを展開することができますが、混乱の原因となり、型の安全性の目的を多少犠牲にします。従来のSQLでは、クエリからビューを作成してスキーマを取得しました。このビューは必須フィールドを保持していました。しかし、現在はドライランを使用して、必要なフィールドがnullableとして戻ってくるので、すべてがオプションです。 –