ヘッダーをスキップ
Oracle® OLAP DMLリファレンス
11gリリース2 (11.2)
B61346-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

SORTコマンド

SORTコマンドは、ディメンションまたはディメンション・サロゲートの現行のステータス・リストの値、あるいは値セットの値の順序を並べ替えるコマンドです。

構文

SORT dimension [byhierarchy] [bycriterion...]

ここで、

  • byhierarchyはオプションの句で、階層内のファミリ・リレーションに基づき、親リレーションを使用して、階層ディメンションまたはそのディメンション・サロゲートの現行のステータス・リストの値の順序を並べ替えたり、値セットに値を代入します。SORT文に指定できるbyhierarchy句は1つのみです。この句は、SORT文の最初の句である必要があります。

    HIERARCHY parent-relation [INVERT] [DEPTH n] [SORTORPHANS]

  • bycriterionは、明示的に指定された基準を使用して、ディメンションまたはそのディメンション・サロゲートの現行のステータス・リストの値の順序を並べ替えたり、値セットに値を代入したりします。SORT文に指定できるbycriterion句の数に制限はありません。

    {A|D} [NAFIRST] criterion

パラメータ

dimension

値がディメンション、ディメンション・サロゲートまたは値セットの名前であるテキスト式。

HIERARCHY

parent-relationでの値位置に基づいてdimensionの値をソートするように指定します。

parent-relation

dimensionの親子セルフ・リレーションの名前を指定します。このリレーションは、各ディメンション値に対して、その親ディメンション値(特定の階層におけるすぐ上位の値)である、ディメンション内の別の値を保持します。この親リレーションは、複数のディメンションを持つことが可能です。


ヒント:

単一値の指定には、parent-relationのQDRを使用できます。

INVERT

Oracle OLAPが階層内の子を親の前に配置するように指定します。(デフォルトでは、子は親の後に配置されます。)

DEPTH n

ステータスに配置される世代の数(結果に含まれる値の数)を、階層の最上位からの数で指定します。nのデフォルト値は99です。結果に値を含めない場合(つまり、NULLのステータスが必要な場合)は、n-1を指定します。階層の最上位のみがステータスに必要な場合(つまり、親を持たないディメンション値のみが必要な場合)は、0(ゼロ)を指定します。

SORTORPHANS

ステータスに親が存在しない最初の従兄弟をすべてまとめてソートするように指定します。デフォルトでは、子をソートする際、その親がステータスに存在しない場合でも、階層構造は維持されます。

A
D

値をソートする順序。Aは昇順(ソート基準がTEXT、IDまたはリレーションの場合はアルファベット順)、Dは降順(ソート基準がTEXT、IDまたはリレーションの場合は逆アルファベット順)を意味します。

NAFIRST

NA値がソートの最後でなく、最初に配置されます。

criterion

ソート基準として使用する式。各criterionは、dimensionでディメンション化する必要があります。最初の式は主要なソート基準です。式が多次元の場合、SORTはソートするディメンション以外のすべてのディメンションのステータスにある最初の値を使用します。値セットは、ソート基準として使用できません。

使用上の注意

ディメンションと値セットのソート

Oracle OLAPはディメンションをソートするとき、ディメンションの一時ステータス・リストをソートし、ディメンション化されたデータをソートしません。多くのOLAP DML文はデータをそのディメンションの現行のステータスに従って操作するため、ディメンションをソートすると、データをソートしたように見えます。ディメンションとそのディメンション・サロゲートは、同じステータスを共有します。このため、ディメンションまたはそのサロゲートに対するSORT文は、それらすべてをソートします。

Oracle OLAPが値セットをソートする場合、値セット内の実際の値をソートします。値セットをソートしてからUPDATEコマンドおよびCOMMITコマンドを実行すると、値セットの値はソートされた順序で格納されます。

アルファベット順のソート

TEXTまたはIDディメンション、あるいはその値セットをアルファベット順にソートするには、ディメンション自体をソート基準として使用します。

SORT district A district

テキスト・データのソート順

アルファベット順によるテキスト・データのソート順は、NLS_SORTオプションで制御します。

時間ディメンションのソート

