コンポーネントマトリクスプロパティにアクセスするためのコード - Cloud - 8.0

Talend Studioユーザーガイド

Version
Cloud
8.0
Language
日本語
Product
Talend Big Data
Talend Big Data Platform
Talend Cloud
Talend Data Fabric
Talend Data Integration
Talend Data Management Platform
Talend Data Services Platform
Talend ESB
Talend MDM Platform
Talend Real-Time Big Data Platform
Module
Talend Studio
Content
ジョブデザインと開発
Last publication date
2024-04-09

コンポーネントマトリクスプロパティは、さまざまなデータ変換目的に応じて、ユーザーによって作成および変更されます。これらのプロパティは、たとえば、ユーザーがtSQLTemplateAggregateコンポーネントを介して定義できるoperationパラメーターやgroupbyパラメーターなどのテーブルパラメーターによって定義されます。

本来柔軟性が高く複雑なこれらのテーブルパラメーターにアクセスするために、2通りのアプローチを使用できます。

  • </.../>アプローチ:

</.../>は、SQLテンプレートによって使用される構文の1つです。このアプローチでは、通常、抽出するパラメーターごとにハードコーディングする必要があります。

たとえば、ユーザーによって新しいパラメーターが作成され、NEW_PROPERTYという名前が付けられます。</NEW_PROPERTY/>を使用してアクセスするには、以下のコードが必要です。

else if (paramName.equals("NEW_PROPERTY")) {
 List<Map<String, String>> newPropertyTableValue = (List<Map<String, String>>)
  ElementParameterParser.getObjectValue(node, "__NEW_PROPERTY__");
 for (int ii = 0; ii <newPropertyTableValue.size(); ii++) {  
   Map<String, String> newPropertyMap =newPropertyTableValue.get(ii);
   realValue += ...;//append generated codes
 ......
  }
}
  • EXTRACT(__GROUPBY__);アプローチ:

次のコードは、テーブルパラメーター(GROUPBY)にアクセスするための2番目の方法を示しています。

<%
 String query = "insert into " + __TABLE_NAME__ + "(id, name, date_birth) select sum(id), name, date_birth from cust_teradata group by";
  EXTRACT(__GROUPBY__);
  for (int i=0; i < __GROUPBY_LENGTH__ ; i++) {
 query += (__GROUPBY_INPUT_COLUMN__[i] + " ");
 }
 %>
<%=query %>;

ステートメントをコーディングする際には、次のルールに準拠します。

  • 抽出ステートメントはEXTRACT(__GROUPBY__);を使用する必要があります。大文字を使用する必要があり、スペース文字は使用できません。このステートメントは、<% and %>

  • __GROUPBY_LENGTH__を使用して、パラメータ名の後に_LENGTHが続き、[Component] (コンポーネント)ビューの[Groupby]エリアで定義するGROUPBYテーブルパラメーターの行番号を取得します。<%%>または<%=%>の間で使用できます。

  • __GROUPBY_INPUT_COLUMN__[i] tのようなコードを使用して、パラメーター値を抽出します。これは<%%>の間、または<%=%>の間で使用できます。

  • パラメーターに正しくアクセスするために、複数のパラメーターで同じ名前のプレフィックスを使用しないでください。たとえばコンポーネントでは、名前の同じプレフィックスが誤ったコード生成を引き起こすため、PARAMETER_NAMEPARAMETER_NAME_2の名前を持つ 2 つのパラメーターを定義することは避けてください。