次の方法で共有


REPAIR TABLE

適用対象:「はい」のチェック マーク Databricks SQL 「はい」のチェック マーク Databricks Runtime

このコマンドは、テーブルのパーティションを修復または変更します。

Delta Lake で SYNC METADATA 句を使用して、テーブル メタデータに基づいてカタログ サービスを更新するか、Iceberg 読み取りが有効になっているテーブルの Apache Iceberg メタデータを生成します。 Delta Lake 以外のテーブルのパーティションを変更する場合は、 SYNC METADATA を使用しないでください。

サポートされる機能は、テーブルが Unity カタログまたは Hive メタストアに登録されているかどうか、およびテーブルが Delta Lake によってサポートされているかどうかによって異なります。

構文

[ MSCK ] REPAIR TABLE table_name
{
    [ {ADD | DROP | SYNC} PARTITIONS] | SYNC METADATA
}

check marked yes Databricks SQL Databricks Runtime 12.2 LTS 以降の場合、MSCK はオプションです。

パラメーター

  • table_name

    テーブルの名前。 テーブルが見つからない場合、Azure Databricks で TABLE_OR_VIEW_NOT_FOUND エラーが発生します。

  • ADDDROP または SYNCPARTITIONS

    適用対象:check marked yes Databricks SQL Databricks Runtime 10.4 LTS 以降

    PARTITIONED BY 句を使用して非 Delta テーブルを作成するときに、パーティションが生成され、Hive メタストアに登録されます。 ただし、パーティション テーブルが既存のデータから作成された場合、パーティションは Hive メタストアに自動的には登録されません。 パーティションを登録するには、MSCK REPAIR TABLE を実行します。

    パーティションを回復するもう 1 つの方法は、ALTER TABLE RECOVER PARTITIONSを使用することです。

    テーブルがキャッシュされている場合、コマンドはテーブルのキャッシュされたデータと、それを参照するすべての依存データをクリアします。 キャッシュは、次にテーブルまたは依存にアクセスされたときに入力されます。

    • ADD コマンドは、テーブル パーティションに属していないベース テーブル フォルダー内のすべてのサブフォルダーの新しいパーティションをセッション カタログに追加します。 ADD は、他のオプションが指定されていない場合の既定の引数です。
    • DROP コマンドを使用すると、ファイル システム内に存在しない場所を持つセッション カタログからすべてのパーティションがドロップされます。
    • は、DROP と ADDの組み合わせです。
  • SYNC METADATA

    Delta Lake のみ。

    構成 spark.databricks.delta.catalog.update.enabledtrue に設定されている場合、ターゲット テーブルメタデータの更新はカタログ サービスに自動的に同期されます。 それ以外の場合は、 REPAIR TABLE table_name SYNC METADATA を使用した手動同期が必要になる場合があります。

    ターゲット テーブルのトランザクション ログを読み取り、カタログ サービスのメタデータ情報を更新します。 このコマンドを実行するには、ターゲット テーブルに対する MODIFY 権限と SELECT 権限、および親スキーマとカタログに対する USE SCHEMA および USE CATALOG 権限が必要です。

    この引数は、Databricks Runtime 16.1 以降の Hive メタストアで動作します。 Hive メタストア テーブルの場合は、USAGE 権限と MODIFY 権限が必要です。

    Delta UniForm が有効になっている場合 (Unity カタログが必要です)、SYNC METADATA は現在の Delta メタデータから Iceberg メタデータへの手動変換をトリガーし、Unity カタログ Iceberg エンドポイントの最新の Iceberg バージョンを同期します。 デルタテーブルをIcebergクライアントで読む方法については、を参照してください。

    REPAIR TABLE table_name SYNC METADATAを使用することで、Hiveメタストアフェデレーション経由で作成された外部カタログから浅いクローンを読み取る場合に、Unityカタログのアクセス許可モデルを適用できます。 浅いクローンの操作をこちら参照してください。

例 (非 Delta Lake テーブル)

-- create a partitioned table from existing data /tmp/namesAndAges.parquet
> CREATE TABLE t1 (name STRING, age INT) USING parquet PARTITIONED BY (age)
  LOCATION "/tmp/namesAndAges.parquet";

-- SELECT * FROM t1 does not return results
> SELECT * FROM t1;

-- run MSCK REPAIR TABLE to recovers all the partitions
> MSCK REPAIR TABLE t1;

-- SELECT * FROM t1 returns results
> SELECT * FROM t1;
    name age
  ------- ---
  Michael  20
   Justin  19
     Andy  30

例 (Unity Catalog テーブル)

-- run MSCK REPAIR TABLE t1 SYNC METADATA to update the metadata info to Unity Catalog service
> MSCK REPAIR TABLE t1 SYNC METADATA