Cmdlets for Azure Cosmos DB

Build 24.0.9062

DELETE SELECT ステートメント

Azure Cosmos DB への1回の要求で複数の削除処理を実行するには、まずINSERT INTO 構文を使用して、削除するデータのインメモリ一時テーブルを作成します。削除するデータがすべて一時テーブルに入力されたら、DELETE FROM 構文を使用してAzure Cosmos DB のライブテーブルからデータを削除します。この機能は、JDBC で利用可能な標準バッチ処理API 経由でも利用できます。

一時テーブルへの入力

入力先の一時テーブルは動的なテーブルで、実行時に最初のデータをテーブルに入力するときに作成されます。一時テーブルは、その名前に「#」を付加して示されます。一時テーブルを使用してデータを削除する場合、その一時テーブルには「[TableName]#TEMP」という形式で名前を付ける必要があります。「TableName」は、データを挿入するテーブルの名前です。 次に例を示します。

INSERT INTO [CData].[Entities].Customers#TEMP (_id) VALUES ('AX1000001');
INSERT INTO [CData].[Entities].Customers#TEMP (_id) VALUES ('AX1000002');
INSERT INTO [CData].[Entities].Customers#TEMP (_id) VALUES ('AX1000003');

このコードでは、1つのデータカラムと3つのデータ行を含む「[CData].[Entities].Customers#TEMP」という名前の一時テーブルが作成されます。一時テーブルでは型を指定できないため、すべての値が文字列としてメモリに保存されます。これらの値の型は、[CData].[Entities].Customers テーブルに送信された後で正しい型に変換されます。

実際のテーブルからの削除

一時テーブルにデータが入力されたら、Azure Cosmos DB の実際のテーブルに対して挿入を実行します。そのためには、実際のテーブルからの削除(DELETE)を実行し、一時テーブルから入力データを選択します。次に例を示します。

DELETE FROM [CData].[Entities].Customers WHERE EXISTS SELECT _id FROM [CData].[Entities].Customers#TEMP

この例では、[CData].[Entities].Customers#TEMP テーブルのすべての内容が[CData].[Entities].Customers テーブルに渡されます。この結果、各要求で複数の削除を送信できるため、Azure Cosmos DB に送信される要求の数が少なくて済み、多くのレコードを削除する場合のパフォーマンスが向上します。

結果

クエリの結果は、一時テーブルLastResultInfo#TEMP に保存されます。次に一時テーブルが渡されてデータが変更されると、このテーブルはクリアされて、データが再挿入されます。LastResultInfo#TEMP テーブルはスキーマが事前定義されていないことに注意してください。データを読み取る前に、実行時にそのメタデータを確認する必要があります。

一時テーブルの存続時間

一時テーブルは、接続が開いている間だけ存続します。Azure Cosmos DB への接続が閉じられると、LastResultInfo#TEMP テーブルを含むすべての一時テーブルがクリアされます。

Copyright (c) 2024 CData Software, Inc. - All rights reserved.
Build 24.0.9062