表
表は、データの構造を定義します。
新しいデータを表にロードしたり、既存の場所にある参照データをロードできます。表に対するファイングレイン・アクセス制御権限を定義するには、表権限を作成します。
表は外部または管理が可能です。
外部表
外部表は、Oracle AI Data Platform Workbenchで管理されない場所に格納されるデータの構造を定義します。AIデータ・プラットフォーム・ワークベンチで外部表を作成すると、メタデータ・ライフサイクルはAIデータ・プラットフォーム・ワークベンチによって管理されます。外部表を削除すると、表定義のみが削除されます。外部表によって参照されるデータは削除されません。
ユーザーに、外部表の作成に必要な次のIAMポリシーがあることを確認します:
allow group <GroupName> to read buckets in compartment id <external-data-CompartmentId>
allow group <GroupName> to inspect objects in compartment id <external-data-CompartmentId>外部表には追加のIAMポリシーが必要です。詳細は、Oracle AI Data Platform WorkbenchのIAMポリシーを参照してください。
管理対象テーブル
管理対象表は、AIデータ・プラットフォーム内に格納され、AIデータ・プラットフォーム・ワークベンチ・ユーザーのみがアクセスできるデータの構造を定義します。
管理対象表を削除すると、表定義および表データが削除されます。
サポートされている表形式
| 書式 | 説明 | 使用状況 |
|---|---|---|
| カンマ区切りの値(CSV) | データは、データを構造化するために、指定された行ベースのファイル形式のテキスト・ファイルとして格納されます。通常、ファイルの最初の行は、データの列名を含むヘッダー行です。 | システム間で表形式データを交換するために使用します。ファイル内の各行は、表内の行です。 |
| JavaScript Object Notation (JSON) | データは、JavaScriptオブジェクト構文に基づいて構造化データを表すための標準テキストベースの形式で格納されます。JSONでは、オブジェクトのリストまたは階層構造がサポートされています。 | ストリーム・アプリケーションで使用されます。JSONは、複雑な関係を持つ関連データの単一のドキュメントへの格納を簡素化し、リレーショナル・データ・モデルへの混沌としたリスト変換を回避します。JSONは分割できないことに注意してください。 |
| Avro | データは行ベースのバイナリ形式で格納され、スキーマはファイル・サイズを最小限に抑え、効率を最大化するためにJSON形式で格納されます。Avroは、追加フィールド、欠落フィールドおよび変更されたフィールドを管理することで、スキーマの進化を確実にサポートしています。これにより、古いソフトウェアは新しいデータを読み取ることができ、新しいソフトウェアは古いデータを読み込むことができます。データ・シリアライズ・システムとも呼ばれます。 | avroファイルが分割可能かつ圧縮可能であるため、データ・ストレージに使用されます。シリアル化された行ベースのストレージは、AI Data Platformへのデータの挿入など、大量の書込みトランザクションに最適です。Avroは、高速書込み中にスキーマの進化が重要な場合にも適しています。 |
| Parquet | データは列形式のデータ形式で格納され、非常に圧縮可能で分割可能です。Parquetは、Write Once Read Many (WORM)パラダイム用に最適化されています。書き込み速度は遅くなりますが、特にカラムのサブセットにのみアクセスする場合、読み取り速度は非常に速くなります。 | 圧縮アルゴリズムが列データ・フォーマットでより適切に機能するため、ビッグ・データの問題を解決するために使用されます。ビッグ・データは、イメージ、ビデオ、ドキュメント、構造化データ表などの様々な形式で格納できます。Parquetは、データの一部を読み取るときにワークロードが多い場合に適しています。たとえば、データセットに多数の列があるが、列のサブセットにのみアクセスする場合です。Sparkに依存している場合、または複数のサービスがオブジェクト・ストレージに格納されている同じデータにアクセスする場合に理想的です。 |
| Optimized Row Columnar(ORC) | データは、行のコレクションに列形式で単一のファイルに格納されます。 | クラスタ全体での行コレクションのパラレル処理に使用されます。読取りトランザクションが書込みトランザクションよりも多い場合、または圧縮が優先される場合に最適です。 |
| デルタ | データは、ACIDトランザクションおよびスケーラブルなメタデータ処理のためのJSONファイルベースのトランザクション・ログを使用してParquetデータファイルを拡張する列形式で格納されます。 | トランザクションのサポートに使用されます。 |
サポートされているデータ型
| データ・タイプ | 説明 |
|---|---|
| バイトタイプ | 1バイトの符号付き整数を表します。数値の範囲は-128から127です。 |
| ショートタイプ | 2バイトの符号付き整数を表します。数値の範囲は-32768から32767です。 |
| 整数タイプ | 4バイトの符号付き整数を表します。数値の範囲は-2147483648から2147483647です。 |
| ロングタイプ | 8バイトの符号付き整数を表します。数値の範囲は-9223372036854775808から9223372036854775807です。 |
| フロート・タイプ | 4バイトの単精度の浮動小数点数を表します。 |
| ダブルタイプ | 8バイトの倍精度の浮動小数点数を表します。 |
| 小数タイプ | 任意精度の符号付き10進数を表します。java.math.BigDecimalによって内部的にサポートされます。BigDecimalは、任意精度のスケールなしの整数値と、32ビット整数のスケールで構成されます。 |
| 文字列型 | 文字列値を表します。 |
| VarcharType(長さ) | 長さの制限があるStringTypeのバリアント。入力文字列が長さの制限を超えた場合、データ書込みは失敗します。 |
| CharType(長さ) | 固定長のVarcharType(length)のバリアント。CharType(n)型の列を読み取ると、長さnの文字列値が常に返されます。文字型の列の比較では、短いものが長いものに埋め込まれます。 |
| バイナリ・タイプ | バイト順序の値を表します。 |
| ブール・タイプ | ブール値を表します。 |
| 日付タイプ | フィールド年、月および日の値で構成される値を、タイムゾーンなしで表します。 |
| TimestampType | ローカル・タイムゾーン付きタイムスタンプ(TIMESTAMP_LTZ)。これは、年、月、日、時、分および秒フィールドの値とセッション・ローカル・タイムゾーンで構成される値を表します。タイムスタンプ値は絶対時点を表します。 |
| タイムスタンプNTZタイプ | タイム・ゾーン(TIMESTAMP_NTZ)のないタイムスタンプ。これは、年、月、日、時、分および秒フィールドの値で構成される値を表します。すべての操作は、タイム・ゾーンを考慮せずに実行されます。 |
| YearMonthIntervalType(startField、endField) | MONTHの連続したサブセット、年内の月[0..11]および年、[0..178956970]の範囲の年で構成される年- 月間隔を表します。 |
| DayTimeIntervalType(startField、endField) | SECONDの連続したサブセット、分内の秒数、および場合によっては秒[0..59.999999]の分数[0..59]内の分数、[0..23]および[0..106751991]の範囲の日数[0..106751991]内の時間数[0..59.999999]、MINUTE、分数[0..59]内の分数で構成される1日間隔を表します。 |
| ArrayType(elementType、containsNull) | elementTypeタイプの要素のシーケンスを構成する値を表します。containsNullは、ArrayType値の要素がnull値を持つことができるかどうかを示すために使用されます。 |
| MapType(keyType、valueType、valueContainsNull) | 一連のキーと値のペアで構成される値を表します。キーのデータ型はkeyTypeによって記述され、値のデータ型はvalueTypeによって記述されます。MapType値の場合、キーはnull値を持つことができません。valueContainsNullは、MapType値の値がnull値を持つことができるかどうかを示すために使用されます。 |
| StructType(フィールド) | 一連のStructFields (フィールド)で記述された構造体を持つ値を表します。 |
| StructField(name, dataType, nullable) | StructTypeのフィールドを表します。フィールドの名前は名前で示されます。フィールドのデータ型は、dataTypeによって示されます。nullableは、これらのフィールドの値がnull値を持つことができるかどうかを示すために使用されます。 |
制限事項
Oracle AI Data Platformの表には、次の制限が適用されます。
- ボリューム内またはボリューム上のデータファイルまたはディレクトリに外部表を定義することはできません。
- 別の外部表または外部ボリュームにすでに使用されているバケットおよびそのディレクトリ(あるいはその両方)に外部表を定義することはできません
- マスター・カタログでビューを表示またはリストすることはできません。
スキーマ展開
Oracle AI Data Platform Workbenchのスキーマの進化により、ノートブックのSQLを使用して管理対象表を更新するために必要な権限を持つユーザーが可能になります。
これは、データセットを最初から再作成せずに、新しい列、削除された列、名前変更された列、パーティションの変更または表の名前変更をサポートするために、表定義が時間の経過とともに変化する場合に便利です。サポートされている形式は、Parquet、AvroおよびDeltaです。
サポートされている操作
- 表の名前変更: Delta、ParquetおよびAvroでサポートされています
- 列の追加: Delta、ParquetおよびAvroでサポートされています
- 列の削除: デルタでサポートされています。ParquetおよびAvroではサポートされていません
- 列の変更または名前変更: Deltaでサポートされており、ParquetおよびAvroではサポートされていません
- 列の置換: デルタでのみサポートされます
- パーティションの追加: DDLを介したParquetおよびAvroでサポートされます。デルタでは、DDLを介してではなくデータ挿入時にパーティション処理がサポートされます。
- パーティションの削除: ParquetおよびAvroでサポートされています。Deltaの場合、パーティションは、直接DDLではなくデータを削除して真空を実行することで削除されます
- データ型の変更: ParquetまたはAvroではサポートされていません。直接DDLを介したDeltaではサポートされず、CTASまたは上書きスキーマ・ベースの回避策が必要な場合があります
表を編集
管理する表の詳細を変更できます。
ノート:
Oracle AI Data Platform Workbenchで作成された外部カタログ表への編集は、リモート・カタログにプッシュされません。- スキーマにナビゲートします。
- 「表」タブを選択します。
- 編集する表の横にある
「アクション」をクリックします。- 「名前変更」をクリックして表の名前を変更します。新しい名前を入力し、[Enter]を押します。
- 表の説明を変更するには、「説明の編集」をクリックします。新しい説明を入力し、「保存」をクリックします。

