LIMITファンクションは、指定したLIMITコマンドまたは指定したディメンション・ステータス・スタックの結果として得られたディメンションまたはディメンション・サロゲート値を返すファンクションです。ディメンションとその任意のディメンション・サロゲートは、同じステータスを共有します。LIMITファンクションによって、ディメンションまたは値セットのステータスが変更されることはありません。
戻り値
戻り値は、ファンクションの使用方法とINTEGERキーワードの指定の有無によって異なります。
値セットを必要とするOLAP DML文(ユーザー定義コマンドまたはユーザー定義ファンクションを含む)の引数としてLIMITファンクションを使用すると、値セットが返されます。
空の値セットの場合、LIMITファンクションはその値セットとしてNULLステータスを返します。
それ以外の場合、LIMITファンクションにINTEGERキーワードが指定されているかどうかによって、TEXT値またはINTEGER値が返されます。TEXT値が空のステータスの場合、NA
を返します。
構文
LIMITファンクションの構文は、ディメンションまたはディメンション・サロゲートの値を、指定したLIMITコマンドから取得するか、あるいは指定したディメンション・ステータス・スタックから取得するかによって異なります。
LIMITコマンドから値を取得する場合の構文
LIMIT([INTEGER] {dimension | valueset} [concat-component] limit-type -
[limit-clause] [IFNONE label])
ディメンション・ステータス・スタックから値を取得する場合の構文
LIMIT([INTEGER] dimension STATDEPTH stack-position] [IFNONE label])
引数
INTEGERおよびSTATDEPTHキーワード以外の引数の説明は、LIMITコマンドを参照してください。
これらの引数の詳細は、LIMITコマンドを参照してください。
この引数の詳細は、LIMITコマンドを参照してください。
制限に使用する値を指定します。制限句(limit-clause)には、いくつかの種類があります。値(または値セット)を使用した制限の指定に使用できる制限句や、関連ディメンションを使用した制限の指定に使用できる制限句などです。こうした制限句にはそれぞれ複雑な構文があります。構文が複雑なので、各種の制限句の構文を次の各項で個別に紹介します。
これらの各LIMITコマンドの構文で、limit-type引数の後に続く構文の一部がlimit-clauseです。
INTEGERキーワードを使用すると、デフォルトのディメンション・ステータス内の値は、名前ではなく位置番号で返されます。値セットでINTEGERを使用すると、デフォルトのディメンション・ステータス内の値は、値セットではなく位置番号で返されます。
指定したディメンションのステータス・リスト・スタックのステータス・リスト値を取得するように指定します。
値の取得元のステータス・リスト・スタックの位置を指定するINTEGER値。値を指定する際の注意点は次のとおりです。
0
〜1-STATDEPTH(
dimension
)
の値を指定すると、上(現行ステータス)から下(最も古いステータス)にスタック値が取得されます。
1
〜STATDEPTH(
dimension)
の値を指定すると、スタックの下(最も古いステータス)からスタックの上(現行ステータス)にスタック値が取得されます。
ステータス・リスト・スタックの詳細は、STATDEPTHファンクションを参照してください。
注意
LIMITファンクションのネスト
次の構文を使用してLIMITファンクションをネストすると、同じディメンションに対する複数のLIMITコマンドの結果が返されます。
LIMIT (LIMIT (LIMIT (lim-exp1) lim-exp2) lim-exp3)
このネストされた構造を使用して、一連のLIMITコマンドのステータスが確認できます。たとえば、次のコマンドのステータスを確認するとします。
LIMIT product TO division 'Camping' LIMIT product KEEP - EVERY(sales GT 50000, product) LIMIT product KEEP FIRST 1
次の文を実行します。
REPORT LIMIT(LIMIT(LIMIT(product TO - division 'Camping') KEEP EVERY - (sales GT 50000, product))KEEP FIRST 1)
連結ディメンションのコンポーネントを使用した制限
次の文によって、連結ディメンションを、そのコンポーネントのディメンションに対する現行のステータスの1つに制限できます。
LIMIT(reg.dist.ccdim TO district)
また、次の文によって、連結ディメンションを、そのコンポーネントのディメンションの一連の値に制限できます。
LIMIT(reg.dist.ccdim TO district 'Boston' 'Chicago' 'Seattle')
多次元の結果
LIMITファンクションで多次元の式を評価すると、多次元の結果が返されます。次の例では、sales
変数にproduct
、district
およびmonth
という3つのディメンションがあります。
LIMIT product TO ALL LIMIT district TO 'Boston' LIMIT month TO 'Jan95' 'Feb95' 'Mar95'
REPORT sales
文によって生成される出力は、次のとおりです。
DISTRICT: BOSTON -------------SALES-------------- -------------MONTH-------------- PRODUCT Jan95 Feb95 Mar95 --------- ---------- ---------- ---------- Tents 32,153.52 32,536.30 43,062.75 Canoes 66,013.92 76,083.84 91,748.16 Racquets 52,420.86 56,837.88 58,838.04 Sportswear 53,194.70 58,913.40 62,797.80 Footwear 91,406.82 86,827.32 100,199.46
生成したレポートに示されているステータスで、売上が$90,000を超えている製品のリストを取得するとします。LIMITファンクションを使用して製品売上額を月と地区の各組合せで評価し、ステータスにある月と地区でディメンション化したリストを作成します。
REPORT limit (product TO sales GT 90000)
文によって生成される出力は、次のとおりです。
---LIMIT (PRODUCT TO SALES GT--- -------------90000)------------- -------------MONTH-------------- DISTRICT Jan95 Feb95 Mar95 --------- ---------- ---------- ---------- Boston Footwear NA Canoes Footwear
例
例8-9 多次元の結果を返す場合
この例では、BostonおよびAtlantaにおいて、1995年の最初の2か月間に売上が$50,000を超えた製品のレポートを出力します。LIMITファンクションの結果は、多次元の結果になります。
次の文を実行します。
LIMIT month TO 'Jan95' 'Feb95' LIMIT district TO 'Boston' 'Atlanta' LIMIT product TO ALL REPORT LIMIT (product TO sales GT 50000)
この文によって生成されるレポートは、次のとおりです。
--LIMIT (PRODUCT TO-- ---SALES GT 50000)--- --------MONTH-------- DISTRICT JAn95 Feb95 -------------- ---------- ---------- Boston Canoes Canoes Racquets Racquets Sportswear Sportswear Footwear Footwear Atlanta Racquets Canoes Sportswear Racquets Footwear Sportswear Footwear