ATTACH TABLE
ATTACH TABLE は、既存のテーブルデータをコピーせずに読み取り専用リンクを作成します。
主な機能
- ゼロコピーのデータアクセス: 物理的なデータ移動なしでソースデータにリンクします
- リアルタイム更新: ソーステーブルの変更は、アタッチされたテーブルに即座に反映されます
- 読み取り専用モード: SELECT クエリのみをサポートします(INSERT、UPDATE、DELETE 操作は不可)
- カラムレベルアクセス: セキュリティとパフォーマンスのために、特定のカラムのみを任意で含められます
構文
ATTACH TABLE <target_table_name> [ ( <column_list> ) ] '<source_table_data_URI>'
CONNECTION = ( CONNECTION_NAME = '<connection_name>' )
パラメータ
<target_table_name>: 作成する新しいアタッチ済みテーブルの名前<column_list>: ソーステーブルから含めるカラムの任意のリスト- 省略した場合、すべてのカラムが含まれます
- カラムレベルのセキュリティとアクセス制御を提供します
- 例:
(customer_id, product, amount)
<source_table_data_URI>: オブジェクトストレージ内のソーステーブルデータへのパス- 形式:
s3://<bucket-name>/<database_ID>/<table_ID>/ - 例:
s3://lake-toronto/1/23351/
- 形式:
CONNECTION_NAME: CREATE CONNECTION で作成した接続を参照します
ソーステーブルパスの見つけ方
データベース ID とテーブル ID を取得するには、FUSE_SNAPSHOT 関数を使用します。
SELECT snapshot_location FROM FUSE_SNAPSHOT('default', 'employees');
-- Result contains: 1/23351/_ss/... → Path is s3://your-bucket/1/23351/
データ共有の利点
仕組み
Object Storage (S3, MinIO, Azure, etc.)
┌─────────────┐
│ Source Data │
└──────┬──────┘
│
┌───────────────────────┼───────────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Marketing │ │ Finance │ │ Sales │
│ Team View │ │ Team View │ │ Team View │
└─────────────┘ └─────────────┘ └─────────────┘
主な利点
セキュリティとパフォーマンス
- カラムレベルのセキュリティ: 各チームは必要なカラムのみを参照できます
- リアルタイム更新: ソースの変更は、すべてのアタッチ済みテーブルに即座に反映されます
- 強整合性: 部分更新ではなく、常に完全なデータスナップショットを参照できます
- フルパフォーマンス: ソーステーブルのすべてのインデックスと最適化を継承します
例
基本的な使い方
-- Step 1: Create a connection to your storage
CREATE CONNECTION my_s3_connection
STORAGE_TYPE = 's3'
ACCESS_KEY_ID = '<your_aws_key_id>'
SECRET_ACCESS_KEY = '<your_aws_secret_key>';
-- Step 2: Attach a table with all columns
ATTACH TABLE population_all_columns 's3://lake-doc/1/16/'
CONNECTION = (CONNECTION_NAME = 'my_s3_connection');
セキュリティのためのカラム選択
-- Attach only specific columns for data security
ATTACH TABLE population_selected (city, population) 's3://lake-doc/1/16/'
CONNECTION = (CONNECTION_NAME = 'my_s3_connection');
IAM ロール認証の使用
-- Create a connection using IAM role (more secure than access keys)
CREATE CONNECTION s3_role_connection
STORAGE_TYPE = 's3'
ROLE_ARN = 'arn:aws:iam::123456789012:role/lake-role';
-- Attach table using the IAM role connection
ATTACH TABLE population_all_columns 's3://lake-doc/1/16/'
CONNECTION = (CONNECTION_NAME = 's3_role_connection');
チーム別ビュー
-- Marketing: Customer behavior analysis
ATTACH TABLE marketing_view (customer_id, product, amount, order_date)
's3://your-bucket/1/23351/'
CONNECTION = (CONNECTION_NAME = 'my_s3_connection');
-- Finance: Revenue tracking (different columns)
ATTACH TABLE finance_view (order_id, amount, profit, order_date)
's3://your-bucket/1/23351/'
CONNECTION = (CONNECTION_NAME = 'my_s3_connection');