株式会社エアー


  • こんにちはゲストさん

株式会社エアーは、Talendの販売・サポート・教育・コンサルティングから開発までをトータルに行える国内唯一のTalendパートナー企業です。弊社ではTalend習得のためのセミナーやトレーニングを実施しています。

FAQ

talend

FAQ

ご使用に関して(応用編)

Q-P01:tFileInputExcelの「ヘッダー」「フッター」「制限」とは何でしょうか。

ヘッダーとは「ファイルの最初にスキップするレコード数」を指定します。 ここで指定された数字分の行数を読み飛ばして、データの取り込みを開始します。

フッターとは「ファイルの最後部でスキップするレコード数」を指定します。 これは、たとえばExcelの表で、下端に合計行がある場合に、その合計行の行数を指定しておくことで、データを上から読んでいったときに、下端の合計行をデータとして取り込まないようにすることができる、というものです。
ただしセルの内容が空でもExcelの書式設定などがされていると、それを有効なセルと判断し、結果、フッターの認識位置が期待と違ってしまう場合があるようで、使用には注意が必要です。

制限とは「処理する最大行数」を指定します。これは上から読んでいったときに、何行まで読み込むか、という制限値になります。

Q-P02:tMapを使用して複数ファイルからの結合を行いたいが、MainをtMapに接続した後にLookupを接続しようとすると進入禁止マークが出て接続できません。
接続できる場合とできない場合があり違いがわかりません。どのような場合にLookupの接続ができなくなるのでしょうか?
またLookupの接続ができるようにする方法があれば教えてください。
Talendの仕様として、一度tMapで分割したデータを一つのサブジョブ内でtMapで再度合体することはできません。
回避策としては、 例えば一度tHashOutputでメモリに出力し、tHashInputでメモリのデータを読み込み、再度tMapでJoinさせる、2つのサブジョブにより構成されるジョブを作成する必要があります。 その際、以下の2点にご注意ください。
データを分割するサブジョブとデータを合体させるサブジョブはトリガの[サブジョブが成功した場合(OnSubjobOk)]で接続します。
対応するtHashOutputとtHashInputのカラムの内容が一致していないとエラーになります
。(tHashOutputのスキーマの編集の画面でスキーマを選択コピーし、 tHashInputのスキーマの編集の画面でスキーマ情報を貼り付ける手順でカラムの内容を簡単に一致させることができます。)
なお、tHashInput/OutputがHide(隠れた)状態になっている場合は、Studio画面のツールバーから[ファイル] > [プロジェクトプロパティの編集]を選択し、 プロジェクトの設定の画面で[デザイナ] > [パレット設定]を開き、 左のHide側に表示されているフォルダ又はコンポーネントを右のShow側に移動させてください。
Q-P03:ファイルデータでレコード件数0件とそれ以外で後続処理を制御するコンポーネントはありますか。
レコード件数の有無によって処理を分けるコンポーネントはないので、ジョブの組み方を工夫します。
例えばファイルからデータを読み込みtHashOutputに格納します。 この際にtJavaをトリガの「サブジョブが成功した場合(OnsubjobOk)」でtHashOutputの後に配置し、GlobalMap.get(“tHashOutput_1_NB_LINE”)を取得して一旦コンテキスト変数に格納しておくと行数のデータを後で参照する際には便利です。
トリガの[IF]で「context.row_count>0」の場合のみtHashiInputからデータを読み込み処理を行う後続のサブジョブを実行するようにすれば、レコード件数が1以上の場合の処理を組むことができます。 また、 「context.row_count=0」という指定をした[IF]を使用することで、レコード件数が0件の場合の処理を組むこともできます。
Q-P04:tWarnコンポーネントを使用し警告処理を実装したのですが、Basic statusには「Ok」が設定されてしまいました。
Basic statusを「Warning」にするにはどのように実装すればよいでしょうか。
tWarnを使用するだけでは、ジョブのステータスはエラーと判断されません。
ジョブを実行した際に問題が発生し完了しないまま異常終了した場合、又はtDieでジョブが強制終了された際に、Basic StatusにはWarning(三角に!マークのアイコン)が表示されます。
tWarnの単体での使用方法としては、Logにメッセージを残すことしか基本的にできません。
ただしtWarnの警告メッセージ、警告コード、優先度(3つともユーザがtWarn使用時に任意に設定可能)が変数として使用できます。従って、tDieや他のコンポーネントを組み合わせる(変数を使用する)ことでより効果を発揮します。
使用方法の一例として、ジョブ実行時のtWarnの警告コードまたは優先度をtJavaで集計し一定以上の場合tDieでジョブを強制終了する事が可能です。
Q-P05:エクスポートしたjarファイルを実行する際に、何らかの引数を渡して挙動を変更させることはできますか。
tFileInputPropertiesとtContextLoadコンポーネントにより可能です。
その他の方法としては、設定ファイルを使用するのではなく、ジョブにContext変数を準備しておき、バッチ実行時に引数で値を渡す方法も考えられます。
Q-P06:DBから異なるDBへ大量のデータをロードする際にOutOfMemoryが発生してINSERTできません。何か方法はありますか。
tMap上のルックアップの処理でOutOfMemoryが発生した場合には、大量のデータを利用する場合には「基本設定」の「一時データをディスクに保存」を選択することで、データが一時的にファイルに書き込むことが可能なので、メモリがパンクするのを防げます。
Q-P07:次のようなトランザクション制御を行いたい時に、tMysqlOutputがコミットしないようにすることは可能でしょうか?
tMysqlOutputがコミットしてしまうため、途中でエラーが発生してしまった場合にRollBackができません。
[tMysqlOutput]の設定項目には「既存の接続を使用」という項目があり、それを選択することで[tMysqlConnection]でコネクションを張った接続を使用することができます。その上でトリガでtMysqlRollBackコンポーネントとエラートリガで接続して制御します。
これを選択しない場合は、[tMysqlOutput]自体でコネクションを新規に張りますので、[tMysqlOutput]のコンポーネントを実行したタイミングでコミットが発生します。
Q-P08:tMapでフルアウタージョインの設定が可能ですか?
フルアウタージョインの設定は、製品の標準機能としては提供しておりません。 その他の方法としては、フルアウターの実装方式は、ソース・ターゲット、データ量等を加味して、様々な実装方式が考えられます。
性能や稼働環境の資源面で、一様な方式に実装を束縛することが得策ではないため、製品機能としては提供しておりません。
Talendでの対応としては、フルアウタージョインの結果を出力するジョブを作成する必要があります。
例えばIDをメモリ中のハッシュに保持し次にルックアップで不要なデータを読み飛ばし、最後に直列結合する方法が考えられます。
Q-P09:<DB>Outputで、一意制約エラー等が発生しても処理を継続し、エラーデータを特定できますか?
可能です。
t<DB>Outputコンポーネントから「row-reject」接続により、エラー発生時にエラーデータを出力することが可能です。
ただし「row-reject」接続は、下記の設定をすることで利用可能になります。
(1) t<DB>Outputの基本設定で「エラーで停止」をOFFにする。
(2) Advanced Settingsで、MySQLの場合は「挿入の拡張」をOracleやPostgreSQLでは「バッチサイズの使用」をOFFにする。
※バッチジョブとして実行できなくなるため、パフォーマンスに影響があります。
Q-P10:リスト形式のプロパティでパラメタ指定は可能でしょうか?
リスト形式は固定値になってしまうため、JOB実行時毎にコンパイルする必要があるように見えます。
しかし、リスト形式で選択するプロパティは一番上の空白を選ぶと手入力できるので、そこに context.xxx のような形でコンテキストを指定できます。
Q-P11:ジョブが出力するログについてローテーションの仕組みはありますか?
ジョブ側では実行毎に決められたログに追記するのみで、ローテーションの機能はありません。
そこで、例えばログの出力ファイル名の設定にGlobalMapを使用して「プロジェクト名」「ジョブ名」「GetCurrentDate」を付加しておいて、ログを分けるようにします。
別にログファイル削除用の仕組みをShellや、必要な場合Talendのファイル操作ジョブにて用意し、定期的に実行すると言った方法が考えられます。
Q-P12:いくつかのジョブを実行すると、log4jの警告メッセージが標準出力されます。

