注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
カスタム関数には、カスタム式とカスタム変換の両方が含まれます。どちらの機能も、ロジックを1か所で管理しながら、パイプライン全体で繰り返し使用するのに役立ちます。Pipeline Builder のインターフェースでは、変数・関数ドロップダウンのカスタム式とカスタム変換パスからそれぞれアクセスできます。
カスタム変換では、一連のデータ加工ボードを1個のデータ加工として保存し、パイプライン全体で再利用できます。
カスタム式では、任意のパラメーターを持つ1個の式を保存し、パイプライン全体で再利用できます。カスタム式は、フィルターや case 文など、ほかのデータ加工内で使用できます。
カスタム関数は通常、名前(必須)、説明(任意)、関数の引数(任意)、および関数の定義(必須)で構成されます。
カスタム式を作成するには、グラフの上部にある変数・関数ドロップダウンを選択し、次にカスタム式を選択します。

カスタム式を追加を選択します。

新しいウィンドウで、カスタム式を設定します。左上に名前を入力し、変数ウィンドウで引数を追加を使って必要な引数を追加し、式を定義します。完了したら、適用を選択します。

カスタム式を作成すると、ほかの式と同じように、データ加工ノード内やデータ加工内で検索できます。
カスタムデータ加工を作成するには、次の2つのステップが必要です。
以下では、各ステップの例を確認します。
users のテーブルがあり、各ユーザーを一意に識別する主キーを作成するとします。各ユーザーの first_name、last_name、first_login_date の組み合わせが一意であることがわかっています。この3列のハッシュを格納する String 型の列 primary_key をデータセットに追加し、その後、first_name、last_name、first_login_date を削除します。最後に、重複がある場合は、age の値が最も小さい行を保持し、ユーザーごとに1行だけを保持します。

まず、first_name、last_name、first_login_date を1つの列に結合します。文字列を連結データ加工を使用して、この3列を連結できます。

区切り文字の項目に - を入力します。次に、式ドロップダウンで各列を選択します。最初の2列には first_name と last_name を選択します。ただし、3つ目の項目では、first_login_date 列が選択肢にありません。これは、この列が Date 型であり、文字列を連結関数が String 型のみを受け付けるためです。

これを解決するには、式タブからキャスト式を挿入します。パラメーターは、式に first_login_date、キャスト先のデータ型に String を指定します。これにより、下流のすべてのデータ加工ボードに影響する、first_login_date の全体的な変更が不要になります。

適用を選択すると、出力テーブルは次のようになるはずです。

次に、primary_key 内のデータを非識別化する必要があります。その方法の1つは、SHA256 ハッシュデータ加工を適用して、primary_key の各値のハッシュを作成することです。同じボードで値を再利用オプションを選択し、文字列を連結を SHA256 ハッシュに置き換えることで実行できます。

このオプションは既存の値を保持し、新しいデータ加工の最初の入力にします。

適用を選択した後、出力が想定どおりであることを検証します。各行について一意のデータを含む primary_key: String 列があるはずです。

ここで、primary_key の最初の行と最後の行が同じであることに気づきます。age が小さい値の25である行を保持し、first_name、last_name、first_login_date を削除します。そのためには、集計データ加工を追加します。最初の項目であるグループ化する列に primary_key を入力し、2つ目の項目である集計に age を入力して、最小値式を使用します。

最終的に、出力テーブルは以下の画像のようになるはずです。primary_key = b3c01... の行が1行だけあり、age が25であることを確認できます。

次に、このロジックをパイプライン内の3か所で再利用するとします。Shift + Down Arrow で両方のボードを選択し、上部バーの + ボタンを選択することで、ロジックをカスタム関数に変換できます。

これにより、カスタム関数の作成ページに移動します。列入力の first_name、last_name、first_login_date、age に取り消し線が付いていることに気づきます。これは、作成する関数が、列名に関係なく、パイプライン内の正しいデータ型を持つ任意の4個の入力に使用できる汎用的な関数になるためです。

これらの入力を定義するには、引数を追加を4回選択します。黄色のボックスをクリックして、引数名を設定します。

次に、各引数の右側にある歯車アイコンをクリックして、引数のデータ型を設定します。ここでは、最初の2個の引数を String 型の列を表す Expression<String> 型に、3個目の引数を Expression<Date> 型に、最後の列を Expression<Integer> 型にします。

これで、先ほどと同様に、新しい引数を2つのボードに追加できます。ただし、今回は列セクションではなく、パラメーターセクションで利用可能になります。

設定が完了したら、関数に Primary key generator という名前を付け、任意で説明を入力し、すべての変更を適用を選択します。

これで、新しい関数を任意のデータ加工パスで使用できるようになります。次にこのパターンで主キーを作成する必要があるときは、データ加工ドロップダウンで Primary key generator を検索できます。

カスタム関数に元の列である first_name、last_name、first_login_date、age を指定できます。

カスタム関数に該当する列名を指定すると、パス内で同じデータ加工を使用して関数を作成した場合と同じ結果になります。ただし、カスタム関数を作成すれば、個別のデータ加工ボードでロジックを作り直すのではなく、関数のロジックを保存してパイプライン全体で再利用できます。
