> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sync.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SQL Transformation

export const siteNameShort = "Sync";

*SQL Transformation* は、パイプラインでSQL クエリをミッドストリーム処理（ETL）します。このタイプのTransformation は、外部のSQL スクリプトまたはSQL エディタで作成したSQL クエリを処理します。これらのクエリを使用して、データベースから行を挿入、削除、更新、取得できます。SQL Transformation はクエリを処理し、行とデータベースエラーを返します。

## SQL Transformation の作成

SQL Transformation を追加するには：

1. {siteNameShort} を開き**変換**ページに移動します。

2. **変換を追加 > 新しい変換を追加**を選択します。

   <img src="https://mintcdn.com/cdata-sync/ANiMw09F6wBBj5Tp/images/SQL-Transformations_creating-an-SQL-transformation_1.png?fit=max&auto=format&n=ANiMw09F6wBBj5Tp&q=85&s=ef1c2fc2932c79a98aeb5fa6c941d589" width="150" data-path="images/SQL-Transformations_creating-an-SQL-transformation_1.png" />

3. **変換を追加**ダイアログボックスで、フィールドに以下のように入力します。
   * **名前：** 変換の名前を入力。
   * **種類：** 変換の種類として**SQL** を選択。
   * **同期先：** 変換を実行する同期先を選択。

4. **変換を追加**ボタンをクリックします。

変換を作成したら、オプションメニュー（**...**）から変換を管理できます。

## SQL Transformation 設定の指定

変換の設定を編集するには、変換の行末で\*\*... > 編集\*\*を選択します。設定ページには、設定を管理できる3つのタブがあります：

* **概要**
* **クエリ**
* **コメント**

### **概要**タブ

**概要**タブでは、一般的な設定、トリガー、およびEメールアラートを管理できます。このページでは、変換の最後の実行の詳細も確認できます。

#### **設定**カテゴリ

**設定**カテゴリでは、次のようにジョブの自動再試行、ログファイルの詳細レベル、およびコマンドタイムアウトを指定できます。

1. 変換の行末にある\*\*... > 編集**を選択します。このアクションにより**設定を編集\*\*ダイアログボックスが開きます。

   <img src="https://mintcdn.com/cdata-sync/ANiMw09F6wBBj5Tp/images/Transformations-SQL-Overview-Tab-Settings.png?fit=max&auto=format&n=ANiMw09F6wBBj5Tp&q=85&s=74a8df000f780040771b2ee7c095edf5" width="400" data-path="images/Transformations-SQL-Overview-Tab-Settings.png" />

2. （オプション）1つ以上のタスクが失敗した場合に{siteNameShort} の変換を再試行する場合は、**有効化済み**を選択します。失敗したタスクのみが再度実行されます。

3. **ログファイルの詳細レベル**のレベルを選択します。デフォルトレベルは**Info** です。

4. **コマンドタイムアウト**フィールドにタイムアウト値を入力します。

5. **保存**をクリックします。

#### **トリガー**カテゴリ

**トリガー**カテゴリでは、次のように、変換を実行する特定のスケジュールを設定できます。

1. **トリガー**カテゴリで**設定**をクリックします。このアクションにより**トリガー**ダイアログボックスが開きます。

2. 希望するトリガーの種類を指定します。以下の種類から選択できます：
   * **なし：** スケジュールオプションをオフにし、手動で変換を開始できるようにします。

   * **スケジュール実行：** 変換を実行するためのスケジュールを設定できます。この設定により、**間隔**と**毎時何分**フィールドも有効になります。**間隔**の設定には、より細かな設定を選択することが可能です。

     * **分：** **毎** オプションが有効になり、変換を実行する時間を分単位（10、15、20、または30分ごと）で指定できます。
     * **毎時：** **毎時何分** フィールドが有効になり、毎時何分（0-59）に変換が実行されるかを設定できます。例えば、毎時15分に変換を実行することができます。
     * **毎日：** **時刻** フィールドが有効になり、変換を実行する毎日の特定の時間を設定できます。
     * **毎週：** この設定により、**日**および**時刻**の2つのフィールドが有効になり、変換を実行する特定の曜日と時間を指定できます。
     * **毎月：** **日**および**時**フィールドが有効になります。ただし、**日**では、各月の特定の日付（1から31の値、または最終日）と時間を選択します。
     * **カスタム：** **Cron ステートメント**フィールドが有効になり、変換の実行を開始するためのcron ジョブを記述できます。

     **スケジュール実行**は、複数のジョブを実行している場合に便利です。どのジョブの後に変換を実行するかを指定できないため、複数のジョブに対して**ジョブ後**オプションを使用することはできません。

   * **ジョブ後：** 利用可能なすべてのジョブをリスト表示する**ジョブ**ドロップダウンリストを有効にします。変換を実行するための特定のジョブを選択できます。

     **ジョブ**フィールドの**特定のタスクを選択**をクリックすると、データに対して実行するさまざまなタスクを指定することも可能です。実行するタスクを選択します。

3. **保存**をクリックします。

<Note>トリガーのスケジュールを無効化するには、**トリガー**カテゴリのトグルスイッチを左にスライドします（無効化するとスイッチがグレーになります）。</Note>

#### **ラベル**カテゴリ

このカテゴリを使用すると、ラベルを追加できます：