「log4j:WARN No appenders could be found for logger (com.amazonaws.internal.config.InternalConfig). log4j:WARN Please initialize the log4j system properly.」

コンポーネントの中にlog4jを使用するものと使用しないものがあります。
使用するものについては、Talend Studioのプロジェクト設定で、log4jの出力を有効に(log4jコンポーネントをアクティベーションにチェック)することで、log4jの設定ファイルが含まれたバッチがエクスポートされるようになり、ジョブの実行時の警告もでなくなります。
デフォルトでは上記の設定がオフになっているため、警告が出力されます。
Q-P13:画面に表示されているタブを消してしまい、再起動しても表示されません。
[ウインドウ]->[ビューの表示]で「Show View」ウインドウを表示し、[Talend]のフォルダの中から表示させたいタブを選択してOKを押下するとタブが再度表示できます。
または、右上パースペクティブ選択ボタンの「Integration」上で右クリックし「リセット」を実行することで初期状態に戻すことも可能です。
Q-P14:MetaServletの機能を網羅したマニュアルはありませんか?(製品版)

MetaServletについてはマニュアルには、可能な機能やパラメタについての詳細な記載がなく、ヘルプをご参照頂く形になります。

MetaServletCaller.bat–tac-url=http://localhost:8080/org.talend.administrator/ –help all(/Task名)

例えばジョブを即時実行する場合には、下記のようなコマンドを実行します