DAY、WEEK、MONTH、QUARTERおよびYEAR型のディメンションの値は、内部では数字として格納されます。このため、DAY、WEEK、MONTH、QUARTERおよびYEAR型のディメンションまたはその値セットをディメンション自体をソート基準にして昇順でソートする場合、ステータス・リストまたは値セットの値は時間順に配置されます。DAY、WEEK、MONTH、QUARTERおよびYEAR型のディメンションまたはその値セットを降順でソートすると、値は時間の逆順で配置されます。

リレーションを基準とするソート

リレーションをソート基準にすると、アルファベット順でソートされますが、つまり、ディメンションや値セットが関連ディメンション値のアルファベット順リストに従ってソートされます。リレーションをソート基準として使用し、関連ディメンション値を元の順序のままにするには、ソート基準に次の式を使用する必要があります。例10-126「リレーションを基準とするソート」を参照してください。

CONVERT(relation, INTEGER)

結合ディメンションのソート

結合ディメンションまたはその値セットは、結合ディメンション自体またはそのベース・ディメンションのいずれかでディメンション化された基準によってソートできます。

連結ディメンションのソート

連結ディメンションまたはその値セットは、連結ディメンション自体またはそのコンポーネントのディメンションのいずれかでディメンション化された基準によってソートできます。例10-127「連結に基づくソート」および例10-128「コンポーネントに基づくソート」を参照してください。

ワークシートのソート

ワークシートはソート基準として使用できません。まずCONVERTを使用して、ワークシートの値を変換するデータ型を指定する必要があります。

例10-126 リレーションを基準とするソート

次の例は、1996年7月のテントの売上数量に従って地区をソートします。まず、各地区が属する地域でソートしてから売上金額を降順にソートします。次のSORT文では、第1のソート基準としてリレーションを使用します。したがって、地区はアルファベット順の地域によってソートされます。

LIMIT month TO 'Jul96'
LIMIT product TO 'Tents'
SORT district A Region.District D sales

次のREPORT文を発行します。

REPORT DOWN district HEADING 'Region' region.district sales

この文によって、SORT文の動作が反映された次のレポートが生成されます。

PRODUCT: Tents
               --------MONTH--------
               --------JUL96--------
DISTRICT         Region     SALES
-------------- ---------- ----------
Dallas         Central    154,914.23
Chicago        Central     79,934.42
Atlanta        East       140,711.00
Boston         East        93,972.49
Seattle        West       123,700.17
Denver         West       100,413.49

次のSORT文では、CONVERTを使用して地域を元の順序のままにします。

SORT district A CONVERT(region.district INTEGER) D sales

次のREPORT文を発行します。

REPORT DOWN district HEADING 'Region' region.district sales

この文によって、最後のSORT文の動作が反映された次のレポートが生成されます。

PRODUCT: Tents
               --------MONTH--------
               --------JUL96--------
DISTRICT         Region     SALES
-------------- ---------- ----------
Atlanta        East       140,711.00
Boston         East        93,972.49
Dallas         Central    154,914.23
Chicago        Central     79,934.42
Seattle        West       123,700.17
Denver         West       100,413.49

ディメンションで値をソートした順序を永続的に維持する場合は、ディメンションをソートしてからMAINTAIN文を使用します。

SORT district A district
MAINTAIN district MOVE STATUS FIRST

例10-127 連結に基づくソート

次の文は、連結ディメンションのreg.dist.ccdimをその値のすべてについて昇順にソートし、結果をレポートします。

sort reg.dist.ccdim d reg.dist.ccdim
report reg.dist.ccdim

この文によって生成される結果は、次のとおりです。

REG.DIST.CCDIM
--------------------
<Region: West>
<Region: East>
<Region: Central>
<District: Seattle>
<District: Denver>
<District: Dallas>
<District: Chicago>
<District: Boston>
<District: Atlanta>

次の文は、連結ディメンションのreg.dist.ccdimをその値のすべてについて昇順にソートし、結果をレポートします。

SORT reg.dist.ccdim A reg.dist.ccdim
REPORT reg.dist.ccdim

この文によって生成される結果は、次のとおりです。

REG.DIST.CCDIM
--------------------
<District: Atlanta>
<District: Boston>
<District: Chicago>
<District: Dallas>
<District: Denver>
<District: Seattle>
<Region: Central>
<Region: East>
<Region: West>

例10-128 コンポーネントに基づくソート

次の文は、連結ディメンションのreg.dist.ccdimをいずれかのベース・ディメンションの値に基づいて昇順でソートし、その他のベース・ディメンションの値については降順にソートし、その結果をレポートします。

