# tAzureSynapseOutput

Azure SQL Data Warehouseデータベースでのエントリーの書き込み、アップデート、変更、抑制を行います。

## tAzureSynapseOutputの標準プロパティ

これらのプロパティは、標準ジョブのフレームワークで実行されているtAzureSynapseOutputを設定するために使われます。

標準のtAzureSynapseOutputコンポーネントは、Cloudファミリーとデータベースファミリーに属しています。

このフレームワーク内のコンポーネントは、すべてのTalend製品で利用できます。

## 基本設定

| プロパティ | 説明 |
| --- | --- |
| [Use an existing connection] (既存の接続を使用) | 定義済みの接続の詳細を再利用する場合は、このチェックボックスを選択して、[Component List] (コンポーネントリスト)ドロップダウンリストから、目的の接続コンポーネントを選択します。<br><br><ol> <li> <p>親レベルで、共有するデータベース接続を、そのデータベース接続そのものを作成する接続コンポーネントの<span>[Basic settings] (基本設定)</span>ビューに登録します。</p> </li> <li> <p>子レベルで、登録済みのそのデータベース接続を読み取るために専用の接続コンポーネントを使用します。</p> </li> </ol><br><br>情報メモ警告: このコンポーネントがテーブルに操作を実行するように設定されている場合は、このコンポーネントに対して自動コミットファンクションを有効にして既存の接続を使用ことを強く推奨します。[Advanced settings] (詳細設定)ビューで[Auto Commit] (自動コミット)オプションを選択して、tAzureSynapseConnectionコンポーネントを使い、このタイプの接続を確立できます。 |
| [Property Type] (プロパティタイプ) | 接続の詳細を設定する方法を選択します。<br><br><ul> <li> <p> <span>[Built-In] (組み込み)</span>: このコンポーネントの接続の詳細がローカルに設定されます。関連するすべての接続のプロパティ値を手動で指定する必要があります。</p> </li> <li> <p> <span>[Repository] (リポジトリー)</span>: <span><span>[Repository] (リポジトリー)</span> &gt; <span>[Metadata] (メタデータ)</span></span>で一元的に保存された接続の詳細が、このコンポーネントによって再使用されます。 </p> <p>このチェックボックスの横にある <span>[...]</span> ボタンをクリックし、表示された <span>[Repository Content] (リポジトリーのコンテンツ)</span>ダイアログボックスで、再使用する接続の詳細を選択すると、関連するすべての接続のプロパティに値が自動的に入力されます。</p> </li> </ul> |
| [JDBC Provider] (JDBCプロバイダー) | 使うJDBCドライバーのプロバイダーを選択します。 |
| [Host] (ホスト) | 使うデータベースサーバーかAzure Synapse AnalyticsのIPアドレスまたはホスト名を指定します。<br><br>サーバーが存在するマシンでSQL Server Browserサービスが実行中である場合は、このフィールドにホスト名とインスタンス名を{host\_name}\{instance\_name}という形式で指定すれば、TCPダイナミックポートを通じてネームドインスタンスに接続できるようになります。この場合は[Port] (ポート)フィールドを空白のまましておきます。関連情報は、[SQL Server Browser service](https://docs.microsoft.com/ja-jp/sql/tools/configuration-manager/sql-server-browser-service?view=sql-server-ver16)をご覧ください。 |
| [Port] (ポート) | 使うデータベースサーバーかAzure Synapse Analyticsのリスニングポート番号を入力します。<br><br>サーバーが存在するマシンでSQL Server Browserサービスが実行中である場合は、[Host] (ホスト)フィールドにホスト名とインスタンス名を入力し、このフィールドを空にしておけば、TCPダイナミックポートを通じてネームドインスタンスに接続できるようになります。関連情報は、[SQL Server Browser service](https://docs.microsoft.com/ja-jp/sql/tools/configuration-manager/sql-server-browser-service?view=sql-server-ver16)をご覧ください。 |
| [Schema] (スキーマ) | Azure Synapse Analyticsスキーマの名前を入力します。 |
| [Database] (データベース) | 使用するAzure Synapse Analyticsの名前を指定します。 |
| [Username] (ユーザー名)と[Password] (パスワード) | 認証データを入力します。<br><br>パスワードを入力するためには、[Password] (パスワード)フィールドの横にある[...]ボタンをクリックし、ポップアップダイアログボックスにパスワードを二重引用符で囲んで入力して[OK]をクリックし、設定を保存します。<br><br>[Additional JDBC Parameters] (追加のJDBCパラメーター)フィールドにintegratedSecurity=trueを追加し、これら2つのフィールドを空にしておけば、Windowsで[Type 2 integrated authentication] (タイプ2のインテグレーション認証)を使用できるようになります。関連情報は、[Building the connection URL](https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?redirectedfrom=MSDN)で*Connecting with integrated authentication On Windows*というセクションをご覧ください。 |
| [Table] (テーブル) | 使用するテーブルの名前を指定します。 |
| [Action on table] (テーブルでのアクション) | 定義されたテーブルに対して実行する操作を選択します。<br><br><ul> <li> <p> <span>[Default] (デフォルト)</span>: 操作は行われません。</p> </li> <li> <p> <span>[Drop and create table] (ドロップしてテーブルを作成)</span>: テーブルが削除され、再作成されます。</p> </li> <li> <p> <span>[Create table] (テーブルを作成)</span>: テーブルが存在しないため、作成されます。</p> </li> <li> <p> <span>[Create table if not exists] (テーブルが存在しない場合は作成)</span>: テーブルが存在しない場合は作成されます。</p> </li> <li> <p> <span>[Drop table if exist and create] (テーブルが存在する場合はドロップして作成)</span>: テーブルが既に存在する場合は削除されて再作成されます。</p> </li> <li> <p> <span>[Clear table] (テーブルをクリア)</span>: テーブルのコンテンツが削除されます。この操作はロールバックできます。</p> </li> <li> <p> <span>[Truncate] (切り捨て)</span>: テーブルのコンテンツが削除されます。</p> </li> </ul> |
| [Turn on identity insert] (ID挿入をオンにする) | (SQL Serverに次の順次値を選択させるのではなく)挿入されたレコードのID値に独自のシーケンスを使う場合は、このチェックボックスを選択します。 |
| [Action on data] (データでのアクション) | 定義されたテーブルのデータに対して実行する操作を選択します。<br><br><ul> <li> <p> <span>[Insert] (挿入)</span>: テーブルに新しいエントリーを追加します。重複が見つかると、ジョブは停止します。</p> </li> <li> <div> <span>[Update] (アップデート)</span>: 既存のエントリーが変更されます。<div><span>情報メモ</span><span>注:</span> スキーマカラムがすべてキーとして設定されている場合は、このアクションによってエラーが発生し、ジョブが失敗します。</div> </div> </li> <li> <div> <span>[Insert or update] (挿入またはアップデート)</span>: 新しいレコードを挿入します。指定された参照を持つレコードが既に存在する場合は、アップデートされます。<div><span>情報メモ</span><span>注:</span> スキーマカラムがすべてキーとして設定されている場合は、このアクションによって警告メッセージが発生し、ジョブが続行されます。</div> </div> </li> <li> <div> <span>[Update or insert] (アップデートまたは挿入)</span>: 指定された参照を使用してレコードをアップデートします。レコードが存在しない場合は、新しいレコードが挿入されます。<div><span>情報メモ</span><span>注:</span> スキーマカラムがすべてキーとして設定されている場合は、このアクションによって警告メッセージが発生し、ジョブが続行されます。</div> </div> </li> <li> <p> <span>[Delete] (削除)</span>: 入力フローに対応するエントリーを削除します。</p> </li> <li> <p> <span>[Insert if not exist] (存在しない場合は挿入)</span>: テーブルに新しいエントリーが存在しない場合は追加します。</p> </li> </ul><br><br>[Update] (アップデート)操作と[Delete] (削除)操作のベースとなるプライマリキーとして、カラムを少なくとも1つ指定する必要があります。この場合、[Edit Schema] (スキーマを編集)をクリックし、プライマリキーとして設定するカラムの横にあるチェックボックスをオンにします。高度な設定を行う場合は、[Advanced settings] (詳細設定)ビューをクリックして、[Update] (アップデート)操作と[Delete] (削除)操作のプライマリキーを同時に定義できます。この場合、[Use field options] (フィールドオプションを使用)チェックボックスをオンにし、[Key in update column] (アップデートのキーカラム)で、[Update] (アップデート)操作のベースとして使用するカラム名の横にあるチェックボックスをオンにします。[Delete] (削除)操作の[Key in delete column] (削除カラムのキー)でも同じようにします。<br><br>ダイナミックスキーマ機能は[Insert] (挿入)、[Update] (アップデート)、[Insert or update] (挿入またはアップデート)、[Update or insert] (アップデートまたは挿入)、および[Delete] (削除)のモードで使用できます。 |
| [Specify identity field] (IDフィールドを指定) | IDフィールドを指定するには、このチェックボックスをオンにします。IDフィールドは自動的に増分するID番号で構成されています。<br><br>このチェックボックスをオンにすると、他の3つのフィールドが表示されます。<br><br><ul> <li> <p> <span>[Identity field] (IDフィールド)</span>: IDフィールドとして定義するカラムをリストから選択します。</p> </li> <li> <p> <span>[Start value] (開始値)</span>: テーブルにロードされる最初の行に使う開始値を入力します。</p> </li> <li> <p> <span>[Step] (ステップ)</span>: ロードされた前の行の値に追加する増分値を入力します。</p> </li> </ul><br><br>このチェックボックスは、[Action on table] (テーブルでのアクション)リストで[Drop and create table] (ドロップしてテーブルを作成)、[Create table] (テーブルを作成)、[Create table if not exists] (テーブルが存在しない場合は作成)、[Drop table if exists and create] (テーブルが存在する場合はドロップして作成)のいずれかを選択している場合のみ利用できます。[Advanced settings] (詳細設定)ビューで[Enable parallel execution] (並列実行を有効化)チェックボックスをオンにしている場合は表示されません。[Turn on identity insert] (ID挿入をオンにする)チェックボックスがオフの状態で[Action on table] (テーブルでのアクション)リストから[Create table if not exists] (テーブルが存在しない場合は作成)オプションを選択し、このチェックボックスをオンにすると、指定したテーブルが存在しない場合、データが挿入されていないテーブルのみが作成されます。<br><br>コンポーネントのスキーマからIDフィールドを指定することもできます。それには、関連するカラムの[DB Type] (DBタイプ)をINT IDENTITYに設定します。<br><br>[Specify identity field] (IDフィールドの指定)チェックボックスがオンの場合、スキーマ内のDBタイプINT IDENTITYは無視されます。 |
| [Schema] (スキーマ)と[Edit schema] (スキーマを編集) | スキーマとは行の説明のことです。処理して次のコンポーネントに渡すフィールド(カラム)数を定義します。Sparkジョブを作成する場合、フィールドの命名時は予約語のlineを避けます。<br><br><ul> <li> <p> <span>[Built-in] (組み込み)</span>: そのコンポーネントに対してのみスキーマを作成し、ローカルに保管します。</p> </li> <li> <p> <span>[Repository] (リポジトリー)</span>: スキーマは作成済みで、リポジトリーに保管されています。さまざまなプロジェクトやジョブデザインで再利用できます。</p> </li> </ul><br><br>スキーマを変更するには[Edit schema] (スキーマを編集)をクリックします。変更を加えると、スキーマは自動的に組み込みになります。<br><br><ul> <li> <p> <span>[View schema] (スキーマを表示)</span>: スキーマのみを表示する場合は、このオプションを選択します。</p> </li> <li> <p> <span>[Change to built-in property] (組み込みのプロパティに変更)</span>: ローカルで変更を行うためにスキーマを<span>組み込み</span>に変更する場合は、このオプションを選択します。</p> </li> <li> <p> <span>[Update repository connection] (リポジトリー接続をアップデート)</span>: リポジトリーに保存されているスキーマに変更を加え、変更後にそのコンテンツをすべてのジョブにプロパゲートするかどうかを決める場合は、このオプションを選択します。</p> <p>変更を現在のジョブにのみ反映する場合は、変更後、<span>[No] (いいえ)</span>を選択し、<span>[Repository Content] (リポジトリーコンテンツ)</span>ウィンドウで再びこのスキーマのメタデータを選択します。</p> </li> </ul> |
| [Specify a data source alias] (データソースエイリアスを指定) | このチェックボックスを選択し、[Data source alias] (データソースエイリアス)フィールドが表示されたら、データソース設定で定義した共有接続プールを使用するために、 Talend Runtime側で作成したデータソースのエイリアスを指定します。このオプションは、 Talend Runtime内にジョブをデプロイして実行する時にのみ機能します。<br><br>このチェックボックスは、[Use an existing Connection] (既存の接続を使用)チェックボックスがオンになっている場合は利用できません。 |
| [Die on error] (エラー発生時に強制終了) | このチェックボックスを選択すると、エラー発生時にジョブの実行が停止されます。<br><br>エラーの発生した行をスキップし、エラーが発生していない行の処理を完了するには、このチェックボックスをオフにします。 |

## 詳細設定

| プロパティ | 説明 |
| --- | --- |
| [Additional JDBC Parameters] (追加のJDBCパラメーター) | 作成するデータベース接続に接続の追加プロパティを指定します。プロパティはセミコロンで区切られ、各プロパティはキー-値ペアです。たとえばAzure SQLデータベース接続の場合は、*encrypt=true;trustServerCertificate=false;* *hostNameInCertificate=\*.database.windows.net;loginTimeout=30;*となります。 |
| [Authenticate using Azure Active Directory] (Azure Active Directoryを使って認証) | このオプションを選択すると、接続を確立する時にAzure Active Directory認証を使用できます。関連情報は、[Azure AD Authentication](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-aad-authentication)をご覧ください。 |
| [Commit every] (コミットする間隔) | ノードのバッチがデータベースにコミットされるまでに完了しているべき行数を入力します。このオプションにより、トランザクションの品質(ロールバックは対象外)が保証され、実行時のパフォーマンスが向上します。 |
| [Additional Columns] (追加のカラム) | このオプションは、データベーステーブルを作成する場合(ドロップありまたはドロップなし)には提供されません。このオプションにより、SQLファンクションを呼び出してカラムにアクションを実行できます。ただし、挿入、アップデート、削除のアクションでないこと、特定の事前処理を必要とするアクションでないことが条件です。<br><br><ul> <li> <p> <span>[Name] (名前)</span>: 変更するか、新しいカラムとして挿入するスキーマカラムの名前を入力します。</p> </li> <li> <p> <span>[SQL expression] (SQL式)</span>: 関連するカラムデータを変更または挿入するために実行するSQLステートメントを入力します。</p> </li> <li> <p> <span>[Position] (位置)</span>: 参照カラムに対して実行されるアクションに従って、<span>[Before] (実行前)</span>、<span>[Replace] (置換)</span>または<span>[After] (実行後)</span>を選択します。</p> </li> <li> <p> <span>[Reference column] (参照カラム)</span>: 新規または変更されたカラムを配置または置換するために使える参照のカラムを入力します。</p> </li> </ul> |
| [Use field options] (フィールドオプションを使用) | 特にデータに二重のアクションがある場合、リクエストをカスタマイズするには、このチェックボックスをオンにします。 |
| [Ignore date out of range] (範囲外の日付を無視) | 日付検証を無視して、DATE、DATETIME、DATETIME2、DATETIMEOFFSETのデータ型に対してデータをデータベースに直接挿入するには、このチェックボックスをオンにします。 |
| [Debug query mode] (デバッグクエリーモード) | このチェックボックスを選択すると、データベースのエントリーの処理中に各ステップが表示されます。 |
| [Support null in "SQL WHERE" statement] ("SQL WHERE"ステートメントでnullをサポート) | データベーステーブルに含まれているNull値を処理する場合は、このチェックボックスをオンにします。<br><br>スキーマ内の対応するカラムで[Nullable] (nullを許可)チェックボックスがオンになっていることをご確認ください。 |
| [Use Batch] (バッチを使用) | このチェックボックスを選択して、データ処理のバッチモードを有効にします。<br><br>このチェックボックスは、[Action on data] (データでのアクション)リストで[Insert] (挿入)、[Update] (アップデート)、[Single Insert Query] (単一挿入クエリー)、または[Delete] (削除)オプションを選択している場合にのみ使えます。<br><br>[Action on data] (データでのアクション)リストで[Single Insert Query] (単一挿入クエリー)オプションを選択する場合は、バッチサイズをカラム数で除した数値がJDBCドライバーによって許可されているパラメーターマーカーの上限(一般に2000)を超えないようにご注意ください。詳細は、下記の[Limitation] (制限事項)に記されている関連する説明をご覧ください。 |
| [Batch Size] (バッチサイズ) | 各バッチで処理するレコードの数を指定します。<br><br>このフィールドは、[Use batch mode] (バッチモードを使用)チェックボックスがオンの時のみ表示されます。 |
| [tStatCatcher Statistics] (tStatCatcher統計) | このチェックボックスを選択すると、ジョブレベルおよび各コンポーネントレベルでジョブ処理メタデータが収集されます。 |
| [Enable parallel execution] (並列実行を有効化) | このチェックボックスを選択すると、複数のデータフローを同時に処理することにより、高速データ処理を実行できます。このフィーチャーは、データベースまたは複数の挿入を並行して処理するアプリケーションの機能と、関係するCPUの数に依存していることにご注意ください。[Number of parallel executions] (並列実行の数)フィールドで次のいずれかの操作を行います。<br><br><ul> <li>実行する並列実行の数を入力します。</li> <li><span>Ctrl + スペース</span>を押し、リストから適切なコンテキスト変数を選択します。コンテキスト変数の詳細は、<a href="https://help.qlik.com/talend/r/ja-JP/8.0/studio-user-guide/contexts-and-variables" target="_blank">コンテキストと変数を使用</a>をご覧ください。 </li> </ul><br><br>並列実行を有効にすると、グローバル変数を使ってサブジョブで戻り値を取得することはできないことにご注意ください。<br><br>情報メモ警告:<br><br><ul><li> <span>[Action on table] (テーブルでのアクション)</span>フィールドは、並列化ファンクションでは利用できません。したがって、テーブルを作成する場合は、<span>tCreateTable</span>のコンポーネントを使用する必要があります。 </li><li> 						            並列実行を有効にすると、グローバル変数を使ってサブジョブで戻り値を取得できません。 </li> </ul> |

## グローバル変数

| 変数 | 説明 |
| --- | --- |
| ERROR\_MESSAGE | エラー発生時にコンポーネントによって生成されるエラーメッセージ。これはAfter変数で、文字列を返します。 |
| NB\_LINE | 処理された行数。これはAfter変数で、整数を返します。 |
| NB\_LINE\_UPDATED | アップデートされた行数。これはAfter変数で、整数を返します。 |
| NB\_LINE\_INSERTED | 挿入された行数。これはAfter変数で、整数を返します。 |
| NB\_LINE\_DELETED | 削除された行の数。これはAfter変数で、整数を返します。 |
| NB\_LINE\_REJECTED | リジェクトされた行数。これはAfter変数で、整数を返します。 |

## 使用方法

| 使用方法のガイダンス | 説明 |
| --- | --- |
| 使用ルール | このコンポーネントは、通常、ジョブまたはサブジョブの終了コンポーネントとして使い、常に入力リンクが必要です。 |
| [Dynamic settings] (ダイナミック設定) | [+]ボタンをクリックしてテーブルに行を追加し、[Code] (コード)フィールドにコンテキスト変数を入力して、ジョブ内で計画した複数の接続からデータベース接続をダイナミックに選択します。この機能は、データストラクチャーが同じでデータベースが異なるデータベーステーブルにアクセスする必要がある場合、特に、Talend Studioを介さずにジョブをデプロイおよび実行する必要がある時など、ジョブの設定を変更できない環境で作業している場合に役立ちます。<br><br>[Dynamic settings] (ダイナミック設定)テーブルは、[Basic settings] (基本設定)ビューで[Use an existing connection] (既存の接続を使用)チェックボックスがオンになっている時のみ利用可能です。ダイナミックパラメーターを定義すると、[Basic settings] (基本設定)ビューの[Component List] (コンポーネントリスト)ボックスは利用できなくなります。<br><br>ダイナミックパラメーターの定義法を示すユースケースについては、[コンテキストベースのダイナミック接続によってデータベースからデータを読み取り](https://help.qlik.com/talend/r/ja-JP/8.0/components/defining-context-groups/reading-data-from-databases-through-context-based-dynamic-connections)と、[ダイナミックにロードされた接続パラメーターを使って異なるMySQLデータベースからデータを読み取り](https://help.qlik.com/talend/r/ja-JP/8.0/components/context/reading-data-from-different-mysql-databases-using-dynamically-loaded-connection-parameters)をご覧ください。ダイナミック設定とコンテキスト変数の詳細は、[ダイナミックスキーマ](https://help.qlik.com/talend/r/ja-JP/8.0/studio-user-guide/dynamic-schema)と[コンテキストグループを作成し、その中でコンテキスト変数を定義](https://help.qlik.com/talend/r/ja-JP/8.0/studio-user-guide/creating-context-group-and-define-context-variables-in-it)をご覧ください。 |
| 制限事項 | [Action on data] (データでのアクション)リストで[Single Insert Query] (単一挿入クエリー)オプションが選択されている場合は、SQLの準備されたステートメントが生成されます。例: INSERT INTO table (col1, col2, col3) VALUES (?,?,?) , (?,?,?) , (?,?,?) ,(?,?,?)。括弧内は数が2000を超えることができないパラメーターのグループです。これは一般に、JBDCドライバーによって左右されます。したがって、バッチサイズはこの制限を守って設定する必要があります。<br><br>他のデータベースでサポートされている機能でも、Azure Synapse Analyticsではサポートされていないものもあります。詳細については、[サポートされていないテーブル機能](https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-tables-overview#unsupported-table-features)をご覧ください。<br><br>また、このコンポーネントでテーブルを作成または削除する時は、tAzureSynapseCommitコンポーネントを使うのでなく、tAzureSynapseConnectionコンポーネントによって作成されたデータベース接続を再利用し、tAzureSynapseConnectionコンポーネントの[Advanced settings] (詳細設定)ビューで[Auto Commit] (自動コミット)チェックボックスをオンにして、自動コミットファンクションを使うことをお勧めします。 |