

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# テーブルの作成
<a name="creating-tables"></a>

AWS Lake Formation メタデータテーブルには、スキーマ情報、パーティション情報、データの場所など、データレイク内のデータに関する情報が含まれています。これらのテーブルは、AWS Glue Data Catalog に保存されます。これらは、データレイクにある基盤となるデータにアクセスし、Lake Formation 許可でそのデータを管理するために使用します。テーブルは、Data Catalog 内のデータベースに保存されます。

Data Catalog テーブルを作成するには、いくつかの方法があります。
+ AWS Glue でクローラを実行する。「*AWS Glue デベロッパーガイド*」の「[クローラの定義](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html)」を参照してください。
+ ワークフローを作成して実行する。「[Lake Formation でのワークフローを使用したデータのインポート](workflows.md)」を参照してください。
+ Lake Formation コンソール、AWS Glue API、または AWS Command Line Interface (AWS CLI) を使用して、テーブルを手動で作成する。
+ を使用してテーブルを作成します Amazon Athena。
+ 外部アカウント内のテーブルへのリソースリンクを作成する。「[リソースリンクの作成](creating-resource-links.md)」を参照してください。

# Apache Iceberg テーブルの作成
<a name="creating-iceberg-tables"></a>

 AWS Lake Formation は、Amazon S3 に AWS Glue Data Catalog データが存在する で Apache Parquet データ形式を使用する Apache Iceberg テーブルの作成をサポートしています。Data Catalog のテーブルは、データストア内のデータを表すメタデータ定義です。デフォルトでは、Lake Formation は Iceberg v2 テーブルを作成します。v1 テーブルと v2 テーブルの違いについては、Apache Iceberg ドキュメントの「[形式バージョンの変更](https://iceberg.apache.org/spec/#appendix-e-format-version-changes)」を参照してください。

 [Apache Iceberg](https://iceberg.apache.org/) は、非常に大規模な分析データセット用のオープンテーブル形式です。Iceberg では、スキーマの変更 (スキーマ進化とも呼ばれます) を簡単に行うことができます。つまり、基になるデータを中断することなく、データテーブルの列を追加、名前変更、または削除できます。Iceberg はデータのバージョニングもサポートしているため、データの変更を経時的に追跡できます。これにより、タイムトラベル機能が有効になるため、過去のバージョンのデータにアクセスしてクエリを実行し、更新と削除の間に行われたデータの変更を分析できます。

Lake Formation コンソールまたは AWS Glue API の `CreateTable`オペレーションを使用して、データカタログに Iceberg テーブルを作成できます。詳細については、「[CreateTable アクション (Python: create\$1table)](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-catalog-tables.html#aws-glue-api-catalog-tables-CreateTable)」を参照してください。

Data Catalog に Iceberg テーブルを作成する場合、読み取りと書き込みを実行できるように、Amazon S3 でテーブル形式とメタデータファイルのパスを指定する必要があります。

 Lake Formation を使用して、Amazon S3 データロケーションの登録時にきめ細かなアクセスコントロール許可を使用して Iceberg テーブルを保護できます AWS Lake Formation。Amazon S3 のソースデータおよび Lake Formation に登録されていないメタデータの場合、アクセスは Amazon S3 および AWS Glue アクションの IAM アクセス許可ポリシーによって決まります。詳細については、「[Lake Formation 許可の管理](managing-permissions.md)」を参照してください。

**注記**  
Data Catalog は、パーティションの作成と Iceberg テーブルプロパティの追加をサポートしていません。

**Topics**
+ [前提条件](#iceberg-prerequisites)
+ [Iceberg テーブルの作成](#create-iceberg-table)

## 前提条件
<a name="iceberg-prerequisites"></a>

 Data Catalog に Iceberg テーブルを作成し、Lake Formation のデータアクセス許可を設定するには、次の要件を満たす必要があります。

1. 

**Lake Formation にデータが登録されていない状態で Iceberg テーブルを作成するために必要なアクセス許可。**

   Data Catalog にテーブルを作成するために必要なアクセス許可に加えて、テーブル作成者には次のアクセス許可が必要です。
   + リソース arn:aws:s3:::\$1bucketName\$1 での `s3:PutObject`
   + リソース arn:aws:s3:::\$1bucketName\$1 での `s3:GetObject`
   + リソース arn:aws:s3:::\$1bucketName\$1 での `s3:DeleteObject`

1. 

**Lake Formation にデータが登録されている状態で Iceberg テーブルを作成するために必要なアクセス許可:**

   Lake Formation を使用してデータレイク内のデータを管理および保護するには、テーブルのデータを含む Amazon S3 ロケーションを Lake Formation に登録します。これは、Lake Formation が Athena、Redshift Spectrum、Amazon EMR などの AWS 分析サービスに認証情報を提供してデータにアクセスできるようにするためです。Amazon S3 ロケーションの登録の詳細については「[データレイクへの Amazon S3 ロケーションの追加](register-data-lake.md)」を参照してください。

   Lake Formation に登録されている、基盤となるデータを読み書きするプリンシパルには、次のアクセス許可が必要です。
   + `lakeformation:GetDataAccess`
   + `DATA_LOCATION_ACCESS`

     ロケーションに対するデータロケーション許可を持つプリンシパルは、すべての子ロケーションに対するロケーション許可も持っています。

     データロケーション許可の詳細については、「[基盤となるデータのアクセスコントロール](access-control-underlying-data.md)」を参照してください。

 圧縮を有効にするには、Data Catalog 内のテーブルを更新するアクセス許可を持つ IAM ロールを、サービスが引き受ける必要があります。詳細については、「[テーブル最適化の前提条件](https://docs.aws.amazon.com/glue/latest/dg/optimization-prerequisites.html)」を参照してください。

## Iceberg テーブルの作成
<a name="create-iceberg-table"></a>

このページに記載されている AWS Command Line Interface ように、Lake Formation コンソールまたは を使用して Iceberg v1 および v2 テーブルを作成できます。 AWS Glue コンソールまたは を使用して Iceberg テーブルを作成することもできます AWS Glue クローラー。詳細については、「 AWS Glue デベロッパーガイド」の「[Data Catalog とクローラー](https://docs.aws.amazon.com/glue/latest/dg/catalog-and-crawler.html)」を参照してください。

**Iceberg テーブルを作成するには**

------
#### [ Console ]

1. にサインインし AWS マネジメントコンソール、[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) で Lake Formation コンソールを開きます。

1. Data Catalog で **[テーブル]** を選択し、**[テーブルの作成]** ボタンを使用して次の属性を指定します。
   + **テーブル名**: テーブルの名前を入力します。Athena を使用してテーブルにアクセスする場合は、「Amazon Athena ユーザーガイド」の[命名に関するヒント](https://docs.aws.amazon.com/athena/latest/ug/tables-databases-columns-names.html)を使用します。
   + **データベース**: 既存のデータベースを選択するか、新しいデータベースを作成します。
   + **説明**: テーブルの説明。テーブルの内容を理解しやすくするために説明を記入できます。
   + **テーブル形式**: **[テーブル形式]** として、[Apache Iceberg] を選択します。  
![\[Apache Iceberg テーブルオプションの選択とテーブル最適化オプション。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/table-optimization.png)
   + **テーブル最適化**
     + **圧縮** - データファイルをマージして書き換えて、古くなったデータを削除し、断片化されたデータをより大きい効率的なファイルに統合します。
     + **スナップショット保持** - スナップショットは、Iceberg テーブルのタイムスタンプ付きバージョンです。スナップショット保持設定を使用すると、スナップショットを保持する期間と保持するスナップショットの数を強制できます。スナップショット保持オプティマイザーを設定すると、古い不要なスナップショットと、その基になる関連付けられたファイルを削除して、ストレージのオーバーヘッドを管理できます。
     + **孤立ファイルの削除** — 孤立ファイルは、Iceberg テーブルメタデータによって参照されなくなったファイルです。これらのファイルは、特にテーブルの削除や ETL ジョブの失敗などのオペレーションの後、時間の経過と共に蓄積される可能性があります。孤立ファイルの削除を有効にすると AWS Glue 、 はこれらの不要なファイルを定期的に識別して削除し、ストレージを解放できます。

     詳細については、「[Iceberg テーブルの最適化](https://docs.aws.amazon.com/glue/latest/dg/table-optimizers.html)」を参照してください。
   + **IAM ロール**: 圧縮を実行する場合、サービスはユーザーに代わって IAM ロールを引き受けます。IAM ロールは、ドロップダウンを使用して選択できます。圧縮を有効にするために必要なアクセス許可がロールにあることを確認します。

     必要なアクセス許可の詳細については、「[テーブル最適化の前提条件](https://docs.aws.amazon.com/glue/latest/dg/optimization-prerequisites.html)」を参照してください。
   + **ロケーション**: メタデータテーブルを保存する Amazon S3 内のフォルダへのパスを指定します。Iceberg が読み取りと書き込みを実行するには、メタデータファイルと Data Catalog 内のロケーションが必要です。
   + **スキーマ**: **[列を追加]** を選択して、列と、列のデータ型を追加します。空のテーブルを作成して、後でスキーマを更新することもできます。Data Catalog は Hive データ型をサポートしています。詳細については、「[Hive データ型](https://cwiki.apache.org/confluence/plugins/servlet/mobile?contentId=27838462#content/view/27838462)」を参照してください。

      Iceberg では、テーブルを作成した後でスキーマとパーティションを進化させることができます。[[Athena クエリ]](https://docs.aws.amazon.com/athena/latest/ug/querying-iceberg-evolving-table-schema.html) を使用してテーブルスキーマを更新し、[[Spark クエリ]](https://iceberg.apache.org/docs/latest/spark-ddl/#alter-table-sql-extensions) を使用してパーティションを更新できます。

------
#### [ AWS CLI ]

```
aws glue create-table \
    --database-name iceberg-db \
    --region us-west-2 \
    --open-table-format-input '{
      "IcebergInput": { 
           "MetadataOperation": "CREATE",
           "Version": "2"
         }
      }' \
    --table-input '{"Name":"test-iceberg-input-demo",
            "TableType": "EXTERNAL_TABLE",
            "StorageDescriptor":{ 
               "Columns":[ 
                   {"Name":"col1", "Type":"int"}, 
                   {"Name":"col2", "Type":"int"}, 
                   {"Name":"col3", "Type":"string"}
                ], 
               "Location":"s3://DOC_EXAMPLE_BUCKET_ICEBERG/"
            }
        }'
```

------

# Iceberg テーブルの最適化
<a name="data-compaction"></a>

Lake Formation は、 AWS 分析エンジンと ETL ジョブで使用される Apache Iceberg テーブルの管理とパフォーマンスを向上させるために、複数のテーブル最適化オプションをサポートしています。これらのオプティマイザーは、効率的なストレージの使用量、クエリパフォーマンスの向上、効果的なデータ管理を実現します。Lake Formation では、次の 3 種類のテーブルオプティマイザーを使用できます。
+ **圧縮** - データ圧縮では、小さいデータファイルを圧縮してストレージの使用量を減らし、読み取りパフォーマンスを向上させます。古いデータを削除して、フラグメント化されたデータをより大規模で効率的なファイルに統合するために、データファイルはマージされ、書き換えられます。圧縮は、必要に応じて自動または手動でトリガーするように設定できます。
+ **スナップショット保持** - スナップショットは、Iceberg テーブルのタイムスタンプ付きバージョンです。スナップショット保持設定を使用すると、スナップショットを保持する期間と保持するスナップショットの数を強制できます。スナップショット保持オプティマイザーを設定すると、古い不要なスナップショットと、その基になる関連付けられたファイルを削除して、ストレージのオーバーヘッドを管理できます。
+ **孤立ファイルの削除** — 孤立ファイルは、Iceberg テーブルメタデータによって参照されなくなったファイルです。これらのファイルは、特にテーブルの削除や ETL ジョブの失敗などのオペレーションの後、時間の経過と共に蓄積される可能性があります。孤立ファイルの削除を有効にすると AWS Glue 、 はこれらの不要なファイルを定期的に識別して削除し、ストレージを解放できます。

 AWS Glue コンソール、または AWS Glue API オペレーションを使用して、データカタログ内の個々の Iceberg テーブルの圧縮 AWS CLI、スナップショット保持、孤立ファイル削除オプティマイザを有効または無効にできます。

詳細については、「 AWS Glue デベロッパーガイド」の[「Iceberg テーブルの最適化](https://docs.aws.amazon.com/glue/latest/dg/table-optimizers.html)」を参照してください。

# テーブルの検索
<a name="searching-for-tables"></a>

 AWS Lake Formation コンソールを使用して、名前、場所、データベースを含むデータカタログテーブルなどでデータカタログテーブルを検索できます。検索結果には、Lake Formation 許可を持つテーブルのみが表示されます。

**テーブルを検索する (コンソール)**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/) で Lake Formation コンソールを開きます。

1. ナビゲーションペインで **[Table]** (テーブル) を選択します。

1. ページの上部にある検索フィールドにカーソルを置きます。このフィールドには、*[プロパティでテーブルを検索]* というプレースホルダテキストが表示されています。

   検索に使用できるさまざまなテーブルプロパティを示す **[Properties]** (プロパティ) メニューが表示されます。  
![\[検索フィールドから [Properties] (プロパティ) メニューがドロップダウンされます。これには、[Name] (名前)、[Classification] (分類)、[Database] (データベース)、[Location] (ロケーション)、[Catalog ID] (カタログ ID) のエントリが含まれています。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/search-for-tables.png)

1. 以下のいずれかを実行します。
   + テーブルが含まれるデータベースで検索します。

     1. **[Properties]** (プロパティ) メニューから **[Databases]** (データベース) を選択し、表示される **[Databases]** (データベース) メニューからデータベースを選択するか、データベース名を入力して **[Enter]** キーを押します。

        データベースにある、許可を持っているテーブルがリストされます。

     1. (オプション) このリストをデータベース内の単一のテーブルに絞り込むには、もう 1 度検索フィールドにカーソルを置き、**[Properties]** (プロパティ) メニューから **[Name]** (名前) を選択して、表示される **[Tables]** (テーブル) メニューからテーブル名を選択するか、テーブル名を入力して **[Enter]** キーを押します。

        単一のテーブルがリストされ、検索フィールドの下にデータベース名とテーブル名の両方がタイルとして表示されます。  
![\[検索フィールドの下に、[Database] (データベース) とラベル付けされた、選択したデータベース名が含まれるタイルと、[Table] (テーブル) とラベル付けされた、選択したテーブル名が含まれるタイルの 2 つのタイルがあります。タイルの右側には、[Clear filter] (フィルターをクリア) ボタンがあります。\]](http://docs.aws.amazon.com/ja_jp/lake-formation/latest/dg/images/search-for-tables-with-filter.png)

        フィルターを調整するには、どちらかのタイルを閉じるか、**[Clear filter]** (フィルターをクリア) を選択します。
   + 他のプロパティで検索します。

     1. **[Properties]** (プロパティ) メニューから検索プロパティを選択します。

         AWS アカウント ID で検索するには、**プロパティ**メニューから**カタログ ID** を選択し、有効な AWS アカウント ID (111122223333 など) を入力して **Enter **キーを押します。

        ロケーションで検索するには、**[Properties]** (プロパティ) メニューから **[Location]** (ロケーション) を選択し、表示される **[Location]** (ロケーション) メニューからロケーションを選択します。選択したロケーション (Amazon S3 など) のルートロケーションにあるすべてのテーブルが返されます。

**を使用したテーブルの検索 AWS CLI**
+ 次の例は、部分検索を実行する方法を示しています。`--search-text` パラメータを使用すると、指定されたテキストがメタデータに含まれるテーブルを検索できます。この場合、名前、説明、またはその他のメタデータフィールドに「顧客」が含まれるすべてのテーブルが返されます。

  ```
  aws glue search-tables 
        --search-text "customer" 
        --region AWS リージョン
        --max-results 10
        --sort-criteria "FieldName=Name,Sort=ASC"
  ```

# AWS アカウント間でのデータカタログテーブルとデータベースの共有
<a name="sharing-catalog-resources"></a>

リソースに対する Lake Formation アクセス許可を外部 AWS アカウントに付与することで、Data Catalog リソース (データベースとテーブル) を外部アカウントと共有できます。ユーザーはその後、複数のアカウントにまたがるテーブルを結合してクエリするクエリとジョブを実行できるようになります。制限はいくつかありますが、Data Catalog リソースを別のアカウントと共有する場合、そのアカウント内のプリンシパルは、そのリソースをプリンシパルの Data Catalog 内にあるかのように操作することができます。

リソースは外部 AWS アカウントの特定のプリンシパルと共有しません。リソースは AWS アカウントまたは組織と共有します。 AWS 組織とリソースを共有する場合は、その組織にあるすべてのレベルのすべてのアカウントとリソースを共有することになります。共有後、各外部アカウントのデータレイク管理者が、そのアカウント内のプリンシパルに共有リソースに対する許可を付与する必要があります。

詳細については、「[Lake Formation でのクロスアカウントデータ共有](cross-account-permissions.md)」および「[データカタログリソースに対するアクセス許可の付与](granting-catalog-permissions.md)」を参照してください。

**以下も参照してください。**  
[共有 Data Catalog テーブルとデータベースへのアクセスと表示](viewing-shared-resources.md)
[前提条件](cross-account-prereqs.md)