表

表を使用して、データの構造を定義します。

新しいデータを表にロードしたり、既存の場所にある参照データをロードできます。表に対するファイングレイン・アクセス制御権限を定義するには、表権限を作成します。詳細は、表の権限を参照してください。

表を共有するには、データの共有を参照してください。

表は、管理することも外部にすることもできます。

管理対象テーブル

管理対象表は、AIデータ・プラットフォーム内に格納され、AIデータ・プラットフォーム・ユーザーのみがアクセスできるデータの構造を定義します。

管理対象表を削除すると、表定義および表データが削除されます。

外部表

外部表は、Oracle AI Data Platformによって管理されない場所に格納されるデータの構造を定義します。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のIAMポリシーを参照してください。

サポートされている表形式

表では、CSV、JSON、Avro、Parquet、ORCなどのファイルベースの形式、またはDeltaやApache Icebergなどのトランザクション表形式を使用できます。Iceberg表は、Hadoopカタログ実装を使用して、Oracle Cloud Infrastructure Object Storageの表メタデータを管理します。

書式 説明 使用状況
カンマ区切り値(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データファイルを拡張する列形式で格納されます。 トランザクションのサポートに使用されます。
Iceberg バージョン管理されたメタデータ、マニフェストおよびスナップショットを通じてParquetデータ・ファイルを管理するオープン表形式。AI Data Platformでは、Iceberg Hadoopカタログ実装を使用します。 ACIDトランザクション、同時読取りと同時書込み、スキーマとパーティションの展開、時間移動問合せ、行レベルの更新、アップサートおよびスナップショット管理に使用します。

サポートされているデータ型

データ・タイプ 説明
バイトタイプ 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値を持つことができるかどうかを示すために使用されます。

制限事項

AIデータ・プラットフォームの表には、次の制限が適用されます:

  • ボリューム内またはボリューム上のデータファイルまたはディレクトリに外部表を定義することはできません。
  • 別の外部表または外部ボリュームにすでに使用されているバケットまたはそのディレクトリに外部表を定義することはできません
  • ビューはマスター・カタログで表示またはリストできません。

スキーマ展開

Oracle AI Data Platformでのスキーマ展開により、必要な権限を持つユーザーは、ノートブックのSQLを使用して管理対象表を更新できます。

これは、データセットを最初から再作成せずに、新しい列、削除された列、名前変更された列、パーティションの変更または表の名前変更をサポートするために、表定義が時間の経過とともに変化する場合に便利です。サポートされる形式は、Parquet、Avro、DeltaおよびIcebergです。

サポートされている操作

次のスキーマ展開操作が管理対象表で分析されました。

操作 デルタ Parquet Avro Iceberg
表名の変更 サポートされています サポートされています サポートされています サポートされています
列の追加 サポートされています サポートされています サポートされています サポートされています
列の削除 サポートされています サポート対象外 サポート対象外 サポートされています
列の変更または名前変更 サポートされています サポート対象外 サポート対象外 サポートされています
列を置換 サポートされています サポート対象外 サポート対象外 サポートされています
パーティションの追加 パーティションは、データが書き込まれると自動的に作成されます。DDLを使用して個々のパーティションを追加することはできません。 DDLによるサポート DDLによるサポート パーティションは、データが書き込まれると自動的に作成されます。DDLを使用して個々のパーティションを追加することはできません。ALTER TABLE ... ADD PARTITION FIELDを使用して、パーティション指定にフィールドを追加できます。
パーティションの削除 関連するデータを削除し、VACUUMを実行します。 サポートされています サポートされています DDLを使用して個々のパーティションを削除することはできません。かわりに、関連する行を削除します。ALTER TABLE ... DROP PARTITION FIELDを使用して、パーティション指定からフィールドを削除できます。
データ型の変更 CTASまたは上書きスキーマの回避策が必要な場合があります。 サポート対象外 サポート対象外 互換性のある型のプロモーション(INTからBIGINT、FLOAT to DOUBLEなど)およびALTER TABLEによる小数点精度の増加でのみサポートされます。絞込みおよび互換性のない変換はサポートされていません。

管理対象表の作成

管理対象表を作成して、管理するスキーマの構造化データを保持できます。

  1. 「表を作成」ダイアログを開きます。
    • 左のナビゲーション・ペインから、次の手順を実行します。
      1. 「Create」アイコン「作成」をクリックし、「表」を選択します。
      2. 「表の場所の選択」ダイアログで、表を作成するカタログおよびスキーマを選択し、「選択」をクリックします。
    • マスター・カタログ・アイコン Master catalogから:
      1. マスター・カタログ・ツリーまたは「カタログ」タブで、表を作成するカタログをクリックして開きます。
      2. 「スキーマ」タブで、表を作成するスキーマをクリックして開きます。
      3. 「スキーマに追加」をクリックし、「表」を選択します。

    表タイプ「管理対象」が選択された表トレイの作成

  2. 「表タイプ」ドロップダウン・リストから、「管理対象」を選択します。
  3. 「管理対象表形式」ドロップダウン・リストから、表の形式を選択します。
    • Avro
    • CSV
    • デルタ湖
    • JSON
    • ORC
    • Parquet
    • テキスト・ファイル
  4. 表データを含むファイルをドラッグ・アンド・ドロップするか、「参照」をクリックしてファイルを検索して追加します。
  5. CSVまたはJSONを選択した場合は、「拡張オプション」を構成します。
    • CSV: ファイルにヘッダーがあるかどうか、データが複数の行にまたがることができるかどうか、エンコーディング、エスケープ文字、デリミタおよび引用符文字を指定します。
    • JSON: データが複数の行にまたがることができるかどうか、コメントと一重引用符が許可されるかどうか、およびエンコーディングを指定します。
  6. 表示された場合は、「データのプレビュー」をクリックします。
  7. 「表の名前」および「説明」を入力します。
  8. オプション: 表が非常に大きい場合は、「パーティション・キー」(オプション)を展開します。「パーティションの追加」をクリックし、データ列を選択します。
  9. オプション: 表プロパティをデータ・カタログのメタデータに追加するには、「表プロパティ(オプション)」を展開します。「プロパティの追加」をクリックし、プロパティとその値を入力します。
  10. 「作成」をクリックします。

外部表の作成

Oracle AI Data Platformでデータを移動または複製せずに、OCI Object Storageでデータを直接問い合せる外部表を作成できます。

  1. 「表を作成」ダイアログを開きます。
    • 左側のナビゲーション・ペインから次の操作を行います。
      1. 「Create」アイコン「作成」をクリックし、「表」を選択します。
      2. 「表の場所の選択」ダイアログで、表を作成するカタログおよびスキーマを選択し、「選択」をクリックします。
    • マスター・カタログ・アイコン Master catalogから:
      1. マスター・カタログ・ツリーまたは「カタログ」タブで、表を作成するカタログをクリックして開きます。
      2. 「スキーマ」タブで、表を作成するスキーマをクリックして開きます。
      3. 「スキーマに追加」をクリックし、「表」を選択します。

    表タイプ「外部」が選択された状態で開いた表の作成ページ

  2. 「表タイプ」ドロップダウンから、「外部」を選択します。
  3. 「入力データ・フォーマット」ドロップダウン・リストから、表のフォーマットを選択します。
    • Avro
    • CSV
    • デルタ湖
    • JSON
    • ORC
    • Parquet
    • テキスト・ファイル
  4. CSVまたはJSONを選択した場合は、「拡張オプション」を構成します。
    • CSV: ファイルにヘッダーがあるかどうか、データが複数の行にまたがることができるかどうか、エンコーディング、エスケープ文字、デリミタおよび引用符文字を指定します。
    • JSON: データが複数の行にまたがることができるかどうか、コメントと一重引用符が許可されるかどうか、およびエンコーディングを指定します。
  5. データが格納されているOCIオブジェクト・ストレージから、コンパートメント、バケットおよびフォルダ(オプション)を参照して選択します。選択できるオブジェクトは、ログイン・ユーザーのIAM権限に基づきます。
  6. 「表の名前」および「説明」を入力します。
  7. オプション: 表が非常に大きい場合は、「パーティション・キー」(オプション)を展開します。「パーティションの追加」をクリックし、データ列を選択します。
  8. オプション: 表プロパティをデータ・カタログのメタデータに追加するには、「表プロパティ(オプション)」を展開します。「プロパティの追加」をクリックし、プロパティとその値を入力します。
  9. 「作成」をクリックします。

表の詳細を表示

表の詳細を表示して、その構成およびメタデータをレビューできます。

表の「詳細」タブには、表のキー、タイプおよび書式と、表の作成日時および最終更新日時が表示されます。表のプロパティも表示されます。

  1. 左側のナビゲーション・ペインで、マスター・カタログ・アイコン「マスター・カタログ」をクリックします。
  2. マスター・カタログ・ツリーで、表示する表を含むカタログおよびスキーマを展開し、「表」をクリックします。
  3. 「表」タブで、表を見つけてアクションの3つのドット・アイコン 「アクション」をクリックし、「表示」をクリックします。
  4. 「詳細」をクリックします。

表名の変更

内容または目的が変更された場合は、管理する表の名前を変更できます。

ノート:

Oracle AI Data Platformの外部表への編集は、OCI Object Storageのリモート・カタログにプッシュされません。
  1. 左側のナビゲーション・ペインで、マスター・カタログ・アイコン「マスター・カタログ」をクリックします。
  2. マスター・カタログ・ツリーで、編集する表を含むカタログとスキーマを展開し、「表」をクリックします。
  3. 「表」タブで、表を見つけてアクションの3つのドット・アイコン 「アクション」をクリックし、「名前変更」をクリックします。
  4. 表名を編集し、[Enter]を押します。

表の説明の編集

管理する表の内容または目的が変更された場合は、その表の説明を変更できます。

ノート:

Oracle AI Data Platformの外部表への編集は、OCI Object Storageのリモート・カタログにプッシュされません。
  1. 左側のナビゲーション・ペインで、マスター・カタログ・アイコン「マスター・カタログ」をクリックします。
  2. マスター・カタログ・ツリーで、編集する表を含むカタログとスキーマを展開し、「表」をクリックします。
  3. 「表」タブで、表を見つけてアクションの3つのドット・アイコン 「アクション」をクリックし、「説明の編集」をクリックします。
  4. 表の説明を編集し、「保存」をクリックします。

表の削除

表が不要になった場合に、管理するスキーマから表を削除できます。

ノート:

外部表によって参照されるOCIオブジェクト・ストレージのデータは削除されません。
  1. 左側のナビゲーション・ペインで、マスター・カタログ・アイコン「マスター・カタログ」をクリックします。
  2. マスター・カタログ・ツリーで、削除する表を含むカタログおよびスキーマを展開し、「表」をクリックします。
  3. 「表」タブで、表を見つけてアクションの3つのドット・アイコン 「アクション」をクリックし、「削除」をクリックします。
  4. 「削除」をクリックします