Delta テーブルのしくみ
Databricks内のすべての新しいテーブルは、デフォルトによってDeltaテーブルとして作成されます。Delta テーブルは、データをクラウドオブジェクトストレージ内のファイルのディレクトリとして保存し、そのテーブルのメタデータをカタログとスキーマ内のメタストアに登録します。すべての Unity Catalog マネージドテーブルとストリーミング テーブルは Delta テーブルです。
Delta テーブルには、SQL、Python 、および Scala APIsを使用してクエリおよび更新できるデータ行が含まれています。 Delta テーブルは、メタデータをオープンソース Delta Lake 形式で格納します。 ユーザーは、これらのテーブルをデータベース内のテーブルと同じように扱うことができます。データの挿入、更新、削除、マージを行うことができます。 Databricks は、効率的な運用をサポートする方法でデータの保存と整理を行います。 データはオープンなDelta Lake形式で保存されるため、Databricks以外にも多くの製品から読み書きすることができます。
Delta Lake を使用しないテーブルを Databricks に作成することは可能ですが、それらのテーブルでは、Delta テーブルのトランザクション保証や最適化されたパフォーマンスは提供されません。 Delta Lake以外の形式を使用する他のテーブルの種類の詳細については、「テーブルとは」を参照してください。
次のサンプル コードでは、サンプルの NYC タクシー乗車データセットから Delta テーブルを作成し、$10 を超える運賃を含む行にフィルター処理します。 このテーブルは、新しい行が [ samples.nyctaxi.trips
] で追加または更新されても更新されません。
filtered_df = (
spark.read.table("samples.nyctaxi.trips")
.filter(col("fare_amount") > 10.0)
)
filtered_df.write.saveAsTable("catalog.schema.filtered_taxi_trips")
これで、SQL や Python などの言語を使用して、この Delta テーブルに対してクエリを実行できるようになりました。
Delta テーブルと通常のビュー
ビューは、Unity Catalog の 1 つ以上のテーブルとビューに対するクエリの結果です。 ビューは、テーブルから作成したり、複数のスキーマやカタログ内の他のビューから作成したりできます。
標準ビューは、ビューがクエリされるたびに結果が再計算されるクエリです。 ビューの主な利点は、ユーザーが通常のテーブルのようにビューをクエリできるため、クエリの複雑さをユーザーに隠すことができることです。 ただし、通常のビューはクエリが実行されるたびに再計算されるため、複雑なクエリや大量のデータを処理するクエリではコストがかかる可能性があります。
次の図は、通常のビューがどのように機能するかを示しています。
次のサンプル コードでは、サンプルの NYC タクシー乗車データセットから標準ビューを作成し、$10 を超える運賃を含む行にフィルター処理します。 このビューは、新しい行が追加されたり、既存の行が更新されたりしても、常に正しい結果を返します samples.nyctaxi.trips
。
filtered_df = (
spark.read.table("samples.nyctaxi.trips")
.filter(col("fare_amount") > 10.0)
)
filtered_df.write.createOrReplaceTempView("catalog.schema.v_filtered_taxi_trips")
これで、SQL や Python などの言語を使用して、この標準ビューをクエリできます。