\Talend\5.6.2\tac\apache-tomcat\webapps\org.talend.administrator\WEB-INF \clases >MetaServletCaller -url=http://localhost:8080/org.talend.administrator/ -json -params {“actionName”:”runTask”,”taskId”:1,”mode”:”synchronous”,”authPass”:” admin”,”authUser”:”admin@company.com”}

Q-P15:WSDLを取得してSOAPリクエストのWebServiceデータを取得するジョブを開発することはできますか?
例えば、TOSに標準で搭載されている tWebServiceInput コンポーネントで可能です。
詳しくはコンポーネントガイドのtWebServiceInputのページをご参照ください。
Q-P16:TOSをインストールし、起動した時にサードパーティライブラリダウンロードがエラーになりました。対処方法を教えて下さい。
Talend Studioが利用するJDBCドライバ等のモジュールを、サードパーティのサイトよりダウンロードする機能となります。
エラーになった場合の対応方法としては、サードパーティ側のサイトの状態等により、一時的にダウンロードできない可能性がありますので、まずは時間を変えて再実行してみます。
それでもエラーとなる場合は、既にインストールできている他の環境より
 /Configuration/lib/java/ (バージョン5)または
 /configuration/.m2/repository/org/talend/libraries(バージョン6)
配下のファイルをコピーするか、直接サードパーティのサイトよりエラーとなっているファイルを取得し、Studioのウィンドウ→Modulesビューより追加します。
Q-P17:tFileOutputDelimiterdで作成したUTF-8エンコードのCSVを開くと文字化けします。
tFileOutputDelimiterdで作成したUTF-8エンコードのCSVファイルを、MS Excelで開くと文字化けして見えます。原因は、UTF-8形式のCSVをExcelで開けないという、Excel側の制限事項となります。
https://support.microsoft.com/ja-jp/kb/821863

CSVファイルはExcelで利用することを目的としたフォーマットではないので、テキストエディタで開くか、Excelで表示・編集する場合はSJISエンコーディングにするか、tFileOutputExcelによりExcelファイルとして出力して下さい。
Q-P18:Studioからジョブを実行するとコンソールに開始時刻と終了時刻が出力されます。分までの表示ですが、秒まで表示する方法はありますか。
Studioからジョブを実行すると、下記の通り、分までの表示です。

例:
ジョブ get_response_body を 14:35 01/01/2016 に開始しました。
[statistics] connecting to socket on port 4028
[statistics] connected
XXXX
XXXX
[statistics] disconnected
ジョブ get_response_body が 14:35 01/01/2016 に終了しました。 [終 了コード=0]

秒単位で開始終了時刻を確認するには、開始時刻及び終了時刻の内容はStatsログとしてCatch可能です。
その場合、tStatCatcher コンポーネントでキャッチした上で tLogRow コンポーネントでコンソール上に出力するか、ジョブのログ設定で標準出力に出すように設定する必要があります。
詳細については下記のオンラインマニュアルもご参照下さい。

→ オンラインマニュアル
NEWQ-P19:tFileOutputDelimitedコンポーネントでCSVファイルを出力する際にデータ行項目だけでなくヘッダー行項目も引用符(””)で囲む設定方法はありますでしょうか。
基本機能ではヘッダに書式は設定できないため、ジョブで工夫が必要になります。
たとえば、tJavaRowを利用した作りこみでも実現可能ですが、コンポーネントを組み合わせた方法としては、例えば以下のようなものが考えられます。

1. データをヘッダー行としてCSVファイルへ書き出す。
tFileOutputDelimitedで1行の実データをヘッダとしてCSVファイルへ書き出す。この場合は、引用符で囲むことができます。

2.対象の実データをヘッダ抜きで同じCSVファイルへ追加で書き込む。
tFileOutputDelimitedで対象のデータをヘッダ抜きで「(1)で作成されたヘッダー行を既に持つファイル」へ追加で書き込みます。(「基本設定」の「追加」をONとします)
NEWQ-P20:AmazonのS3サービスへファイル転送するため tS3Put コンポーネントを利用していますが、大きなサイズのファイルの場合にAWSの5GB制限のため転送エラーになります。対応策はありますでしょうか。
現在のバージョンではMultiPartUploadに対応していないため、ご質問の状況となります。
今後の対応については、機能追加のリクエストは複数挙がっており、将来のTalend 6.3.1よりMultiPartUploadに対応する予定となっております。
https://jira.talendforge.org/browse/TDI-35666
※ 5「テラ」バイトまで対応する旨のコメントが記載されています。

現状の回避策としては、可能であれば送信前にファイルを分割して転送していただくことが考えられます。
 
  • 活用シーン
  • 管理シーン
  • コンセプト
  • 導入事例
  • 製品情報キャビネット
  • ご相談・ご質問・お問い合せ
  • お電話でのお問い合せ受付時間9:00〜17:30(土日祝を除く)03-3587-9221