1. **ラベル**カテゴリで**ラベルを追加**をクリックします。***TransformationName* - ラベルを追加**ダイアログボックスが開きます。現在使用可能なラベルをリストから検索して選択することも、新しいラベルを追加することもできます。

2. 新しいラベルを追加するには、**ラベルを検索または追加**テキストボックスにラベルを入力し、**追加**をクリックします。

   <img src="https://mintcdn.com/cdata-sync/ANiMw09F6wBBj5Tp/images/SQL-Transformations_labels-category_1.png?fit=max&auto=format&n=ANiMw09F6wBBj5Tp&q=85&s=f1cb6b587fe777dff9bf79a17bd07866" width="300" data-path="images/SQL-Transformations_labels-category_1.png" />

   以下に示すように、新しいラベルが利用可能なラベルのリストに表示されます。

   <img src="https://mintcdn.com/cdata-sync/ANiMw09F6wBBj5Tp/images/SQL-Transformations_labels-category_2.png?fit=max&auto=format&n=ANiMw09F6wBBj5Tp&q=85&s=0f7657926db2a2accfe56d13950102f2" width="300" data-path="images/SQL-Transformations_labels-category_2.png" />

3. **保存**をクリックします。

これらの手順を完了すると、新しいラベルが設定ページの**ラベル**カテゴリボックスに表示されます。

#### **通知**カテゴリ

**通知**カテゴリでは、次のように変換のEメールアラートを設定できます。

1. アラートを設定したい変換の行末にある\*\*... > 編集\*\*を選択します。
2. **通知**カテゴリにある**設定**をクリックします。
3. **通知**ダイアログボックスにある次のオプションを設定します：
   * **宛先：** アラートを送信するEメールアドレス。
   * **件名：** アラートメールの件名。
   * **エラーのみ：** ジョブでエラーが発生した場合のみアラートメールを送信するように指定するために選択できるオプション。このオプションを選択しない場合、{siteNameShort} は各ジョブの実行後にアラートを送信します。
4. **保存**をクリックします。

<Note>アラートを無効化するには、**通知**トグルスイッチを左にスライドします（無効化するとスイッチがグレーになります）。トグルスイッチは、カテゴリボックスの**通知**の右側に表示されます。</Note>

### **クエリ**タブ

このタブでは、変換の一部として実行されるクエリを追加および管理できます。

#### クエリの追加

クエリを追加するには：

1. **クエリを追加**をクリックして、**クエリを追加**ダイアログボックスを開きます。
2. テキストボックスにクエリを入力します。複数のステートメントがある場合は、各ステートメントをセミコロンで区切ってください。
3. **クエリを追加**をクリックします。クエリの追加が成功すると、{siteNameShort} は、**クエリ**ページの上部に成功した旨のメッセージを表示します。

クエリを実行する場合は、**クエリ**ページの上部にある**実行**をクリックします。

クエリを追加して実行すると、**クエリ**ページにクエリのテーブルと**最後の実行**の日付が表示されます。

#### クエリの編集

クエリを編集するには：

1. クエリの行末にある\*\*... > 編集\*\*を選択します。
2. **クエリを編集**ダイアログボックスで、必要に応じてクエリを修正します。
3. **保存**をクリックします。

### **変換履歴**タブ

このタブには、変換ジョブの実行に関する詳細が表示されます。詳細には、**実行日**、**ステータス**、**影響を受けたレコード**、および**処理時間**が含まれます。レポートをステータス（**すべてのステータス**、**成功**、**失敗**、または**エラー**）で絞り込むことも可能です。さらに、**履歴をエクスポート**をクリックして、履歴をエクスポートできます。

### コメントタブ

このタブでは、ジョブに関連するメモを記録および追跡できます。各コメントにはタイムスタンプが付きます。右上隅のドロップダウンメニューを使用して、タイムスタンプに基づいて並べ替え順序を変更できます。オプションには、**新しい順**（デフォルト）または**古い順**があります。また、行末の**コメントを編集**アイコン（<span><img style={{display:"inline", verticalAlign:"middle", margin:"0"}} src="https://mintcdn.com/cdata-sync/IzPXzuYOg0g8nJPd/images/SQL-Transformations_comments-tab_1.png?fit=max&auto=format&n=IzPXzuYOg0g8nJPd&q=85&s=be413df73cebc3abcdb7c20e34b5be89" width="18" height="18" data-path="images/SQL-Transformations_comments-tab_1.png" /></span>）や**コメントを削除**アイコン（<span><img style={{display:"inline", verticalAlign:"middle", margin:"0"}} src="https://mintcdn.com/cdata-sync/ANiMw09F6wBBj5Tp/images/SQL-Transformations_comments-tab_2.png?fit=max&auto=format&n=ANiMw09F6wBBj5Tp&q=85&s=a06e2e26404290e80566f1d8f2ad7b52" width="15" height="18" data-path="images/SQL-Transformations_comments-tab_2.png" /></span>）をクリックして、コメントを編集または削除することもできます。

## 全データベース用サンプルクエリ

次のSQL クエリは、レコードの重複排除を行います。

```sql theme={null}
CREATE OR REPLACE TABLE dbo.Accounts_Deduplicated as (
  SELECT *, row_number() over (partition by id order by modified desc) as duplicate_rank 
  FROM dbo.Accounts
);	
DELETE FROM dbo.Accounts_Deduplicated	WHERE duplicate_rank > 1;
```
