For AI agents: the complete documentation index is available at https://docs.dataplatform.ovh.net/ja/llms.txt, the full documentation bundle is available at https://docs.dataplatform.ovh.net/ja/llms-full.txt, and this page is available as Markdown at https://docs.dataplatform.ovh.net/ja/sdk/api-qb-endpoint.md.
  • 🇯🇵 日本語
  • Analytics Manager クエリ用のカスタムエンドポイントを作成する

    Warning

    再作業予定、納期未定。 Front App SDK (ReactJS) と Front API SDK (NodeJS) の両方が置き換えられます。このページは現在のリリースを文書化し、置き換えが出荷されるまで正確で維持されます。これに対して書かれたコードは引き続き動作します。

    Analytics Manager クエリフローを拡張するには、新しいendpointsを追加するだけです。 その後、これらのエンドポイントは、Front App内の任意のchartから呼び出して表示できます。

    以下に使用例を示します:

    新しいエンドポイントを作成する

    ./src/qb/endpoints/にファイルを追加するだけです。 このフォルダはデフォルトでは存在しません。Front APIのルートから作成する必要があります。

    例えば、次のファイルを追加すると、qb/hello_worldへのGETリクエストに対して応答が得られます: ./src/qb/endpoints/hello_world.js

    module.exports = {
      method: "GET",
      request: function(req, res, next) {
        res.send('hello')
      }
    }

    2つのクエリをマージする

    この例では、Data Platformと他の4社の売上高を含むデータセットを考慮してください。目的は以下を比較することです:

    • Data Platformの売上高の推移
    • 全売上高(Data Platform + 4社)の合計の推移。

    Analytics Manager クエリ形式には2つの異なるクエリが必要です:

    // Data Platform Turnover
    {
      "data":{
        "fields":{
          "turnover":["sum"]
        }
      },
      "scale":{
        "fields":["date"]
      },
      "filter":{
        "company": ["Data Platform"]
      }
    }
    // Global Turnover
    {
      "data":{
        "fields":{
          "turnover": ["sum"]
        }
      },
      "scale":{
        "fields":["date"]
      }
    }

    Front Appで2つの曲線を持つチャートを構築するには、カスタムエンドポイントは適切な結果セットを返す必要があります。

    const QueryBuilder = require('../../../forepaas/qb/services/QueryBuilder')
    const Merge        = require('../../../forepaas/qb/services/Merge')
    const Formatter    = require('../../../forepaas/qb/services/Formatter')
    
    module.exports = {
      method: 'GET',
      request: (req, res, next) => {
        // define 2 queries
        let queries = {
          // query 1 : forepaas turnover
          forepaas: {
            data: {
              fields: {
                turnover: ["sum"]
              }
            },
            scale: {
              fields: ["date"]
            },
            filter: {
              company: ["Data Platform"]
            }
          },
          // query 2: global turnover
          global:{
            data: {
              fields: {
                turnover: ["sum"]
              }
            },
            scale: {
              fields: ["date"]
            }
          }
        };
    
        // execute queries and merge results
        QueryBuilder.queries(req, queries).then(responses => {
          let response = new Merge(responses, { renameWithId:true }).request();
          return Formatter(res, 'json', response);
        }).catch(next)
      }
    }

    この例では:

    1. 両方のクエリはQueryBuilder.queries()ヘルパー関数を通じて実行されます。
    2. 応答は2つの異なる結果から成ります:Front Appはそのままで処理しません。
    3. モジュールMergeはクエリを蓄積するための基本的なマージ関数を提供します。 renameWithIdオプションは、forepaas:turnoverglobal:turnoverの2つのフィールドを返します。
    Info

    注意 キャッシュと認証の有効化は自動的に行われます。


    動的に改善する

    ほとんどの場合、カスタムエンドポイントは常に同じリクエストを計算する単純なGETリクエストではありません。 通常、Analytics Managerに送信されるリクエスト(複数)は、リクエストのボディを使用して動的に生成されます。 そのためには、リクエストのメソッドをPOSTに変更し、クエリを変数として渡す必要があります。

    これらの変更により、次のコードが得られます:

    const QueryBuilder = require('../../../forepaas/qb/services/QueryBuilder')
    const Merge        = require('../../../forepaas/qb/services/Merge')
    const Formatter    = require('../../../forepaas/qb/services/Formatter')
    
    module.exports = {
      method: 'POST',
      request: (req, res, next) => {
        // define 2 queries from req.body
        let queries = {
          forepaas:{
            ...req.body,
            filter: {
              company: ["Data Platform"]
            }
          },
          global: req.body
        };
    
        // execute queries and merge results
        QueryBuilder.queries(req,queries).then(responses=>{
          let response = new Merge(responses, { renameWithId:true }).request()
          return Formatter(res, 'json', response)
        }).catch(next)
      }
    }

    Front Appから呼び出す

    ChartのJSONで、requestパラメータを使用する代わりに、endpointパラメータを使用するだけです。次の例のように:

    {
      "component": "echarts",
      "endpoint": {
        "method": "GET",
        "query": "qb/hello_world",
        "params": {
          "data":{
            "fields":{
              "turnover": ["sum"]
            }
          },
          "scale":{
            "fields":["date"]
          }
        }
      }
    }
    Warning

    POSTのエンドポイントの場合、動的なパラメータ値はreq.bodyに渡されます。

    さらに深く掘り下げる

    当社のソリューションを実装するためのトレーニングや技術サポートが必要な場合は、営業担当者にお問い合わせください、またはこのリンクをクリックして、当社のプロフェッショナルサービスの専門家にプロジェクトのカスタム分析を依頼する見積もりを取得してください。

    Data Platformを構築するチームと直接質問し、フィードバックを共有し、相互作用するには、専用のDiscordチャネルにアクセスしてください。

    OVHcloudサービスについてサポートが必要な場合は、ヘルプセンターでリクエストを作成してください。

    ユーザーコミュニティに参加してください。