最上位の開始タグは <derive> です。次の 3 つの属性を使用して指定します。
object — ホスト、キュー、ユーザー、グループ、部署、またはプロジェクトを指定します。この属性に基づいて、派生値は最終的に次のいずれかに格納されます。sge_host_values、sge_queue_values、 sge_user_values、 sge_group_values、sge_department_values、sge_project_values。
interval — 時間、日、月、または年のいずれかです。
variable — 新しい派生値の名前です。
第 2 レベルの開始タグは <sql> または <auto> のいずれかで、値の派生方法を記述します。これらのタグの詳細を次に示します。
<sql> – このタグには、派生値の計算に使用される SQL 文を指定します。エントリの正確な構文は、使用するデータベースの種類によって異なります。
<auto> - 特定の単純な派生値については、完全な SQL クエリーの代わりにこのタグを使用できます。このタグには 2 つの属性があります。
function — 変数に適用する集約関数を指定します。ここでは、使用する種類のデータベースに有効な任意の関数を指定できます。代表的な関数としては、AVG 、SUM、VALUE 、COUNT、MIN、または MAX があります。
variable — 次のテーブルに記録される任意の変数を指定できます。sge_host_values、sge_queue_values、sge_user_values、sge_group_values、 sge_department_values、sge_project_values。指定する変数は、<derive> タグで囲まれたオブジェクト属性によって示されるテーブルに存在する必要があります。たとえば、オブジェクトがホスト の場合、変数は sge_host_values に存在する必要があります。
2 つの開始タグに対応する 2 つの終了タグを指定します。
<sql> タグを使用した派生規則の例を示します。sge_queue テーブルには、 q_qname と q_hostname からなる複合的な主キーがあります。キュー object_type に指定された規則の場合、sge_queue テーブルのエントリごとに 1 つのクエリーが作成されます。プレースホルダ__key_0__ は、キューの名前で置き換えられ、__key_1__ はホスト名で置き換えられます。
<!-- average queue utilization per hour --> <derive object="queue" interval="hour" variable="h_utilized"> <sql> SELECT DATE_TRUNC( 'hour', qv_time_start) AS time_start, DATE_TRUNC( 'hour', qv_time_start) + INTERVAL '1 hour' AS time_end, AVG(qv_dvalue * 100 / qv_dconfig) AS value FROM sge_queue_values WHERE qv_variable = 'slots' AND qv_parent = (SELECT q_id FROM sge_queue WHERE q_qname = __key_0__ AND q_hostname = __key_1__) AND qv_time_start <= '__time_end__' AND qv_time_end > '__time_start__' GROUP BY time_start </sql> </derive>
<auto> タグを使用した派生規則の例を示します。
<!-- average load per hour --> <derive object="host" interval="hour" variable="h_load"> <auto function="AVG" variable="np_load_avg" /> </derive>