1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Microsoft FabricAdvent Calendar 2024

Day 8

Microsoft Fabric Warehouse の TRUNCATE と DELETE の違いの確認

Posted at

はじめに

最近? Fabric Warehoues で TRUNCATE がサポートされたようですが、Delta Lake は TRUNCATEコマンドはサポートされていないため、DELETEは何が違うのか気になったので確認してみます。

image.png
引用:https://learn.microsoft.com/ja-jp/fabric/data-warehouse/tsql-surface-area

SQL Server ではTRUNCATEは各行のDELETE をトランザクションログに記録せずに、データファイルをパージして処理するというメタデータ操作的な作業であるため、高速にデータ削除が可能というものでした

参考:https://learn.microsoft.com/ja-jp/sql/t-sql/statements/truncate-table-transact-sql?view=sql-server-ver16

準備

以下のテーブルで検証します。

sql

CREATE TABLE [dbo].[Date] (

	[DateID] int NOT NULL, 
	[Date] datetime2(6) NULL, 
	[DateBKey] char(10) NULL, 
	[DayOfMonth] varchar(2) NULL, 
	[DaySuffix] varchar(4) NULL, 
	[DayName] varchar(9) NULL, 
	[DayOfWeek] char(1) NULL, 
	[DayOfWeekInMonth] varchar(2) NULL, 
	[DayOfWeekInYear] varchar(2) NULL, 
	[DayOfQuarter] varchar(3) NULL, 
	[DayOfYear] varchar(3) NULL, 
	[WeekOfMonth] varchar(1) NULL, 
	[WeekOfQuarter] varchar(2) NULL, 
	[WeekOfYear] varchar(2) NULL, 
	[Month] varchar(2) NULL, 
	[MonthName] varchar(9) NULL, 
	[MonthOfQuarter] varchar(2) NULL, 
	[Quarter] char(1) NULL, 
	[QuarterName] varchar(9) NULL, 
	[Year] char(4) NULL, 
	[YearName] char(7) NULL, 
	[MonthYear] char(10) NULL, 
	[MMYYYY] char(6) NULL, 
	[FirstDayOfMonth] date NULL, 
	[LastDayOfMonth] date NULL, 
	[FirstDayOfQuarter] date NULL, 
	[LastDayOfQuarter] date NULL, 
	[FirstDayOfYear] date NULL, 
	[LastDayOfYear] date NULL, 
	[IsHolidayUSA] bit NULL, 
	[IsWeekday] bit NULL, 
	[HolidayUSA] varchar(50) NULL
);


検証 1. 全件DELETE

  1. データ投入後、DELETE してみます。

    sql
    
    DELETE
    FROM [sandWH].[dbo].[Date];
    
    
  2. OneLake File Explorer から delta_logの確認。左がデータ投入のログ、右がDELETE です。
    image.png

DELETE は Deleta Lake の仕様通りParquet を参照先から外していることがわかります。なお、二回目以降の DELETE では テーブルプロトコルの情報は出てきませんでした。

検証 2. TRUNCATE

  1. データ投入後、DELETE してみます。

    sql
    
    TRUNCATE TABLE [sandWH].[dbo].[Date];
    
    
  2. OneLake File Explorer から delta_logの確認。左がデータ投入のログ、右がTRUNCATE です。
    image.png

    DELETEのときと同じようなファイル remove ログが記録されています。

検証 3. DELETE WHERE

  1. データ投入後、DELETE してみます。

    sql
    
    DELETE
    FROM [sandWH].[dbo].[Date] where [DateID] = 20150317;
    
    
  2. OneLake File Explorer から delta_logの確認。左がデータ投入のログ、右がDELETE です。全件の削除ではないので、新しいバージョンの parquet ファイルが add されています。

    image.png

やはりTRUNCATE と DELETE は少なくともdelta_log からは同じ操作扱いであることがわかりました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?