30日間の無料評価版をお試しいただけます。

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

Anchor
top
top

Table of Contents
classcontents

概要

Styleclass
ClasstopLink

ページトップ

カスタム関数は、XMLで書かれYellowfinサーバーに保持されている関数です。これらは、式ビルダーでは簡単に作成できない高度なSQL関数から構成されており、システム管理者によって設定されます。

XMLスキーマを使用すると、カスタム定義のSQL関数でパラメーターを埋め込むことができるため、カラム(列)をレポートに挿入するときに数値やカラム(列)値を割り当てることができます。

新しいカスタム関数の追加

Yellowfinに新規XML関数を追加するには:

  1. 作成したXMLを次の場所にあるcustom-functions.xmlファイル内にコピーします:Yellowfin/appserver/webapps/ROOT/WEB-INF/
  2. これらをディレクトリに追加したら、Yellowfinを再起動して、使用可能にします。

Yellowfinでカスタム関数を使用する詳細については、 式テンプレート(カスタム関数) を参照してください。

スキーマ

Styleclass
ClasstopLink

ページトップ

親オブジェクト

オブジェクト

説明

 

<custom-function>

階層で最上位のオブジェクトであり、ドキュメント全体をカプセル化します。子タイプは<function>の1つのみです。

<custom-function>

<function>

独自の関数を定義し、その関数の定義に必要なデータフィールドをカプセル化します。子オブジェクトは<name>、<argument>、<sql>、<return>、および<aggregate>です。

<function>

<name>

nameは、アプリケーション内でのカスタム関数の表示名を定義します。各カスタム関数のプライマリ識別子なので、それぞれにユニークな名前を付ける必要があります。各関数には名前を1つのみ設定できます。

<function>

<argument>

argumentは、レポートの設計時にカスタムSQLに挿入できる引数(またはパラメーター)を定義します。引数は3つの属性<index>、<name>、および<datatype>で定義されます。

<argument>

<index>

argumentのindexパラメーターは、関数のコンテキストでその引数をユニークに特定します。正の整数にする必要があります。indexは、引数をカスタムSQL文内の定義された場所に挿入するために使用されます。indexが「1」の場合、SQL文では「$1」の出現箇所すべてが引数に置換されます。

<argument>

<name>

argumentのnameパラメーターは、アプリケーションにおける引数の表示名です。

<argument>

<datatype>

argumentのdatatypeパラメーターは、引数のデータ型を定義します。このパラメーターを指定すると、この引数には互換性のあるカラムと値しか入力できません。データ型は、「numeric」、「text」、「datatime」のいずれか1つです。

<function>

<sql>

sqlでは、このカスタム関数で作成される実際のデータベースSQL文を定義します。このフィールドのSQLは、単一カラムとして親SQL文に挿入されるので、完全なSELECT FROM WHEREは不要です。したがって、SQLは単一カラム構文との互換性が必要です。下に単一カラムのカスタム関数として単純なCASE WHEN ELSE ENDの例を示します。引数を挿入する必要がある場合は、このSQLに変数を含めることもできます。「$1」は、indexが1の引数に割り当てられたカラム(列)またはデータの値に置換されます。

<function>

<aggregate>

aggregateパラメーターは、カスタム関数内で集計されるカラム(列)を定義します。アプリケーションに対して、レポートSQLの生成時にこれらのカラムをGROUP BY節に置かないように指示します。aggregateパラメーターの値も引数変数になります。たとえばindexが1の引数の場合は「$1」です。

<function>

<groupby>

groupbyパラメーターは、アプリケーションがレポートSQLを生成するときにGROUP BY節に挿入されるカラム(列)を定義します。groupbyパラメーターの値も引数変数になります。たとえばindexが1の引数の場合は「$1」です。

<function>

<database>

この関数が使用可能なデータベースを指定します。何も指定されていない場合は、すべてのデータベースで表示されます。データベースごとに1つのオブジェクトがあるようにしてください。たとえばSQLServer、PostgreSQL、OpenEdge、Progress、Oracle、DB2、Access、Notes、ODBC、HSQL、またはMySQLです。

<function>

<return>

return関数は、カスタム関数全体で返す情報のデータ型を定義します。「numeric」、「text」、「datatime」のいずれか1つです。

Case文の例

Code Block
languagehtml/xml
titlecustom-functions.xml
linenumberstrue
<?xml version="1.0" encoding="ISO-8859-1"?>
<custom-functions>

<!-- functions are stored by name, so names must be unique, even across different databases -->

  <!-- ratio function -->
  <function>
    <name>Ratio</name>
    <argument>
      <index>1</index>
      <name>Numerator</name>
      <datatype>numeric</datatype> <!-- numeric, text, datetime -->
    </argument>
    <argument>
      <index>2</index>
      <name>Denominator</name>
      <datatype>numeric</datatype> <!-- numeric, text, datetime -->
    </argument>
    <sql>
      <![CDATA[
        CASE
          WHEN SUM($2) != 0 THEN SUM($1) / SUM($2)
          ELSE NULL
          END
      ]]>
    </sql>
    <aggregate>$1</aggregate>
    <aggregate>$2</aggregate>
    <database>SQLServer</database> <!-- Available for what DBs? SQLServer, PostgreSQL, OpenEdge, Progress, Oracle, DB2, Access, Notes, ODBC, HSQL, MySQL -->
    <database>HSQL</database>
    <return>numeric</return> <!-- numeric, text, datetime -->
  </function>

</custom-functions>



horizontalrule
Styleclass
ClasstopLink

ページトップ