8. Introduction to Functions7 - カスタム集計関数の作成
Warning

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

7 - カスタム集約関数の作成

learn.palantir.com ↗でも以下の内容をご覧いただけますが、アクセシビリティの観点から、ここに掲載しています。

📖 タスクの概要

ユーザーがWorkshopモジュールで未解決のアラートの割合をハイライトするメトリックカードを利用できるようにしたいと思います。Workshopは数値の集約を自動的に計算し表示することができますが、場合によっては、Workshopのフロントエンドでは利用できないビジネスロジックを使ってメトリックを計算する必要があるかもしれません。

このような場合、必要な数値を供給するFunctionを使ってWorkshopの機能を拡張することができます。このタスクでは、MyFunctionsクラスのメソッドとしてカスタムFunctionを追加します。

🔨 タスクの説明

  1. リポジトリ内の../src/index.tsファイルを開きます。

  2. MyFunctionsクラス内に新しい関数を作るためのスペースを作る必要があります。8行目の閉じ括弧の後にカーソルを置き、エンターキーを2回押します。

  3. 次のコードブロックを挿入しますが、@Function()デコレータとpublic...行が上の関数と揃うように注意してください。

    • また、jmeierPercentUnresolvedをご自身が認識できる専用の名前(例えば、jmeierをご自身の名前に置き換える)に置き換え、JmeierFlightAlertユーザーのAPI名に置き換えてください。
    • コード内のコメントは、行われている操作を説明しています。
    @Function()
        // "alerts"というエイリアスでフライトアラートオブジェクトの配列を取り込み、
        // Doubleを返す
        public jmeierPercentUnresolved(alerts: JmeierFlightAlert[]): Double {
        
        // 配列に実際にオブジェクトがあることを確認し、
        // そうでなければ"0"を返します
            if (alerts.length === 0) {
                return 0;
            }
        
        // 配列を通じて変数("numberUnresolved")を増加させ、
        // 解決されたステータスがないアラートを見つけるたびに1を増やします
            let numberUnresolved = 0;
            for (const alert of alerts) {
                if (alert.status != "Resolved") {
                    numberUnresolved++;
                }
            }
        
        // オリジナルの配列の長さで割った未解決のアラートの数を返します
            return numberUnresolved/alerts.length;
        }
    
  4. お使いのCode Assistが動作している場合、Doubleの出力タイプが赤で下線が引かれていることがわかります。これはコードに問題があることを示しています。簡単に言うと、リポジトリがインポートされていないタイプを発見しました。

    • Functions APIのインポートステートメントにDoubleを追加します:import { Function, Integer, Double } from "@foundry/functions-api";