SORT reg.dist.ccdim A region D district
REPORT reg.dist.ccdim

この文によって生成される結果は、次のとおりです。

REG.DIST.CCDIM
--------------------
<REGION: CENTRAL>
<REGION: EAST>
<REGION: WEST>
<DISTRICT: SEATTLE>
<DISTRICT: DENVER>
<DISTRICT: DALLAS>
<DISTRICT: CHICAGO>
<DISTRICT: BOSTON>
<DISTRICT: ATLANTA> 

例10-129 階層によるソート

アナリティック・ワークスペースに、ディメンションが2つ(geogおよびtime)、リレーションが1つ(geogparent)および変数が1つ(sales)あり、それぞれ次のように定義されているとします。

DEFINE GEOG DIMENSION TEXT
DEFINE TIME DIMENSION TEXT
DEFINE GEOGPARENT RELATION GEOG <GEOG>
DEFINE SALES VARIABLE INTEGER <TIME GEOG>
 

geogのすべての値がステータスにある状態でsalesに対するREPORT文を発行すると、次のようなレポートが生成されます。このレポートでは、geogの値は、アナリティック・ワークスペースに追加されたときの順序で表示されています。

REPORT sales
               --------SALES--------
               --------TIME---------
GEOG              2004       2005
-------------- ---------- ----------
USA                 1,300         NA
Massachusetts       3,881         NA
Florida             3,479         NA
Boston              2,644         NA
Orlando             4,398         NA
Miami               3,294         NA
Pembroke            4,268         NA
California          1,899         NA
Texas               2,115         NA
Los Angeles         2,394         NA
San Francisco       1,334         NA
Dallas                839         NA
Houston               997         NA
 

ここで、(1)geogparentと(2)sales(降順)を基準にしてgeogの値をソートするSORT文を発行します。このソートを実行した後、salesに対するREPORT文を発行すると、次のようなレポートが生成されます。このレポートでは、geogの値は、salesを基準に降順でソートされた州と、それらの州の都市(各都市はそれらが属する州の下に示されている)の両方で表示されています。

SORT geog HIERARCHY geogparent D sales
REPORT SALES
 
               --------SALES--------
               --------TIME---------
GEOG              2004       2005
-------------- ---------- ----------
USA                 1,300         NA
Massachusetts       3,881         NA
Pembroke            4,268         NA
Boston              2,644         NA
Florida             3,479         NA
Orlando             4,398         NA
Miami               3,294         NA
Texas               2,115         NA
Houston               997         NA
Dallas                839         NA
California          1,899         NA
Los Angeles         2,394         NA
San Francisco       1,334         NA
 

例10-130 階層内で親を持たない子のソート

例10-129「階層によるソート」で説明したものと同じオブジェクトがあるとします。また、フロリダ州(Florida)とマサチューセッツ州(Massachusetts)はステータスにないものとします。

ここで、SORT文にSORTORPHANSキーワードを指定すると、マサチューセッツ州の都市とフロリダ州の都市はまとめてソートされます。

SORT geog HIERARCHY geogparent SORTORPHANS D sales
REPORT sales
               ------------------SALES------------------
               ------------------TIME-------------------
GEOG                   2004                 2005
-------------- -------------------- --------------------
USA                           1,300                   NA
Orlando                       4,398                   NA
Pembroke                      4,268                   NA
Miami                         3,294                   NA
Boston                        2,644                   NA
Texas                         2,115                   NA
Houston                         997                   NA
Dallas                          839                   NA
California                    1,899                   NA
Los Angeles                   2,394                   NA
San Francisco                 1,334                   NA
 

同じ文からSORTORPHANSキーワードを除外すると、マサチューセッツ州の都市とフロリダ州の都市は別々にソートされます。

LIMIT geog COMPLEMENT 'Florida' 'Massachusetts'
SORT geog HIERARCHY geogparent D sales
REPORT SALES
 
              --------SALES--------
               --------TIME---------
GEOG              2004       2005
-------------- ---------- ----------
USA                 1,300         NA
Pembroke            4,268         NA
Boston              2,644         NA
Orlando             4,398         NA
Miami               3,294         NA
Texas               2,115         NA
Houston               997         NA
Dallas                839         NA
California          1,899         NA
Los Angeles         2,394         NA
San Francisco       1,334         NA