このページでは、Cloud Storage から BigQuery への ORC データの読み込みの概要を説明します。
ORC は、Apache Hadoop エコシステムで広く使用されているオープンソースの列指向のデータ形式です。
ORC データを Cloud Storage から読み込む際に、新しいテーブルまたはパーティションにデータを読み込むことも、既存のテーブルまたはパーティションにデータを追加したり上書きしたりすることもできます。BigQuery に読み込まれたデータは Capacitor のカラムナ形式(BigQuery のストレージ形式)に変換されます。
Cloud Storage から BigQuery のテーブルにデータを読み込むとき、読み込み先のテーブルを含むデータセットは Cloud Storage バケットと同じリージョンまたはマルチリージョン ロケーションに存在している必要があります。
ローカル ファイルから ORC データを読み込む方法については、ローカル データソースから BigQuery にデータを読み込むをご覧ください。
ORC スキーマ
ORC ファイルを BigQuery に読み込むと、自己記述型ソースデータから自動的にテーブル スキーマが取得されます。BigQuery がソースデータからスキーマを取得する際は、アルファベット順で最後のファイルが使用されます。
たとえば、Cloud Storage に次の ORC ファイルがあるとします。
gs://mybucket/00/ a.orc z.orc gs://mybucket/01/ b.orc
bq
コマンドライン ツールでこのコマンドを実行すると、すべてのファイルがカンマ区切りのリストとして読み込まれ、mybucket/01/b.orc
からスキーマが取得されます。
bq load \ --source_format=ORC \ dataset.table \ "gs://mybucket/00/*.orc","gs://mybucket/01/*.orc"
BigQuery がスキーマを検出すると、一部の ORC データ型は、BigQuery SQL 構文に対応するように BigQuery データ型に変換されます。検出されたスキーマに含まれるフィールドはすべて NULLABLE
です。詳細については、ORC 変換をご覧ください。
スキーマが異なる複数の ORC ファイルを読み込む場合、複数のスキーマで指定された同一のフィールド(名前とネストレベルが同じ)は、各スキーマ定義の同じ変換済み BigQuery データ型にマッピングする必要があります。
ORC 圧縮
BigQuery は、ORC ファイルの内容に対して次のタイプの圧縮をサポートします。
Zlib
Snappy
LZO
LZ4
必要な権限
BigQuery にデータを読み込むには、読み込みジョブを実行する権限が必要です。また、新規または既存の BigQuery テーブルやパーティションへのデータの読み込みが可能な権限も必要です。Cloud Storage からデータを読み込む場合は、データを含むバケットに対するアクセス権限も必要です。
BigQuery の権限
BigQuery にデータを読み込むには、少なくとも以下の権限が必要です。これらの権限は、データを新しいテーブルまたはパーティションに読み込む場合や、テーブルまたはパーティションに対してデータの追加や上書きを行う場合に必要になります。
bigquery.tables.create
bigquery.tables.updateData
bigquery.jobs.create
bigquery.tables.create
権限および bigquery.tables.updateData
権限はいずれも、事前定義された以下の IAM ロールに含まれています。
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
次の事前定義済みの IAM ロールには bigquery.jobs.create
権限が含まれています。
bigquery.user
bigquery.jobUser
bigquery.admin
また、bigquery.datasets.create
権限を持つユーザーがデータセットを作成すると、そのデータセットに対する bigquery.dataOwner
アクセス権がユーザーに付与されます。bigquery.dataOwner
アクセス権により、読み込みジョブを使用してデータセット内のテーブルを作成または更新できます。
BigQuery での IAM ロールと権限の詳細については、アクセス制御をご覧ください。
Cloud Storage の権限
Cloud Storage バケットからデータを読み込むには、storage.objects.get
権限が付与されている必要があります。URI のワイルドカードを使用する場合は storage.objects.list
権限も必要です。
IAM 事前定義ロール storage.objectViewer
が付与されると、storage.objects.get
権限と storage.objects.list
権限の両方が与えられます。
ORC データを新しいテーブルに読み込む
新しいテーブルに ORC データを読み込むには、次の方法を使用します。
- Cloud Console を使用する
bq
コマンドライン ツールのbq load
コマンドを使用するjobs.insert
API メソッドを呼び出してload
ジョブを構成する- クライアント ライブラリを使用する
ORC データを Cloud Storage から新しい BigQuery テーブルに読み込むには:
Console
Cloud Console で [BigQuery] ページを開きます。
[エクスプローラ] パネルでプロジェクトを展開し、データセットを選択します。
詳細パネルで「テーブルを作成」をクリックします。
[テーブルの作成] ページの [ソース] セクションで、次の操作を行います。
[テーブルの作成元] で [Cloud Storage] を選択します。
ソース フィールドで Cloud Storage URI を参照するかまたは入力します。Cloud Console で複数の URI を指定することはできませんが、ワイルドカードはサポートされています。Cloud Storage バケットは、作成するテーブルを含むデータセットと同じロケーションに存在する必要があります。
[ファイル形式] で、[ORC] を選択します。
[テーブルを作成] ページの [送信先] セクションで、次の操作を行います。
[データセット名] で、該当するデータセットを選択します。
[テーブルタイプ] が [ネイティブ テーブル] に設定されていることを確認します。
[テーブル名] フィールドに、BigQuery で作成するテーブルの名前を入力します。
[スキーマ] セクションでは、何もする必要はありません。スキーマは ORC ファイルで自己記述されます。
(省略可)テーブルをパーティション分割するには、[パーティションとクラスタの設定] で次のオプションを選択します。
- パーティション分割テーブルを作成するには、[パーティショニングなし] をクリックして [フィールドにより分割] を選択し、
DATE
またはTIMESTAMP
の列を選択します。スキーマにDATE
またはTIMESTAMP
の列が含まれていない場合、このオプションは使用できません。 - 取り込み時間パーティション分割テーブルを作成するには、[パーティショニングなし] をクリックして [取り込み時間により分割] を選択します。
- パーティション分割テーブルを作成するには、[パーティショニングなし] をクリックして [フィールドにより分割] を選択し、
(省略可)クエリを実行するパーティションを指定する
WHERE
句の使用を必須にするには、[パーティショニング フィルタ] で [パーティション フィルタを要求] ボックスをクリックします。パーティション フィルタを必須にすると、コストが削減され、パフォーマンスが向上する場合があります。詳細については、パーティション分割テーブルのクエリをご覧ください。[パーティショニングなし] を選択している場合、このオプションは使用できません。(省略可)テーブルをクラスタ化するには、[クラスタリング順序] ボックスに 1~4 個のフィールド名を入力します。
(省略可)[詳細オプション] をクリックします。
- [書き込み設定] で、[空の場合に書き込む] を選択したままにします。これにより、新しいテーブルが作成され、データが読み込まれます。
- [許可されているエラー数] で、デフォルト値の
0
を使用するか、無視できる最大行数を入力します。エラーを含む行数がこの値を超えると、ジョブはinvalid
メッセージとなり、失敗します。 - [不明な値] で [不明な値を無視する] をオフのままにします。このオプションは、CSV ファイルと JSON ファイルにのみ適用されます。
- Cloud Key Management Service 鍵を使用するには、[暗号化] で [顧客管理の暗号鍵] をクリックします。[Google が管理する鍵] の設定をそのままにすると、BigQuery は保存されているデータを暗号化します。
[テーブルを作成] をクリックします。
bq
bq load
コマンドを使用し、source_format
に ORC を指定して、Cloud Storage URI を組み込みます。単一の URI、URI のカンマ区切りリスト、またはワイルドカードを含む URI を含めることができます。
(省略可)--location
フラグを指定して、その値をロケーションに設定します。
次のフラグを使用することもできます。
--max_bad_records
: ジョブ全体が失敗する前に許容される不良レコードの最大数を指定する整数。デフォルト値は0
です。--max_bad_records
の値にかかわらず、最大で 5 つの任意のタイプのエラーが返されます。--time_partitioning_type
: テーブルでの時間ベースのパーティショニングを有効にし、パーティション タイプを設定します。有効な値はHOUR
、DAY
、MONTH
、YEAR
です。DATE
、DATETIME
、TIMESTAMP
列でパーティション分割されたテーブルを作成する場合、このフラグは省略可能です。時間ベースのパーティショニングのデフォルト パーティション タイプはDAY
です。--time_partitioning_expiration
: 時間ベースのパーティションを削除する必要があるタイミングを指定する整数(秒単位)。パーティションの日付(UTC)に、この整数値を足した値が有効期限になります。--time_partitioning_field
: パーティション分割テーブルの作成に使用されるDATE
またはTIMESTAMP
の列。この値を指定せずに時間ベースのパーティショニングを有効にすると、取り込み時間パーティション分割テーブルが作成されます。--require_partition_filter
: 有効にすると、クエリの実行時にWHERE
句でパーティションを指定するようユーザーに求めます。パーティション フィルタを必須にすると、コストが削減され、パフォーマンスが向上する場合があります。詳細については、パーティション分割テーブルのクエリをご覧ください。--clustering_fields
: クラスタ化テーブルの作成に使用する列名のカンマ区切りのリスト。最大 4 個の列名を指定できます。--destination_kms_key
: テーブルデータの暗号化に使用される Cloud KMS 鍵。パーティション分割テーブルの詳細については、以下をご覧ください。
クラスタ化テーブルの詳細については、以下をご覧ください。
テーブルの暗号化の詳細については、以下をご覧ください。
ORC データを BigQuery に読み込むには、次のコマンドを入力します。
bq --location=location load \ --source_format=format \ dataset.table \ path_to_source
ここで
- location はロケーションです。
--location
フラグは省略可能です。たとえば、BigQuery を東京リージョンで使用している場合は、このフラグの値をasia-northeast1
に設定します。.bigqueryrc ファイルを使用してロケーションのデフォルト値を設定できます。 - format は
ORC
です。 - dataset は既存のデータセットです。
- table は、データの読み込み先のテーブル名です。
- path_to_source は、完全修飾の Cloud Storage URI または URI のカンマ区切りのリストです。ワイルドカードもサポートされます。
例:
次のコマンドは、gs://mybucket/mydata.orc
から、mydataset
内の mytable
というテーブルにデータを読み込みます。
bq load \
--source_format=ORC \
mydataset.mytable \
gs://mybucket/mydata.orc
次のコマンドは、gs://mybucket/mydata.orc
から mydataset
内の mytable
という取り込み時間パーティション分割テーブルにデータを読み込みます。
bq load \
--source_format=ORC \
--time_partitioning_type=DAY \
mydataset.mytable \
gs://mybucket/mydata.orc
次のコマンドは、gs://mybucket/mydata.orc
からデータを読み込んで mydataset
内の mytable
というパーティション分割テーブルに追加します。テーブルは mytimestamp
列でパーティション分割されます。
bq load \
--source_format=ORC \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.orc
次のコマンドは、gs://mybucket/
の複数のファイルから mydataset
内の mytable
という名前のテーブルにデータを読み込みます。Cloud Storage の URI ではワイルドカードを使用しています。
bq load \
--source_format=ORC \
mydataset.mytable \
gs://mybucket/mydata*.orc
次のコマンドは、gs://mybucket/
の複数のファイルから mydataset
内の mytable
という名前のテーブルにデータを読み込みます。このコマンドでは、Cloud Storage の URI のカンマ区切りのリストをワイルドカード付きで使用しています。
bq load --autodetect \
--source_format=ORC \
mydataset.mytable \
"gs://mybucket/00/*.orc","gs://mybucket/01/*.orc"
API
Cloud Storage のソースデータを参照する
load
ジョブを作成します。(省略可)ジョブリソースの
jobReference
セクションにあるlocation
プロパティでロケーションを指定します。source URIs
プロパティは、完全修飾のgs://bucket/object
の形式にする必要があります。各 URI にワイルドカード文字「*」を 1 つ含めることができます。sourceFormat
プロパティをORC
に設定して、ORC データ形式を指定します。ジョブのステータスを確認するには、
jobs.get(job_id*)
を呼び出します。ここで、job_id は、最初のリクエストによって返されたジョブの ID です。status.state = DONE
である場合、ジョブは正常に完了しています。status.errorResult
プロパティが存在する場合は、リクエストが失敗したことを意味し、該当するオブジェクトにエラーを説明する情報が格納されます。リクエストが失敗した場合、テーブルは作成されず、データは読み込まれません。status.errorResult
が存在しない場合、ジョブは正常に完了していますが、一部の行のインポートで問題があったなど、致命的でないエラーが発生した可能性があります。致命的でないエラーは、返されたジョブ オブジェクトのstatus.errors
プロパティに格納されています。
API に関する注:
読み込みジョブはアトミックで整合性があります。読み込みジョブが失敗した場合、データは一切利用できず、読み込みジョブが成功した場合はすべてのデータが利用可能になります。
おすすめの方法として、
jobs.insert
を呼び出して読み込みジョブを作成する際に、一意の ID を生成して、その ID をjobReference.jobId
として渡すようにします。この手法を使用すると、ネットワーク障害時にクライアントは既知のジョブ ID を使ってポーリングまたは再試行できるので、頑健性が向上します。同じジョブ ID に対して
jobs.insert
を呼び出しても結果は同じになります。同じジョブ ID で何回でも再試行できますが、成功するのは、その中で 1 回だけです。
C#
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の C# の設定手順を実施してください。詳細については、BigQuery C# API のリファレンス ドキュメントをご覧ください。
Go
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Go の手順に従って設定を行ってください。詳細については、BigQuery Go API のリファレンス ドキュメントをご覧ください。
Java
Node.js
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を実施してください。詳細については、BigQuery Node.js API のリファレンス ドキュメントをご覧ください。
PHP
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用にある PHP 向けの手順に従って設定を行ってください。詳細については、BigQuery PHP API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Python の手順に従って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
Ruby
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用で説明している Ruby 向けの手順に沿って設定を行ってください。詳細については、BigQuery Ruby API のリファレンス ドキュメントをご覧ください。
ORC データをテーブルに追加または上書きする
テーブルに追加のデータを読み込むには、ソースファイルを使用するか、クエリ結果を追加します。
Cloud Console では、[書き込み設定] オプションを使用して、ソースファイルやクエリ結果からデータを読み込むときに行う操作を指定します。
追加のデータをテーブルに読み込む場合、以下のオプションがあります。
Console のオプション | bq ツールのフラグ |
BigQuery API のプロパティ | 説明 |
---|---|---|---|
Write if empty | なし | WRITE_EMPTY |
テーブルが空の場合にのみデータを書き込みます。 |
テーブルに追加する | --noreplace または --replace=false (--[no]replace を指定しない場合、デフォルトは追加) |
WRITE_APPEND |
(デフォルト)テーブルの末尾にデータを追加します。 |
テーブルを上書きする | --replace または --replace=true |
WRITE_TRUNCATE |
新しいデータを書き込む前に、テーブル内の既存のデータをすべて消去します。この操作を行うと、テーブル スキーマと Cloud KMS 鍵も削除されます。 |
既存のテーブルにデータを読み込む場合、読み込みジョブでデータの追加やテーブルの上書きを行うことができます。
次の方法でテーブルを追加または上書きできます。
- Cloud Console を使用する
bq
コマンドライン ツールのbq load
コマンドを使用するjobs.insert
API メソッドを呼び出してload
ジョブを構成する- クライアント ライブラリを使用する
ORC データをテーブルに追加または上書きするには:
Console
Cloud Console で [BigQuery] ページを開きます。
[エクスプローラ] パネルでプロジェクトを展開し、データセットを選択します。
詳細パネルで「テーブルを作成」をクリックします。
[テーブルの作成] ページの [ソース] セクションで、次の操作を行います。
[テーブルの作成元] で [Cloud Storage] を選択します。
ソース フィールドで Cloud Storage URI を参照するかまたは入力します。Cloud Console で複数の URI を指定することはできませんが、ワイルドカードはサポートされています。Cloud Storage バケットは、データを追加または上書きするテーブルを含むデータセットと同じロケーションに存在している必要があります。
[ファイル形式] で、[ORC] を選択します。
[テーブルを作成] ページの [送信先] セクションで、次の操作を行います。
[データセット名] で、該当するデータセットを選択します。
[テーブル名] フィールドに、BigQuery で追加または上書きするテーブルの名前を入力します。
[テーブルタイプ] が [ネイティブ テーブル] に設定されていることを確認します。
[Schema] セクションでは、何もする必要はありません。スキーマは ORC ファイルで自己記述されます。
[パーティションとクラスタの設定] はデフォルト値のままにします。追加や上書きではテーブルをパーティション分割テーブルまたはクラスタ化テーブルに変換できません。Cloud Console では、読み込みジョブでパーティション分割テーブルやクラスタ化テーブルの追加または上書きを行うことはできません。
[詳細オプション] をクリックします。
- [書き込み設定] で、[テーブルに追加する] または [テーブルを上書きする] を選択します。
- [許可されているエラー数] で、デフォルト値の
0
を使用するか、無視できる最大行数を入力します。エラーを含む行数がこの値を超えると、ジョブはinvalid
メッセージとなり、失敗します。 - [不明な値] で [不明な値を無視する] をオフのままにします。このオプションは、CSV ファイルと JSON ファイルにのみ適用されます。
Cloud Key Management Service 鍵を使用するには、[暗号化] で [顧客管理の暗号鍵] をクリックします。[Google が管理する鍵] の設定をそのままにすると、BigQuery は保存されているデータを暗号化します。
[テーブルを作成] をクリックします。
bq
テーブルを上書きするには、--replace
フラグを指定して bq load
コマンドを入力します。テーブルにデータを追加するには、--noreplace
フラグを使用します。フラグを指定しない場合、デフォルトではデータが追加されます。--source_format
フラグを指定し、ORC
に設定します。ORC スキーマは自己記述型ソースデータから自動的に取得されるため、スキーマ定義を指定する必要はありません。
(省略可)--location
フラグを指定して、その値をロケーションに設定します。
次のフラグを使用することもできます。
--max_bad_records
: ジョブ全体が失敗する前に許容される不良レコードの最大数を指定する整数。デフォルト値は0
です。--max_bad_records
の値にかかわらず、最大で 5 つの任意のタイプのエラーが返されます。--destination_kms_key
: テーブルデータの暗号化に使用される Cloud KMS 鍵。
bq --location=location load \ --[no]replace \ --source_format=format \ dataset.table \ path_to_source
ここで
- location はロケーションです。
--location
フラグは省略可能です。ロケーションのデフォルト値は、.bigqueryrc ファイルを使用して設定できます。 - format は
ORC
です。 - dataset は既存のデータセットです。
- table は、データの読み込み先のテーブル名です。
- path_to_source は、完全修飾の Cloud Storage URI または URI のカンマ区切りのリストです。ワイルドカードもサポートされます。
例:
次のコマンドは、gs://mybucket/mydata.orc
からデータを読み込んで mydataset
内の mytable
というテーブルを上書きします。
bq load \
--replace \
--source_format=ORC \
mydataset.mytable \
gs://mybucket/mydata.orc
次のコマンドは、gs://mybucket/mydata.orc
からデータを読み込んで mydataset
内の mytable
というテーブルに追加します。
bq load \
--noreplace \
--source_format=ORC \
mydataset.mytable \
gs://mybucket/mydata.orc
bq
コマンドライン ツールでパーティション分割テーブルへの追加や上書きを行う方法については、パーティション分割テーブルデータの追加と上書きをご覧ください。
API
Cloud Storage のソースデータを参照する
load
ジョブを作成します。(省略可)ジョブリソースの
jobReference
セクションにあるlocation
プロパティでロケーションを指定します。source URIs
プロパティは、完全修飾のgs://bucket/object
の形式にする必要があります。複数の URI をカンマ区切りのリストとして含めることができます。ワイルドカードも使用できます。configuration.load.sourceFormat
プロパティをORC
に設定して、データ形式を指定します。configuration.load.writeDisposition
プロパティをWRITE_TRUNCATE
またはWRITE_APPEND
に設定して、書き込み設定を指定します。
C#
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の C# の設定手順を実施してください。詳細については、BigQuery C# API のリファレンス ドキュメントをご覧ください。
Go
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Go の手順に従って設定を行ってください。詳細については、BigQuery Go API のリファレンス ドキュメントをご覧ください。
Java
Node.js
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Node.js の設定手順を実施してください。詳細については、BigQuery Node.js API のリファレンス ドキュメントをご覧ください。
PHP
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用にある PHP 向けの手順に従って設定を行ってください。詳細については、BigQuery PHP API のリファレンス ドキュメントをご覧ください。
Python
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Python の手順に従って設定を行ってください。詳細については、BigQuery Python API のリファレンス ドキュメントをご覧ください。
既存のテーブルの行を置換するには、LoadJobConfig.write_disposition プロパティを WRITE_TRUNCATE に設定します。
Ruby
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用で説明している Ruby 向けの手順に沿って設定を行ってください。詳細については、BigQuery Ruby API のリファレンス ドキュメントをご覧ください。
Hive パーティション分割 ORC データを読み込む
BigQuery では、Cloud Storage に保存されている Hive パーティション分割 ORC データの読み込みがサポートされ、宛先 BigQuery マネージド テーブルの列として Hive パーティショニング列にデータが取り込まれます。詳しくは、Cloud Storage からの外部パーティション分割データの読み取りをご覧ください。
ORC 変換
BigQuery は ORC のデータ型を次の BigQuery データ型に変換します。
プリミティブ型
BigQuery のデータ型 | 注 | |
---|---|---|
boolean | BOOLEAN | |
byte | INTEGER | |
short | INTEGER | |
int | INTEGER | |
long | INTEGER | |
float | FLOAT | |
double | FLOAT | |
string | STRING | UTF-8 のみ |
varchar | STRING | UTF-8 のみ |
char | STRING | UTF-8 のみ |
binary | BYTES | |
date | DATE | |
timestamp | TIMESTAMP | ORC はナノ秒単位の精度をサポートしますが、BigQuery はデータを読み取るときにマイクロ秒未満の値をマイクロ秒に変換します。 |
decimal | NUMERIC、BIGNUMERIC、または STRING | 固定小数点型をご覧ください。 |
固定小数点型
Decimal
論理型は、NUMERIC
、BIGNUMERIC
(プレビュー)、または STRING
型に変換できます。変換される型は、decimal
論理型の精度とスケールのパラメータ、また指定されたターゲットの固定小数点型によって異なります。ターゲットの固定小数点型は次のように指定します。
jobs.insert
API を使用する読み込みジョブの場合:JobConfigurationLoad.decimalTargetTypes
フィールドを使用します。bq
コマンドライン ツールでbq load
コマンドを使用する読み込みジョブの場合:--decimal_target_types
フラグを使用します。- 外部ソースを含むテーブルに対するクエリの場合:
ExternalDataConfiguration.decimalTargetTypes
フィールドを使用します。 - DDL で作成した永続外部テーブルの場合:
decimal_target_types
オプションを使用します。
複合型
BigQuery のデータ型 | 注 | |
---|---|---|
struct | RECORD |
|
map<K,V> | RECORD | ORC の map<K,V> フィールドは、2 つのフィールド(K と同じデータ型のキー、V と同じデータ型の値)を含む、繰り返し RECORD に変換されます。両方のフィールドが NULLABLE です。 |
list | 繰り返しフィールド | ネストされたリストとマップのリストはサポートされていません。 |
union | RECORD |
|
列名
列名には、英字(a-z、A-Z)、数字(0-9)、アンダースコア(_)のみを使用できます。先頭文字は英字またはアンダースコアにする必要があります。列名の最大長は 128 文字です。列名には、次のいずれの接頭辞も使用できません。
_TABLE_
_FILE_
_PARTITION
大文字と小文字が異なっている場合でも、重複する列名は使用できません。たとえば、Column1
という列は column1
という列と同じとみなされます。
NULL
値
BigQuery は読み込みジョブで list
複合型の NULL
要素を無視します。理由は、無視されずに NULL
ARRAY
要素に変換されるとテーブルに存続できなくなるからです(詳細はデータ型をご覧ください)。
ORC のデータ型の詳細については、Apache ORC™ Specification v1 をご覧ください。