SORTコマンドは、ディメンションまたはディメンション・サロゲートの現行のステータス・リストの値、あるいは値セットの値の順序を並べ替えるコマンドです。
構文
SORT dimension [byhierarchy] [bycriterion...]
ここで、
byhierarchyはオプションの句で、階層内のファミリ・リレーションに基づき、親リレーションを使用して、階層ディメンションまたはそのディメンション・サロゲートの現行のステータス・リストの値の順序を並べ替えたり、値セットに値を代入します。SORT文に指定できるbyhierarchy句は1つのみです。この句は、SORT文の最初の句である必要があります。
HIERARCHY parent-relation [INVERT] [DEPTH n] [SORTORPHANS]
bycriterionは、明示的に指定された基準を使用して、ディメンションまたはそのディメンション・サロゲートの現行のステータス・リストの値の順序を並べ替えたり、値セットに値を代入したりします。SORT文に指定できるbycriterion句の数に制限はありません。
{A|D} [NAFIRST] criterion
パラメータ
値がディメンション、ディメンション・サロゲートまたは値セットの名前であるテキスト式。
parent-relationでの値位置に基づいてdimensionの値をソートするように指定します。
dimensionの親子セルフ・リレーションの名前を指定します。このリレーションは、各ディメンション値に対して、その親ディメンション値(特定の階層におけるすぐ上位の値)である、ディメンション内の別の値を保持します。この親リレーションは、複数のディメンションを持つことが可能です。
ヒント: 単一値の指定には、parent-relationのQDRを使用できます。 |
Oracle OLAPが階層内の子を親の前に配置するように指定します。(デフォルトでは、子は親の後に配置されます。)
ステータスに配置される世代の数(結果に含まれる値の数)を、階層の最上位からの数で指定します。nのデフォルト値は99です。結果に値を含めない場合(つまり、NULL
のステータスが必要な場合)は、nに-1
を指定します。階層の最上位のみがステータスに必要な場合(つまり、親を持たないディメンション値のみが必要な場合)は、0
(ゼロ)を指定します。
ステータスに親が存在しない最初の従兄弟をすべてまとめてソートするように指定します。デフォルトでは、子をソートする際、その親がステータスに存在しない場合でも、階層構造は維持されます。
値をソートする順序。A
は昇順(ソート基準がTEXT、IDまたはリレーションの場合はアルファベット順)、D
は降順(ソート基準がTEXT、IDまたはリレーションの場合は逆アルファベット順)を意味します。
NA
値がソートの最後でなく、最初に配置されます。
ソート基準として使用する式。各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