4

Java API と新しいサービス Dataflow を介して BigQuery データにアクセスしています。TableRow クラスには次のようなメソッドがあると予想していました。

  • TableCell インスタンスのリストを返します (繰り返しフィールドの場合)
  • TableRow インスタンスを返す (ネストされたフィールドの場合)
  • TableRow インスタンスのリストを返します (ネストされたフィールドが繰り返される場合)

しかし、get メソッドを使用して TableRow インスタンスのフィールドにアクセスするサンプル コードしか見つけられませんでした。これは、出力がオブジェクト クラスのインスタンスであるため便利ではありません。

現時点で私が目にする唯一の解決策は、get メソッドから取得した文字列を解析し、自分で TableRow オブジェクトを構築することですが、誰かが共有するより良い解決策を持っているかどうか疑問に思っていましたか?

どうもありがとう。

4

3 に答える 3

3

最後に、次の結論に達しました。

  • スキーマに従ってフィールドの繰り返しが予想される場合、TableRow インスタンスに適用された get メソッドは ArrayList インスタンスを返します。
  • スキーマに従ってレコードを期待している場合、TableRow インスタンスに get メソッドを適用すると、LinkedHashMap のインスタンスが返されます。
  • スキーマによると、レコードの繰り返しフィールドが必要であると推測した場合、TableRow インスタンスに get メソッドを適用すると、ArrayList のインスタンスが返されます。

したがって、上記のクラスのいずれかを使用して、TableRow インスタンスに適用された get メソッドからの結果をダウンキャストするだけで、それらの機能を最大限に活用できます (反復と名前による呼び出しなど)。

于 2015-03-18T18:23:03.240 に答える
0

TableRow にはgetClassInfo()メソッドがあります。それは何らかの形で役立ちますか?(ネストされたフィールドを自分で操作しようとしたことはありません)

于 2015-03-16T21:20:25.123 に答える