JP2007517314A - ディスティンクトカウントメトリック(distinctcountmetrics)のための集約ナビゲーションの最適化 - Google Patents
ディスティンクトカウントメトリック(distinctcountmetrics)のための集約ナビゲーションの最適化 Download PDFInfo
- Publication number
- JP2007517314A JP2007517314A JP2006547117A JP2006547117A JP2007517314A JP 2007517314 A JP2007517314 A JP 2007517314A JP 2006547117 A JP2006547117 A JP 2006547117A JP 2006547117 A JP2006547117 A JP 2006547117A JP 2007517314 A JP2007517314 A JP 2007517314A
- Authority
- JP
- Japan
- Prior art keywords
- dimension
- distinct
- count
- aggregate
- aggregate table
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24539—Query rewriting; Transformation using cached or materialised query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
- G06F16/24556—Aggregation; Duplicate elimination
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Navigation (AREA)
Abstract
集約ナビゲーションの利用によりディスティンクトカウントメトリックを行なうためのファシリティが与えられる(200)。クエリが0以上の限定を特定する場合、詳細テーブルの識別子のディスティンクトカウントクエリについて、ファシリティは詳細テーブル(206)に関連付けられた集約テーブルを特定する。その後、ファシリティは、ディスティンクトカウントされている識別子を集約テーブルが含むか否かを判断し、含んでいる場合、識別子が集約テーブル(214)のすべての行の中で異なるか否かを判断する。異なる場合、ファシリティは、ディスティンクトカウントクエリについて結果を得るために、指定された限定を満たす集約テーブルの行でカウント動作を行なう。識別子が集約テーブルのすべての行の中で異なるのではない場合、ファシリティは、ディスティンクトカウントクエリについて結果を得るために、指定された限定を満たす集約テーブルの行でディスティンクトカウント動作を行なう。
Description
関連出願
本出願は、米国特許法第119条(e)に従い、2003年12月23日に出願された米国仮特許出願番号第60/531,840号、および2004年11月11日に出願された米国特許出願番号第10/994,905号の優先権の利益を主張し、各々の全体が引用によって本願明細書に援用される。
本出願は、米国特許法第119条(e)に従い、2003年12月23日に出願された米国仮特許出願番号第60/531,840号、および2004年11月11日に出願された米国特許出願番号第10/994,905号の優先権の利益を主張し、各々の全体が引用によって本願明細書に援用される。
技術分野
記載された技術は一般にデータベースクエリに向けられ、より特定的にはディスティンクトカウントメトリックの効率的な実行に向けられる。
記載された技術は一般にデータベースクエリに向けられ、より特定的にはディスティンクトカウントメトリックの効率的な実行に向けられる。
背景
データベースはデータの集合体である。典型的にはユーザはデータベース管理システム(DBMS)などのコンピュータプログラムを用いて、データベースにデータを格納し、検索し、修正する。
データベースはデータの集合体である。典型的にはユーザはデータベース管理システム(DBMS)などのコンピュータプログラムを用いて、データベースにデータを格納し、検索し、修正する。
DBMSの1つの種類には、テーブルに情報を格納するリレーショナルデータベース管理システムがある。テーブルとは一連の交差する行および列である。テーブルの行は典型的には特定の項目に関する情報の集合体であるレコードを表わし、列は典型的にはレコードの特定の属性を特定するフィールド、例えばレコードの各フィールドに含まれる特定の種類のデータを表わす。各フィールドは交差する行と列に対する特定の属性を有するデータを含む。
リレーショナルデータベースのテーブルに格納されたデータは、一般にクエリおよび解析ツールを用いてアクセスされ検索される。例えば、ユーザは、テーブル、行、および個々のデータ要素上で、ツールを用いて特定の動作を行なうことができる。1つの種類の動作として集約動作があり、そのような集約関数の1つはディスティンクトカウント(distinct count)と呼ばれる。
ディスティンクトカウントは非常に重要で一般的な分析的要件である。列に分割される行から構成される詳細テーブルについて、ディスティンクトカウントは、他の列において0以上の条件を満たす行の第1の列に現われる一意の値の個数を表示する。例えば、ある顧客が注文した各品目ごとに1行を含み、その行がcustomer ID(顧客ID)列、item ID(品目ID)列、order date ID(注文日ID)列およびcustomer zip ID(顧客郵便番号ID)列に分割されているOrdered Items(注文品目)詳細テーブルについて、ユーザは、郵便番号98210を含む行に含まれる、異なるユーザIDの個数をカウントすることを望むかもしれない。
ディスティンクトカウントメトリックを行なう従来の公知の方法では、ディスティンクトカウントを行なうために集約ナビゲーションを用いることができない。逆にこれらの従来の方法では常に最も詳細なソースからディスティンクトカウントメトリックを得るので、結果として重大な性能上の障害を生じる。性能上の大きな問題が生じるのは、通常、分析的な環境でディスティンクトカウントメトリックを行なうために従来の方法を用いる場
合である。なぜなら、ディスティンクトカウントのこれらの従来の方法は、まさにその性質のために、他の集約関数よりも桁違いに遅いからである。この問題は、レポートに1つ以上のディスティンクトカウントメジャーがある場合に増大する。
合である。なぜなら、ディスティンクトカウントのこれらの従来の方法は、まさにその性質のために、他の集約関数よりも桁違いに遅いからである。この問題は、レポートに1つ以上のディスティンクトカウントメジャーがある場合に増大する。
したがって、ディスティンクトカウントメトリックを実行するための集約ナビゲーションを利用する手法は著しく有用であろう。
詳細な説明
ディスティンクトカウントメトリックを実行するための集約ナビゲーションを利用するソフトウェアファシリティ(「ファシリティ」)が説明される。いくつかの実施例では、ファシリティは、集約テーブル(aggregate table)上でカウント動作を行なうことによりディスティンクトカウントメトリックを計算する。いくつかの実施例では、ファシリティは、従来のディスティンクトカウント動作を行うために典型的に利用される詳細テーブルよりも小さいテーブル上でディスティンクトカウント動作を行なうことにより、ディスティンクトカウントメトリックを計算する。この態様でほとんどのクエリについてディスティンクトカウントをすべてなくすことによって、または他のいくつかの場合には、より小さいテーブル上でディスティンクトカウントを行うことによって同じ回答−すなわちディスティンクトカウントメトリック−を出すことで、ファシリティは、詳細なテーブル上で行なわれる従来のディスティンクトカウントと比較した場合、クエリ時間の著しいスピードアップ−例えば増進−をもたらす。
ディスティンクトカウントメトリックを実行するための集約ナビゲーションを利用するソフトウェアファシリティ(「ファシリティ」)が説明される。いくつかの実施例では、ファシリティは、集約テーブル(aggregate table)上でカウント動作を行なうことによりディスティンクトカウントメトリックを計算する。いくつかの実施例では、ファシリティは、従来のディスティンクトカウント動作を行うために典型的に利用される詳細テーブルよりも小さいテーブル上でディスティンクトカウント動作を行なうことにより、ディスティンクトカウントメトリックを計算する。この態様でほとんどのクエリについてディスティンクトカウントをすべてなくすことによって、または他のいくつかの場合には、より小さいテーブル上でディスティンクトカウントを行うことによって同じ回答−すなわちディスティンクトカウントメトリック−を出すことで、ファシリティは、詳細なテーブル上で行なわれる従来のディスティンクトカウントと比較した場合、クエリ時間の著しいスピードアップ−例えば増進−をもたらす。
明細書全体にわたって以下の用語は一般に以下の意味を有する。
用語「集約テーブル」は、他のデータベーステーブルからの詳細レベルレコードを要約するかまたは統合するテーブルを指す。
用語「集約テーブル」は、他のデータベーステーブルからの詳細レベルレコードを要約するかまたは統合するテーブルを指す。
用語「ベーステーブル」「詳細テーブル」または「ファクトテーブル」は、詳細データを含むデータベーステーブルを指す。
用語「カウント」は、選択された列における行数のカウントを指す。
用語「キューブ」は、ディメンションおよびメジャーを含むマルチディメンション構造を指す。ディメンションはキューブ構造を規定する。メジャーは関心の数値を与える。
用語「キューブ」は、ディメンションおよびメジャーを含むマルチディメンション構造を指す。ディメンションはキューブ構造を規定する。メジャーは関心の数値を与える。
用語「ディメンション」はキューブの構造属性を指し、ファクトテーブルのデータを記述する、体系づけられたカテゴリの階層(レベル)である。これらのカテゴリは、典型的には、分析が行なわれる類似のメンバ集合を記述する。ディメンションは集約することができるフィールド(列)である。例えば時間ディメンションは、年、月および日のレベルを含み得る。
用語「ディメンション階層」は、あるディメンションにおけるメンバ集合およびメンバ同士の相対的位置を指す。
用語「ディスティンクトカウント(distinct count)」または「カウントディスティンクト(count distinct)」は、選択された列における一意の行個数のカウントを指す。これは、選択された列における、重複分をカウントしない行数カウントを指す。
用語「細分性(granularity)」または「粒度(grain)」は、データ要素に含まれる情報の特定性の程度を指す。
用語「階層」は、各メンバが1つの親および0以上の子供メンバを有するようにディメ
ンションのメンバを体系づける、論理的ツリー構造を指す。
ンションのメンバを体系づける、論理的ツリー構造を指す。
用語「レベル」または「カテゴリ」は、ディメンション階層におけるある集合の名称を指し、その全メンバは階層の根から同じ距離にある。例えば時間ディメンションは、年、月および日のレベルを含み得る。
用語「メジャー」は、あるキューブにおいて、そのキューブのファクトテーブルのある列に基づく値の集合を指す。メジャーは、集約され分析される主要値である。
用語「メンバ」はディメンションの項目を指し、1つ以上のデータ発生を表わす。メンバは一意でも、一意でなくてもよい。例えば、2003および2004は、時間ディメンションの年レベルにおいて一意のメンバを示す。対照的に10月は、時間ディメンションの月レベルで一意でないメンバを示す。なぜなら、時間ディメンションに1年分以上のデータを含む場合、時間ディメンションに1つ以上の10月があり得るからである。
用語「クエリ」は、ユーザが有用なフォーマットで情報を得るためにデータベースに「尋ねる」質問を指す。
用語「限定」は、列に課された条件または基準を指す。例えばある限定は、一般に、特定の基準に一致する列に対する値を備えた行のみにクエリを限定するためのやり方を指す。
用語「テーブル」は、リレーショナルデータベースにデータを格納するために用いられる、行および列を含む、二次元のオブジェクトを指す。テーブルは行と列とに体系づけられた情報の表示である。
いくつかの実施例では、ファシリティは、(1)集約−すなわちディスティンクトカウントされているある識別子−すなわちメジャー−を含む集約テーブルが存在する場合、または、(2)集約テーブルの行が識別子自体の代わりにディスティンクトカウントされている識別子のカウントを含む場合に、詳細テーブルの代わりに集約テーブルを利用してディスティンクトカウントメトリックに答える。
集約されている識別子を含む集約テーブルが存在する場合(ケース1)。
a:ディスティンクトカウントされている識別子が集約テーブルにおいて一意の場合−すなわちディスティンクトカウントされている識別子が集約テーブルのすべての行において異なることが確実である場合は、ファシリティは、はるかに遅いディスティンクトカウント演算子の代わりにカウント演算子を集約テーブルに適用する。この例では、詳細についてCOUNT DISTINCTが要求されるマスタ/詳細の関係に対するマスタ集約テーブルであってマスタではない。一例としてOrder/OrderDetails(注文/注文詳細)があり、製品ごとの一意の注文数は、OrderDetails(注文詳細)を介してProduct(製品)に合わさるので、ディスティンクトカウント(すなわちOrderDetails(注文詳細)テーブルのCOUNT DISTINCT)でなければならない。対照的に、1ディメンションおきに集約すると、はるかに速いカウント動作(すなわちOrder(注文)ヘッダテーブルのCOUNT)のみを要する。
a:ディスティンクトカウントされている識別子が集約テーブルにおいて一意の場合−すなわちディスティンクトカウントされている識別子が集約テーブルのすべての行において異なることが確実である場合は、ファシリティは、はるかに遅いディスティンクトカウント演算子の代わりにカウント演算子を集約テーブルに適用する。この例では、詳細についてCOUNT DISTINCTが要求されるマスタ/詳細の関係に対するマスタ集約テーブルであってマスタではない。一例としてOrder/OrderDetails(注文/注文詳細)があり、製品ごとの一意の注文数は、OrderDetails(注文詳細)を介してProduct(製品)に合わさるので、ディスティンクトカウント(すなわちOrderDetails(注文詳細)テーブルのCOUNT DISTINCT)でなければならない。対照的に、1ディメンションおきに集約すると、はるかに速いカウント動作(すなわちOrder(注文)ヘッダテーブルのCOUNT)のみを要する。
b:ディスティンクトカウントされている識別子が集約テーブルにおいて一意でない場合、ファシリティは、ディスティンクトカウント演算子を集約テーブルに適用する。この例では、集約テーブルの一部としてディスティンクトカウントキーが格納される。例えば、ユーザが、過去数か月間にある特定の製品を買った一意の顧客数について関心を持っていると仮定する。CustomerID(顧客ID)、ProductID(製品ID)
、およびMonthID(月ID)ディメンションを有する集約テーブルを用いて、[Product(製品),Month(月)]の粒度またはそれ以上の粒度での集約をサポートするようにCustomerIDにわたってCOUNT DISTINCTを実行することにより、過去数か月間にある特定の製品を買った一意の顧客数を決定することができる。当業者であれば、これがOrder/OrderItem(注文/注文品目)ベースまたはファクトテーブルを用いたディスティンクトカウントの実行と対比して桁違いにはるかに速い実行をもたらすようなシナリオを想定できることが認識される。
、およびMonthID(月ID)ディメンションを有する集約テーブルを用いて、[Product(製品),Month(月)]の粒度またはそれ以上の粒度での集約をサポートするようにCustomerIDにわたってCOUNT DISTINCTを実行することにより、過去数か月間にある特定の製品を買った一意の顧客数を決定することができる。当業者であれば、これがOrder/OrderItem(注文/注文品目)ベースまたはファクトテーブルを用いたディスティンクトカウントの実行と対比して桁違いにはるかに速い実行をもたらすようなシナリオを想定できることが認識される。
集約テーブルが存在するが、集約テーブルの行が識別子自体の代わりにディスカウントされている(discounted)識別子のカウントを含む場合(ケース2)。
a:集約テーブルが、カウントされた識別子に従属するディメンションのみを伴うディメンション数を有する場合、ファシリティは集約テーブルの適切な行からのカウントを合計して、正確なディスティンクトカウントを得る。この例では、COUNT DISTINCTは集約テーブルに格納され、集約テーブルの粒度またはそれ以上の粒度のいかなるクエリも、あらかじめ計算されたCOUNT DISTINCT数において合計することによって、集約体を利用することができる。これが有用である1つの例は、一意の注文数をカウントする場合である。Time(時間)、Customer(顧客)、Product(製品)、Channel(チャネル)のディメンションを備えたサブジェクトエリアを仮定する。図表の意味するところにより、製品以外のすべてのディメンションにおいて# of Orders(注文数)メジャーを合計することができる。(すなわち、所与の注文に複数の製品が関連付けられ得る一方で、その注文はある1日に、一人の顧客について、単一のチャネルを通してなされている)。このシナリオの下では、AllProduct(すべての製品)の粒度において、かつ例えばMonth、CustomerZip、Channelなど他のディメンションの任意の粒度にわたって、集約テーブルを作成することができる。集約テーブルの粒度またはそれ以上の粒度のいかなるクエリもここではこの集約テーブルをヒットし、あらかじめ計算されたディスティンクトカウントにおいて合計する。例えば、直近の四半期についてウェブチャネルによってなされた個別注文数を示すクエリは、この集約テーブルをヒットする。
b:集約テーブルが、ディスティンクトカウントされている識別子に従属するいくつかのディメンションと、ディスティンクトカウントされている識別子から独立したいくつかのディメンションとを有する場合、独立レベルについての集約体のレベルとクエリとがレベルで一致する限り、ファシリティは、正確なディスティンクトカウントを得るためにカウントを合計する。その1つの例は、クエリが顧客のディスティンクトカウントに対するクエリであり、集約テーブルが製品および(顧客の主たる住所の)郵便番号ごとの顧客カウントを有する場合である。この場合、ある州の郵便番号について顧客を加算することによって、その州の顧客数のディスティンクトカウントを得ることができる(なぜなら顧客が2つの州で同時に主たる住所を有することはあり得ないからである)。しかしながら、ブランドの顧客数のディスティンクトカウントは、製品について加算することによっては得ることができない(なぜなら顧客はあるブランドで2つ以上の製品を買うかもしれないからである)。
c:集約テーブルのすべてのディメンションがディスティンクトカウントされている識別子から独立である場合、ファシリティは、クエリのレベルがテーブルのレベルと正確に一致する場合にのみ集約体を用いる。この例では、COUNT DISTINCTは集約テーブルの一部として格納されるが、レベル/粒度の正確な一致しかサポートしない。例えば、ProductID、MonthID、およびNUM_CUSTOMERS(顧客数)のディメンションを有する集約テーブルは、[Product,Month]の粒度のクエリにのみ用いることができるが、[Product,Quarter(四半期)]
の粒度のクエリには用いることができない。換言すると、後者のクエリは集約テーブルを欠く。
の粒度のクエリには用いることができない。換言すると、後者のクエリは集約テーブルを欠く。
1つの実施例では、前述の機能は、メジャー(AMeasureDefn)と論理テーブルソース(ALogicalTableSource)との間のリレーションシップオブジェクトである新しいメタデータオブジェクト(AOverrideAggrRule)にサポートされる。換言すると、ファシリティは、所与の論理テーブルソース(LTS)についてオーバーライド(override)集約表現を指定することができる。ファシリティがオーバーライドを指定しない場合、現在(すなわち従来のディスティンクトカウント)の行動が優先する。ファシリティがLTSについてオーバーライドを指定する場合は、その集約ルールが適用される。
例えば、上記のケース1.bについてのLTSオーバーライド表現は、COUNT(DISTINCT”# of Customers(顧客数)”)である。上記のケース1.aについてのLTSオーバーライドは、COUNT(”# of Orders(注文数)”)である。上記のケース2.aのためのLTSオーバーライドは、SUM(” # of
Orders(注文数)”)である。
Orders(注文数)”)である。
ファシリティの様々な実施例とその利点とは、図面の図1−図11を参照して最もよく理解される。図面の要素は必ずしも縮尺どおりではなく、その代り発明の原理を明らかに図示するために強調されている。図面の全体にわたって、様々な図面の同じまたは対応する部分には同じ番号が用いられている。
図1は、ファシリティがその上で実行するコンピュータシステムのうちの少なくともいくつかに典型的に組み込まれる、選択されたコンポーネントを示すブロック図である。これらのコンピュータシステム100は、コンピュータプログラムの実行のための1つ以上の中央処理装置(「CPU」)102、プログラムおよびデータ−データ構造を含む−が使用されている間それらを格納するためのコンピュータメモリ104、プログラムおよびデータを恒久的に格納するためのデータハードドライブなどの恒久的な記憶装置106、コンピュータ可読媒体に格納されたプログラムおよびデータを読み取るためのCD−ROMドライブなどのコンピュータ可読媒体ドライブ108、ならびに、プログラムおよび/またはデータ構造を含むデータを交換するためにインターネットなどを通してコンピュータシステムを他のコンピュータシステムに接続するためのネットワーク接続110を含み得る。
ファシリティは、プログラムモジュールなど、コンピュータシステム100または他の装置によって実行されるコンピュータ可読命令の一般的コンテキストにおいて記述され得る。一般にプログラムモジュールは、特定のタスクを実行し、または特定の抽象的データタイプを実現する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。メモリ104および恒久的な記憶装置106は、ファシリティを実現する命令を含み得るコンピュータ可読媒体である。メモリ104および恒久的な記憶装置106は、ファシリティを実現する命令に加えて様々な他のコンテンツを有してもよいことが認識される。
コンピュータシステム100が、プログラム出力を表示するためのビデオモニタまたはLCDパネルなどの1つ以上の表示装置、および、キーボード、マイクロホン、またはマウスなどのポインティングデバイスといった、ユーザ入力を受取るための1つ以上の入力装置を含んでもよいことが認識される。ファシリティの動作をサポートするために、典型的には上述のように構成されたコンピュータシステム100が用いられるが、ファシリティは様々な種類および構成の装置を用いて実現され、様々なコンポーネントを有し得るこ
とが認識される。
とが認識される。
下記の説明では、ファシリティの実施例が様々な明示的例と共に記載される。ファシリティの実施例は、多くの点においてこれらの例から著しく発展した状況で用いられ得ることが認識される。
図2Aから図2Cは、いくつかの実施例による、ファシリティがディスティンクトカウントメトリックを実行する方法200のフローチャートを示す。ステップ202で、ファシリティは、ある詳細テーブルの識別子のディスティンクトカウントを要求するクエリを受取る。クエリは1つ以上の限定を含んでもよい。ステップ204で、ファシリティは、詳細テーブルに対応する集約テーブルを特定する。ステップ206で、ファシリティは、ディスティンクトカウントされている識別子を含む集約テーブルがあるか否かを判断するために、特定した集約テーブルをチェックする。
ディスティンクトカウントされている識別子を含む集約テーブルがある場合、次に、ステップ208で、ファシリティは、ディスティンクトカウントされている識別子が集約テーブルのすべての行において異なるか否かを判断するために、集約テーブルの各行をチェックする。ディスティンクトカウントされている識別子が集約テーブルのすべての行において異なる場合、次にファシリティは、ステップ210で、集約テーブルの指定されたクエリ限定を満たす行についてカウント動作を行ない、要求されたディスティンクトカウントメトリックを導き出す。ここで、ファシリティは、ディスティンクトカウントメトリックを導き出すために集約ナビゲーションを利用することによって、性能増進をもたらす。換言すると、ファシリティは、より小さな集約テーブルでより速いカウント動作を行なうことによって性能増進をもたらす。
そうではなく、ディスティンクトカウントされている識別子が集約テーブルのすべての行において異なるわけではない場合、次にファシリティは、ステップ212で、集約テーブルの指定されたクエリ限定を満たす行についてディスティンクトカウント動作を行ない、要求されたディスティンクトカウントメトリックを導き出す。ここで、ファシリティは、ディスティンクトカウントメトリックを導き出すために集約ナビゲーションを利用することによって、なおも性能増進をもたらす。換言すると、ファシリティは、より小さな集約テーブルでディスティンクトカウント動作を行なうことにより、性能増進をもたらす。
ステップ206で、ファシリティが、ディスティンクトカウントされている識別子のカウントを含む集約テーブルがないと判断した場合、次にファシリティは、ステップ214で、ディスティンクトカウントされている識別子のカウントを集約テーブルの行が含むような集約テーブルがあるか否かを判断するためにチェックする。各カウントは、ディスティンクトカウントされている識別子がディメンション値の異なる組合せについて詳細テーブルに生じる回数を表示する。各ディメンション値はそのディメンションの特定のレベルにある。ディスティンクトカウントされている識別子のカウントを集約テーブルの行が含むような集約テーブルがある場合、ファシリティは次に、ステップ216で、処理すべき指定されたクエリ限定があるか否かを判断する。処理すべき指定された限定がある場合、ファシリティは次に、ステップ218で、現在処理されている指定された限定が、集約テーブルのディメンション値と同じまたはより高いレベルの従属ディメンションの限定であるか否かを判断するためにチェックする。
現在処理されている指定された限定が、集約テーブルのディメンション値と同じまたはより高いレベルの従属ディメンションの限定である場合、ファシリティはステップ216に戻り、処理すべき別のクエリ限定を処理する。そうではなく、現在処理されている指定された限定が、集約テーブルのディメンション値と同じまたはより高いレベルの従属ディ
メンションについての限定ではない場合、ファシリティは次に、ステップ220で、現在処理されている指定された限定が、集約テーブルのディメンション値と同じレベルの独立ディメンションの限定であるか否かを判断するために、チェックする。
メンションについての限定ではない場合、ファシリティは次に、ステップ220で、現在処理されている指定された限定が、集約テーブルのディメンション値と同じレベルの独立ディメンションの限定であるか否かを判断するために、チェックする。
現在処理されている指定された限定が、集約テーブルのディメンション値と同じレベルの独立ディメンションの限定である場合、ファシリティはステップ216に戻り、処理すべき別のクエリ限定を処理する。そうではなく、現在処理されている指定された限定が、集約テーブルのディメンション値と同じレベルではない独立ディメンションの限定である場合、ファシリティは次に、ステップ222で、詳細テーブルの指定されたクエリ限定を満たす行についてディスティンクトカウント動作を行ない、要求されたディスティンクトカウントメトリックを導き出す。この例では、ファシリティがディスティンクトカウントメトリックを導き出すために集約ナビゲーションを利用することができないので、性能増進はない。
ステップ216で、ファシリティが、もはや処理すべき指定されたクエリ限定はないと判断した場合、ファシリティは次に、ステップ224で、集約テーブルのディメンション値が指定されたクエリ限定をすべて満たすような集約テーブルの行に含まれるカウントを合計し、要求されたディスティンクトカウントメトリックを導き出す。換言すると、集約テーブルの独立ディメンションのレベルとクエリ限定とがレベルで一致する限り、カウントは合計されて正確なディスティンクトカウント回答を与える。ここで、ファシリティは、クエリに含まれる各限定をチェックし、限定の各々が、集約テーブルのディメンション値と同じレベまたはより高いレベルの従属ディメンションの限定か、または集約テーブルのディメンション値と同じレベルの独立ディメンションの限定のいずれかであると判断した。ファシリティは次に、集約テーブルのディメンション値と同じ(すなわち正確な)レベルまたはより高いレベルの従属ディメンション、および集約テーブルのディメンション値と同じレベルの独立ディメンションにわたって加算することができる。
ここでファシリティは以下のいずれかを決定した。(1)ディスティンクトカウントされている識別子に従属するディメンションのみを集約テーブルが含んでおり(ステップ218)、集約テーブルの適切な行−すなわち集約テーブルのディメンション値が指定されたクエリ限定をすべて満たすような集約テーブルの行−からのカウントが合計されて(ステップ224)正確なディスティンクトカウントを得ることができる。(2)集約テーブルが、ディスティンクトカウントされている識別子に従属するいくつかのディメンションとディスティンクトカウントされている識別子から独立したいくつかのディメンションとを含んでおり(ステップ218およびステップ220)、集約テーブルの適切な行−すなわち集約テーブルのディメンション値が指定されたクエリ限定をすべて満たすような集約テーブルの行−からのカウントが合計されて(ステップ224)正確なディスティンクトカウントを得ることができる。または、集約テーブルのすべてのディメンションがディスティンクトカウントされている識別子から独立しており(ステップ220)、そのため集約体は、クエリのレベルがテーブルのレベルと正確に一致する場合のみにしか用いられ得ない。したがってファシリティは、ディスティンクトカウントメトリックを導き出すために集約ナビゲーションを利用することによって性能増進をもたらす。換言すると、ファシリティは、より小さな集約テーブルの適切な行についてより速い合計動作を行なうことによって性能増進をもたらす。
ステップ214で、ファシリティが、ディスティンクトカウントされている識別子のカウントを含む行を有する集約テーブルがないと判断した場合、ファシリティは、ステップ226で、指定されたクエリ限定を満たす詳細テーブルの行についてディスティンクトカウント動作を行ない、要求されたディスティンクトカウントメトリックを導き出す。この例では、ファシリティは、ディスティンクトカウントメトリックを導き出すために集約ナ
ビゲーションを利用することができないので、性能増進はない。
ビゲーションを利用することができないので、性能増進はない。
当業者は、本願明細書に開示されたこの、および他のプロセスならびに方法について、そのプロセスおよび方法で行なわれた関数が異なる順序で実現され得ることを認識する。さらに、概説されたステップは単に例示的であり、ステップのうちいくつかは任意であってもよく、より少ない数のステップと組み合わせてもよく、または本発明の本質を低下させることなく追加的ステップへと拡張されてもよい。
方法200のさまざまな局面が、以下の例と共にさらに図示される。以下の例が図示する目的で与えられ、いかなる態様においても徹底的または完全であると考えられてはならないことが認識される。この例は、図3に示される詳細テーブル30を含むデータベース、および図4Aから図4Cで示される詳細テーブル30に対応するディメンションテーブルを仮定する。ディメンションテーブルの各々は、テーブル30のレコードを記述する属性を含む。
図示されるように、Detail Table(詳細テーブル)30は、顧客が出した10個の注文レコードを含む。各レコードは、「Order Number(注文番号)」、「Product(製品)」、「Customer(顧客)」、「Order Date(注文日)」、および「Deliver to Zip(配達先郵便番号)」とラベル付けされた、5つの列またはディメンションを有するように示される。第2のディメンションの値が第1のディメンションにおいて1つの値のみを有するかまたは1つの値とのみ関連付けられる場合、第1のディメンションは第2のディメンションに「従属」する。そうではなく、第2のディメンションの値が第1のディメンションにおいて複数の値を有するかまたは複数の値と関連付けられる場合、第2のディメンションから「独立」である。テーブル30において、各注文は一人の顧客とのみ関連付けられるかまたは一人の顧客によって出されるので、「Customer」は「Order Number」に従属する。同様に、各注文はある一日とのみ関連付けられるかまたはある一日に出されるので、「Order Date」は「Order Number」に従属する。対照的に、各注文は複数の製品について出され得るので、「Product」は「Order Number」から独立である。同様に、例えばいくつかの製品は第1の郵便番号に配達され、残りの製品は第2の異なる郵便番号に配達される場合など、複数の製品について1つの注文があり得、ある注文における製品が複数の郵便番号に配達され得るので、「Deliver to Zip」は「Order Number」から独立である。
ディメンションテーブル(Dimension Table)1(図4A)はテーブル30の「Product」ディメンションに関する情報を含んでおり、製品をブランドにさらに分ける階層を図示する。ディメンションテーブル(Dimension Table)2(図4B)はテーブル30の「Deliver to Zip」ディメンションに関する情報を含んでおり、郵便番号を対応する州にさらに分ける階層を図示する。Dimension Table3(図4C)はテーブル30の「Order Date」ディメンションに関する情報を含んでおり、注文日の月を対応する年にさらに分ける階層を図示する。
例1:ディスティンクトカウントされている識別子が集約テーブルに存在し、一意である場合−カウント動作が用いられる。
例として、ユーザは、詳細テーブル30に記録されたような、各顧客が出した一意の注文数のディスティンクトカウントを得ることに関心を持っているかもしれない。ここでファシリティは、ユーザから「Request:customer,# of orders(顧客,注文数),」というストリングを受取ってもよく(ステップ202)、ファシリ
ティは、各顧客が行った一意の注文数に対するディスティンクトカウントクエリとしてストリングを理解する。ファシリティは「customer」がディスティンクトカウントクエリの限定であると判断する。ファシリティはさらに、詳細テーブル30の識別子「Order Number」のディスティンクトカウントを行なうことにより、一意の注文数に対するディスティンクトカウントクエリを得ることができると判断する。
ティは、各顧客が行った一意の注文数に対するディスティンクトカウントクエリとしてストリングを理解する。ファシリティは「customer」がディスティンクトカウントクエリの限定であると判断する。ファシリティはさらに、詳細テーブル30の識別子「Order Number」のディスティンクトカウントを行なうことにより、一意の注文数に対するディスティンクトカウントクエリを得ることができると判断する。
図5に示されるように、ファシリティが、Agg_Table_1(集約テーブル1)を、テーブル30に関連付けられる集約テーブルとして特定し(ステップ204)、かつ例えばクエリに答えるために必要な識別子「Order Number」を含むディスティンクトカウントされている識別子の集約体と仮定すると(ステップ206)、ファシリティはAgg_Table_1をチェックして、Agg_Table_1のすべての行において識別子「Order Number」が異なるか否かを確認する(ステップ208)。示されるように、Agg_Table_1は、注文番号を特定する第1の列、顧客を特定する第2の列、および日付を表示する第3の列の3つの列を含む。識別子「Order Number」がAgg_Table_1のすべての行で異なることを確認すると、ファシリティは、限定−すなわち顧客−を満たすAgg_Table_1の行をカウントすることによりディスティンクトカウントクエリに回答できると結論付ける(ステップ210)。
ファシリティが構造化照会言語(SQL)プロセッサの機能および特徴を組み込んでいるか、またはSQLプロセッサに結合されていると仮定すると、ファシリティは、受取ったストリングを下記のSQL表現に変換することができ、各顧客が出した一意の注文数について要求されたディスティンクトカウントを決定する:
SELECT customer
COUNT(order number)
FROM Agg_Table_1
GROUP BY customer
1つの実施例において、ファシリティのSQLプロセッサコンポーネントは上記のSQL表現を処理し、図6に示されるように、各顧客が出した一意の注文数のディスティンクトカウントを含むDistinct_Count_Table_1(ディスティンクトカウントテーブル1)を生成する。示されるように、Distinct_Count_Table_1は2つの列を含み、一方の列は各顧客を特定し、他方の列は出された注文数のディスティンクトカウントを含む。Distinct_Count_Table_1に見られるように、顧客1は2つの注文を出し、顧客2も2つの注文を出している。
SELECT customer
COUNT(order number)
FROM Agg_Table_1
GROUP BY customer
1つの実施例において、ファシリティのSQLプロセッサコンポーネントは上記のSQL表現を処理し、図6に示されるように、各顧客が出した一意の注文数のディスティンクトカウントを含むDistinct_Count_Table_1(ディスティンクトカウントテーブル1)を生成する。示されるように、Distinct_Count_Table_1は2つの列を含み、一方の列は各顧客を特定し、他方の列は出された注文数のディスティンクトカウントを含む。Distinct_Count_Table_1に見られるように、顧客1は2つの注文を出し、顧客2も2つの注文を出している。
ファシリティは、Agg_Table_1のカウント演算子を適用することによって他のディスティンクトカウントクエリに回答することができる。例えばユーザは、詳細テーブル30に記録されるような各年に出された一意の注文数のディスティンクトカウントを要求し、ファシリティに「Request:year,# of orders(年,注文数)」というストリングを提出していてもよい。ファシリティは、受取ったストリングが各年に出された一意の注文数に対するディスティンクトカウントクエリであると解釈し、ディスティンクトカウントされている識別子が「order number」であって、ディスティンクトカウントクエリの限定が「year」であると判断する。
識別子「order number」がAgg_Table_1のすべての行で異なることを確認すると、ファシリティは、限定−すなわち年−を満たすAgg_Table_1の行をカウントすることによってディスティンクトカウントクエリに回答できると結論付ける。したがってファシリティは、受取ったストリングを下記のSQL表現に変換する:
SELECT year
COUNT(order number)
FROM Agg_Table_1
GROUP BY year
上記のSQL表現が処理されると、2003年に3つの注文が出され、2004年に1つの注文が出されたことが確認される。
SELECT year
COUNT(order number)
FROM Agg_Table_1
GROUP BY year
上記のSQL表現が処理されると、2003年に3つの注文が出され、2004年に1つの注文が出されたことが確認される。
同様の態様で、詳細テーブル30に記録されるような2003年1月に各顧客が出した一意の注文数のディスティンクトカウントは、Agg_Table_1でカウント動作を行なうことにより得ることができる。このディスティンクトカウントリクエストは、「Request:customer,# of orders,date=Jan 2003」というストリングによって表わすことができる。ファシリティは、ディスティンクトカウントされている識別子が「order number」であって、ディスティンクトカウントクエリの限定が「customer」および「date=Jan 2003」であると判断する。
識別子「order number」がAgg_Table_1のすべての行で異なることを確認すると、ファシリティは、限定−すなわち顧客および日付=2003年1月−を満たすAgg_Table_1の行をカウントすることによってディスティンクトカウントクエリに回答できると結論付ける。したがってファシリティは、受取ったストリングを以下のSQL表現に変換する:
SELECT customer
COUNT(order number)
FROM Agg_Table_1
WHERE date=「Jan 2003」
GROUP BY year
上記のSQL表現が処理されると、Customer1が2003年1月に1つの注文を出し、Customer2は2003年1月に注文を出さなかった(ゼロ)ことが確認される。
SELECT customer
COUNT(order number)
FROM Agg_Table_1
WHERE date=「Jan 2003」
GROUP BY year
上記のSQL表現が処理されると、Customer1が2003年1月に1つの注文を出し、Customer2は2003年1月に注文を出さなかった(ゼロ)ことが確認される。
例2:ディスティンクトカウントされている識別子が集約テーブルに存在するが一意ではない場合−ディスティンクトカウント動作が用いられる。
例として、ユーザは、詳細テーブル30に記録されるようなブランドごとの一意の注文数のディスティンクトカウントを得ることに関心を持っているかもしれない。ここで、ファシリティはユーザから「Request:brand,# of orders(ブランド,注文数),」というストリングを受取ってもよく、ファシリティは各顧客が行った一意の注文数に対するディスティンクトカウントとしてストリングを理解する(ステップ202)。ファシリティは、「brand」がディスティンクトカウントクエリの限定であると判断する。ファシリティはさらに、詳細テーブル30の識別子「order number」のディスティンクトカウントを行なうことにより、一意の注文数のためのディスティンクトカウントクエリを得ることができると判断する。
図7に示されるように、ファシリティが、Agg_Table_2(集約テーブル2)を、テーブル30に関連付けられる集約テーブルとして特定し(ステップ204)、かつ例えばクエリに回答するために必要な識別子「order number」を含むディスティンクトカウントされている識別子の集約体と仮定すると(ステップ206)、ファシリティがAgg_Table_2をチェックして、Agg_Table_2のすべての行において識別子「order number」が異なるか否かを確認する(ステップ208)。示されるように、Agg_Table_2は、注文数を識別する第1の列、ブランドを識別する第2の列、および日付を表示する第3の列の3つの列を含む。識別子「or
der number」がAgg_Table_2のすべての行で異なるわけではないことを確認すると、ファシリティは、限定−すなわちブランド−を満たすAgg_Table_2の行をディスティンクトカウントすることによりディスティンクトカウントクエリに回答できると結論付ける(ステップ212)。したがってファシリティは、受取ったストリングを以下のSQL表現に変換する:
SELECT brand
COUNT(DISTINCT order number)
FROM Agg_Table_2
GROUP BY brand
上記のSQL表現が処理されると、ブランド1に4つの注文が出され、ブランド2に3つの注文が出されたことが確認される。
der number」がAgg_Table_2のすべての行で異なるわけではないことを確認すると、ファシリティは、限定−すなわちブランド−を満たすAgg_Table_2の行をディスティンクトカウントすることによりディスティンクトカウントクエリに回答できると結論付ける(ステップ212)。したがってファシリティは、受取ったストリングを以下のSQL表現に変換する:
SELECT brand
COUNT(DISTINCT order number)
FROM Agg_Table_2
GROUP BY brand
上記のSQL表現が処理されると、ブランド1に4つの注文が出され、ブランド2に3つの注文が出されたことが確認される。
ファシリティは、Agg_Table_2のカウント演算子を適用することによって、他のディスティンクトカウントクエリに回答することができる。例えばユーザは、詳細テーブル30に記録されるような各年に出された一意の注文数のディスティンクトカウントを要求し、ファシリティに「Request:year,# of orders(年,注文数)」というストリングを提出したかもしれない。ファシリティは、受取ったストリングが各年に出された一意の注文数に対するディスティンクトカウントクエリであると解釈し、ディスティンクトカウントされている識別子が「order number」であり、ディスティンクトカウントクエリに対する限定が「year」であると判断する。
識別子「order number」がAgg_Table_2のすべての行で異なるわけではないことを確認すると、ファシリティは、限定−すなわち年−を満たすAgg_Table_2の行をディスティンクトカウントすることによってディスティンクトカウントクエリに回答できると結論付ける。したがってファシリティは、受取ったストリングを以下のSQL表現に変換する:
SELECT year
COUNT(DISTINCT order number)
FROM Agg_Table_2
GROUP BY year
上記のSQL表現が処理されると、2003年に3つの注文が出され、2004年に1つの注文が出されたことが確認される。
SELECT year
COUNT(DISTINCT order number)
FROM Agg_Table_2
GROUP BY year
上記のSQL表現が処理されると、2003年に3つの注文が出され、2004年に1つの注文が出されたことが確認される。
例3:ディスティンクトカウントされている識別子を集約テーブルが含まない場合−従属ディメンションだけを含む。
例として、ユーザは、詳細テーブル30に記録されるような各年ごとの一意の注文数のディスティンクトカウントを得ることに関心を持っているかもしれない。ここで、ファシリティはユーザから「Request:year,# of orders(年,注文数)」というストリングを受取ってもよく、ファシリティは各顧客が各年に出した一意の注文数についてのディスティンクトカウントとしてストリングを理解する(ステップ202)。ファシリティは、「year」がディスティンクトカウントクエリに対する限定であると判断する。ファシリティはさらに、詳細テーブル30の識別子「order number」のディスティンクトカウントを行なうことにより、一意の注文数に対するディスティンクトカウントクエリを得ることができると判断する。
図8に示されるように、ファシリティが、Agg_Table_3をテーブル30に関連付けられる集約テーブルとして特定し(ステップ204)、かつ例えばディスティンクトカウントされている識別子「order number」のカウントを行が含むディスティンクトカウントされている識別子の集約体と仮定すると(ステップ208)、ファシ
リティはAgg_Table_3をチェックして、Agg_Table_3に含まれるディメンションのタイプを判断する。示されるように、Agg_Table_3は、日付を表示する第1の列と注文数のカウントを含む第2の列との2つの列を含む。詳細テーブル30では、ある注文は1人の顧客および1つの日付のみを有することができる。集約テーブルが従属ディメンションのみを含む場合、ファシリティは従属ディメンションにわたって合計してディスティンクトカウントを導き出すことができる。集約テーブル3に関しては、ファシリティは、Agg_Table_3が従属ディメンションのみを含み、限定「year」がAgg_Table_3の値−例えば年月−と同じまたはより高いレベルにおける従属ディメンション−すなわち日付−の限定であると判断する(ステップ218)。年ディメンションは、Dimension Table(ディメンションテーブル)3(図4C)に示されるように、日付−例えば月および年−より高いレベルにある。したがって、ファシリティは、そのディメンション値−すなわち日付値−が、すべてのクエリ限定−すなわち年−を満たすようなAgg_Table_3の行に含まれるカウント−すなわち注文数のカウント−を合計することにより、ディスティンクトカウントクエリに回答できると結論付ける(ステップ224)。したがって、ファシリティは、受取ったストリングを下記のSQL表現に変換する:
SELECT year
SUM(# of orders)
FROM Agg_Table_3
GROUP BY year
上記のSQL表現が処理されると、2003年に3つの注文が、2004年に1つの注文が出されたことが確認される。
リティはAgg_Table_3をチェックして、Agg_Table_3に含まれるディメンションのタイプを判断する。示されるように、Agg_Table_3は、日付を表示する第1の列と注文数のカウントを含む第2の列との2つの列を含む。詳細テーブル30では、ある注文は1人の顧客および1つの日付のみを有することができる。集約テーブルが従属ディメンションのみを含む場合、ファシリティは従属ディメンションにわたって合計してディスティンクトカウントを導き出すことができる。集約テーブル3に関しては、ファシリティは、Agg_Table_3が従属ディメンションのみを含み、限定「year」がAgg_Table_3の値−例えば年月−と同じまたはより高いレベルにおける従属ディメンション−すなわち日付−の限定であると判断する(ステップ218)。年ディメンションは、Dimension Table(ディメンションテーブル)3(図4C)に示されるように、日付−例えば月および年−より高いレベルにある。したがって、ファシリティは、そのディメンション値−すなわち日付値−が、すべてのクエリ限定−すなわち年−を満たすようなAgg_Table_3の行に含まれるカウント−すなわち注文数のカウント−を合計することにより、ディスティンクトカウントクエリに回答できると結論付ける(ステップ224)。したがって、ファシリティは、受取ったストリングを下記のSQL表現に変換する:
SELECT year
SUM(# of orders)
FROM Agg_Table_3
GROUP BY year
上記のSQL表現が処理されると、2003年に3つの注文が、2004年に1つの注文が出されたことが確認される。
例4:ディスティンクトカウントされている識別子を集約テーブルが含まない場合−いくつかの従属ディメンションおよびいくつかの独立ディメンションを含む。
例として、ユーザは、詳細テーブル30に記録されるような日付とブランドとの組合わせごとの一意の注文数のディスティンクトカウントを得ることに関心を持っているかもしれない。ここで、ファシリティは、ユーザから「Request:date,brand,# of orders(日付,ブランド,注文数),」というストリングを受取ってもよく、ファシリティは日付とブランドとの各組合わせについて出された一意の注文数についてのディスティンクトカウントクエリとしてストリングを理解する(ステップ202)。ファシリティは、「date」および「brand」がディスティンクトカウントクエリに対する限定であると判断する。ファシリティはさらに、詳細テーブル30の識別子「order number」のディスティンクトカウントを行なうことによって、一意の注文数のためのディスティンクトカウントクエリを得ることができると判断する。
図9に示されるように、ファシリティが、Agg_Table_4(集約テーブル4)を、テーブル30に関連付けられる集約テーブルとして特定し(ステップ204)、かつ例えばディスティンクトカウントされている識別子「order number」のカウントを行が含むディスティンクトカウントされている識別子の集約体と仮定すると(ステップ208)、ファシリティはAgg_Table_4をチェックして、Agg_Table_4に含まれるディメンションのタイプを判断する。示されるように、Agg_Table_4は、日付を表示する第1の列と、ブランドを表示する第2の列と、注文数のカウントを含む第3の列との3つの列を含む。詳細テーブル30においては、ある注文は1つの日付のみを有し得るが、複数の製品に対する注文でもあり得、それはDimension Table(ディメンションテーブル)1(図4A)に示されるように、複数のブランドに対する注文でもあり得る。集約テーブルが、識別子「order number」に従属するディメンションと識別子から独立したディメンションとを含む場合、独立ディメンションについて集約テーブルのレベルとクエリとがレベルで一致する限り、ファシ
リティはカウントを合計してディスティンクトカウントを導き出すことができる。Agg_Table_4に関しては、ファシリティは、Agg_Table_4が従属ディメンションおよび独立ディメンションの両方を含むと判断する。ファシリティはさらに、限定「date」がAgg_Table_4の値−例えば年月−と同じまたはより高いレベルにおける従属ディメンション−すなわち日付−の限定であると判断し(ステップ218)、限定「brand」がAgg_Table_4の値−例えばBrand1またはBrand2−と同じレベルにおける独立ディメンション−すなわちブランド−の限定であると判断する(ステップ220)。したがってファシリティは、そのディメンション値−すなわち日付およびブランド値−が、クエリのすべての限定−すなわち日付とブランドとの組合わせ−を満たすようなAgg_Table_4の行に含まれるカウント−すなわち注文数のカウント−を合計することにより、ディスティンクトカウントクエリに回答できると結論付ける(ステップ224)。したがって、ファシリティは、受取ったストリングを以下のSQL表現に変換する:
SELECT date,brand
SUM(# of orders)
FROM Agg_Table_4
上記のSQL表現が処理されると、Jan 2003およびBrand 1の組合せについて1つの注文が出され、Jan 2003およびBrand 2の組合せについて1つの注文が出され、Feb 2003およびBrand 1の組合せについて2つの注文が出され、Feb 2003およびBrand 2の組合せについて1つの注文が出され、Jan 2004およびBrand 1の組合せについて1つの注文が出され、かつ、Jan 2004およびBrand 2の組合せについて1つの注文が出されたことが確認される。
リティはカウントを合計してディスティンクトカウントを導き出すことができる。Agg_Table_4に関しては、ファシリティは、Agg_Table_4が従属ディメンションおよび独立ディメンションの両方を含むと判断する。ファシリティはさらに、限定「date」がAgg_Table_4の値−例えば年月−と同じまたはより高いレベルにおける従属ディメンション−すなわち日付−の限定であると判断し(ステップ218)、限定「brand」がAgg_Table_4の値−例えばBrand1またはBrand2−と同じレベルにおける独立ディメンション−すなわちブランド−の限定であると判断する(ステップ220)。したがってファシリティは、そのディメンション値−すなわち日付およびブランド値−が、クエリのすべての限定−すなわち日付とブランドとの組合わせ−を満たすようなAgg_Table_4の行に含まれるカウント−すなわち注文数のカウント−を合計することにより、ディスティンクトカウントクエリに回答できると結論付ける(ステップ224)。したがって、ファシリティは、受取ったストリングを以下のSQL表現に変換する:
SELECT date,brand
SUM(# of orders)
FROM Agg_Table_4
上記のSQL表現が処理されると、Jan 2003およびBrand 1の組合せについて1つの注文が出され、Jan 2003およびBrand 2の組合せについて1つの注文が出され、Feb 2003およびBrand 1の組合せについて2つの注文が出され、Feb 2003およびBrand 2の組合せについて1つの注文が出され、Jan 2004およびBrand 1の組合せについて1つの注文が出され、かつ、Jan 2004およびBrand 2の組合せについて1つの注文が出されたことが確認される。
ファシリティは、Agg_Table_4のカウント演算子を適用することによって他のディスティンクトカウントクエリに回答することができる。例えばユーザは、詳細テーブル30に記録されるようなブランドと年との各組合わせについて出された一意の注文数のディスティンクトカウントを要求し、ファシリティに「Request:brand,year,# of orders(ブランド,年,注文数)」というストリングを提出したかもしれない。ファシリティは、受取ったストリングがブランドと年との各組合わせについて出された一意の注文数についてのディスティンクトカウントクエリであると解釈し、ディスティンクトカウントされている識別子が「order number」であり、ディスティンクトカウントクエリに対する限定が「brand」および「year」であると判断する。
ファシリティは、Agg_Table_4が従属ディメンションおよび独立したディメンションの両方を含むと判断する。ファシリティはさらに、限定「year」がAgg_Table_4の値−例えば年月−と同じまたはより高いレベルにおける従属ディメンション−すなわち日付−の限定であると判断し(ステップ218)、限定「brand」がAgg_Table_4の値−例えばBrand1またはBrand2−と同じレベルにおける独立ディメンションの限定であると判断する(ステップ220)。ファシリティは従属ディメンションである日付にわたって合計するのみなので、ファシリティは、そのディメンション値−すなわち日付およびブランド値−が、すべてのクエリ限定−すなわち年とブランドとの組合わせ−を満たすようなAgg_Table_4の行に含まれるカウント−すなわち注文数のカウント−を合計することにより、ファシリティがディスティンクトカウントクエリに回答できると結論付ける(ステップ224)。したがってファシリティは、受取ったストリングを以下のSQL表現に変換する:
SELECT brand,year
SUM(# of orders)
FROM Agg_Table_4
GROUP BY brand,year
上記のSQL表現が処理されると、Brand1および2003の組合せについて3つの注文が出され、Brand2および2003の組合せについて2つの注文が出され、Brand1および2004の組合せについて1つの注文が出され、かつ、Brand2および2004の組合せについて1つの注文が出されたことが確認される。
SELECT brand,year
SUM(# of orders)
FROM Agg_Table_4
GROUP BY brand,year
上記のSQL表現が処理されると、Brand1および2003の組合せについて3つの注文が出され、Brand2および2003の組合せについて2つの注文が出され、Brand1および2004の組合せについて1つの注文が出され、かつ、Brand2および2004の組合せについて1つの注文が出されたことが確認される。
対照的に、ファシリティは、各年に出された一意の注文数に対するAgg_Table_4からのディスティンクトカウントクエリ−例えばRequest:year,# of orders(年,注文数)−に回答することができない。なぜならそれは、独立ディメンションであるブランドにわたっての集約が要求されるからである。換言すると、そのディメンション値−すなわち日付およびブランド値−が特定のクエリ限定−すなわち年−のすべてを満たすようなAgg_Table_4の行がない。クエリはブランドおよび独立ディメンションについての限定を欠いている。この例では、ファシリティは詳細テーブル30でディスティンクトカウント動作を行なう。
例5:ディスティンクトカウントされている識別子を集約テーブルが含まない場合−独立ディメンションのみを含む。
例として、ユーザは、詳細テーブル30に記録されるようなブランドと州との組合わせごとの一意の注文数のディスティンクトカウントを得ることに関心を持っているかもしれない。ここで、ファシリティは「Request:brand,state,# of orders(ブランド,州,注文数),」というストリングをユーザから受取ってもよく、ファシリティはブランドと州との各組合わせについて出された一意の注文数についてのディスティンクトカウントクエリとしてストリングを理解する(ステップ202)。ファシリティは、「brand」および「state」がディスティンクトカウントクエリに対する限定であると判断する。ファシリティはさらに、詳細テーブル30の識別子「order number」のディスティンクトカウントを行なうことにより、一意の注文数のためのディスティンクトカウントクエリを得ることができると判断する。
(0087) 図10に示されるように、ファシリティがAgg_Table_5(集約テーブル5)を詳細テーブル30に関連付けられる集約テーブルとして特定し(ステップ204)、かつ例えばディスティンクトカウントされている識別子「order number」のカウント行が含むディスティンクトカウントされている識別子の集約体と仮定すると(ステップ208)、ファシリティはAgg_Table_5をチェックして、Agg_Table_5に含まれるディメンションのタイプを判断する。示されるように、Agg_Table_5は、ブランドを表示する第1の列と、州を表示する第2の列と、注文数のディスティンクトカウントを含む第3の列との3つの列を含む。詳細テーブル30においては、ある注文は複数の製品に対する注文であり得、Dimension Table1(ディメンションテーブル1)(図4A)に示されるように、それは複数のブランドに対する注文でもあり得、またディメンションテーブル2(図4B)に示されるように、複数の州に対応する複数の郵便番号当てに出荷され得る。ディスティンクトカウントされている識別子「order number」から独立したディメンションのみを集約テーブルが含む場合、集約テーブルの集約体−すなわちディスティンクトカウントは、クエリ限定のレベルが集約テーブルのディメンションのレベルと正確に一致する場合にのみ用いられ得る。Agg_Table_5に関しては、ファシリティは、Agg_Table_5が独立ディメンションのみを含むと判断する。ファシリティはさらに、限定「brand」が同じレベルで独立ディメンション−すなわちブランド−の限定であり、限定「state」が同じレベルの独立ディメンション−すなわち州−の限定であると判断する。したがってファシリティは、Agg_Table_5に含まれる注文数のディスティンクトカウントを用いてディスティンクトカウントクエリに回答できると結論付ける。したがってファシリティは、受取ったストリングを下記のSQL表現に変換する:
SELECT brand,state,# of distinct Orders FROM Agg_Table_5
上記のSQL表現が処理されると、Brand1およびState1の組合せについて4つの注文が出され、Brand2およびState1の組合せについて1つの注文が出され、Brand1およびState2の組合せについて出された注文はなく、Brand2およびState2の組合せについて3つの注文が出されたことが確認される。
(0087) 図10に示されるように、ファシリティがAgg_Table_5(集約テーブル5)を詳細テーブル30に関連付けられる集約テーブルとして特定し(ステップ204)、かつ例えばディスティンクトカウントされている識別子「order number」のカウント行が含むディスティンクトカウントされている識別子の集約体と仮定すると(ステップ208)、ファシリティはAgg_Table_5をチェックして、Agg_Table_5に含まれるディメンションのタイプを判断する。示されるように、Agg_Table_5は、ブランドを表示する第1の列と、州を表示する第2の列と、注文数のディスティンクトカウントを含む第3の列との3つの列を含む。詳細テーブル30においては、ある注文は複数の製品に対する注文であり得、Dimension Table1(ディメンションテーブル1)(図4A)に示されるように、それは複数のブランドに対する注文でもあり得、またディメンションテーブル2(図4B)に示されるように、複数の州に対応する複数の郵便番号当てに出荷され得る。ディスティンクトカウントされている識別子「order number」から独立したディメンションのみを集約テーブルが含む場合、集約テーブルの集約体−すなわちディスティンクトカウントは、クエリ限定のレベルが集約テーブルのディメンションのレベルと正確に一致する場合にのみ用いられ得る。Agg_Table_5に関しては、ファシリティは、Agg_Table_5が独立ディメンションのみを含むと判断する。ファシリティはさらに、限定「brand」が同じレベルで独立ディメンション−すなわちブランド−の限定であり、限定「state」が同じレベルの独立ディメンション−すなわち州−の限定であると判断する。したがってファシリティは、Agg_Table_5に含まれる注文数のディスティンクトカウントを用いてディスティンクトカウントクエリに回答できると結論付ける。したがってファシリティは、受取ったストリングを下記のSQL表現に変換する:
SELECT brand,state,# of distinct Orders FROM Agg_Table_5
上記のSQL表現が処理されると、Brand1およびState1の組合せについて4つの注文が出され、Brand2およびState1の組合せについて1つの注文が出され、Brand1およびState2の組合せについて出された注文はなく、Brand2およびState2の組合せについて3つの注文が出されたことが確認される。
同様にファシリティは、以下のSQL表現を用いることによって、ブランドおよび州1の各組み合わせについての一意の注文数のディスティンクトカウントに対するAgg_Table_5からのクエリ−例えばRequest:brand,state,# of
orders where state=”State 1”(ブランド、州、注文数、州=「州1」)−に回答することができる。
SELECT brand,state,# of distinct Orders
FROM Agg_Table_5
WHERE state=”State1”
上記のSQL表現が処理されると、Brand1およびState1の組合せのために4つの注文が出され、Brand2およびState1の組合せのために1つの注文が出されたことが確認される。
orders where state=”State 1”(ブランド、州、注文数、州=「州1」)−に回答することができる。
SELECT brand,state,# of distinct Orders
FROM Agg_Table_5
WHERE state=”State1”
上記のSQL表現が処理されると、Brand1およびState1の組合せのために4つの注文が出され、Brand2およびState1の組合せのために1つの注文が出されたことが確認される。
対照的に、ファシリティは、Agg_Table_5からの、例えばRequest:brand,# of orders(ブランド、注文数)といった、各ブランドに出された一意の注文数のディスティンクトカウントクエリに回答することができない。なぜならそれは独立したディメンションである州にわたっての集約が要求されるからである。換言すると、Agg_Table_5のディメンションのレベルとクエリの限定レベルとが正確には一致しない。この例では、ファシリティは詳細テーブル30でディスティンクトカウント動作を行なう。
図11は、いくつかの実施例による、ファシリティがディスティンクトカウントクエリに答える際に用いる集約テーブルを特定する方法1100のフローチャートを示す。例として、ファシリティは、詳細テーブル中の識別子のディスティンクトカウントを要求するクエリを受け取ってもよい。ステップ1102で、ファシリティは、クエリが適用される詳細テーブルに関連した集約テーブルを特定する。ファシリティは、クエリされた識別子の集約体である集約テーブルを特に特定する。1つの実施例では、ファシリティは、それらの名称からこれらの集約テーブルを特定してもよい。例えば、データベース管理責任者は、集約テーブルとそれに関連する詳細テーブルとの関係を表示する命名規約を実現していてもよい。この例では、集約テーブルの名称は関連する詳細テーブルを特定し、関係の基礎についての表示を与える。
別の実施例において、集約テーブルの生成を監視するためにプロセスが構成されてもよく、また個々の集約テーブルについて、関連する詳細テーブルおよびデータベースの詳細テーブルとの関係の基礎の表示を与える。その後、ファシリティはこのデータベースに含まれるデータを検査することができ、詳細テーブルに関連付けられた、クエリされた識別子の集約体である集約テーブルを特定する。さらに別の実施例において、ファシリティは、集約テーブルに関連付けられた定義および/またはメタデータから詳細テーブルに関連付けられる集約テーブルを特定することができる。例えば、ツールが各集約テーブルについてメタデータを作成してもよく、メタデータは、関連する詳細テーブル、および詳細テーブルとの関係の基礎に関するデータを含む。
ステップ1104で、ファシリティは、現在のディスティンクトカウントクエリに答える際の使用に適さない集約テーブルを廃棄する。例えば、ファシリティは、クエリされた
識別子の集約体でない集約テーブルを廃棄する。ステップ1106では、ファシリティは、ディスティンクトカウントされている識別子を含む少なくとも1つの集約テーブルがあるか否かを判断するために、廃棄されていない集約テーブルをチェックする。ディスティンクトカウントされている識別子を含む少なくとも1つの集約テーブルがある場合、次に、ステップ1108で、ファシリティは最も粒度の高い集約テーブルを選択する。集約テーブルが1つしかない場合(ステップ1106)、その集約テーブルが最も粒度の高い集約テーブルである。換言すれば、ファシリティは最小の集約テーブルを選択し、選択された集約テーブルを用いてディスティンクトカウントクエリの処理を続ける。
識別子の集約体でない集約テーブルを廃棄する。ステップ1106では、ファシリティは、ディスティンクトカウントされている識別子を含む少なくとも1つの集約テーブルがあるか否かを判断するために、廃棄されていない集約テーブルをチェックする。ディスティンクトカウントされている識別子を含む少なくとも1つの集約テーブルがある場合、次に、ステップ1108で、ファシリティは最も粒度の高い集約テーブルを選択する。集約テーブルが1つしかない場合(ステップ1106)、その集約テーブルが最も粒度の高い集約テーブルである。換言すれば、ファシリティは最小の集約テーブルを選択し、選択された集約テーブルを用いてディスティンクトカウントクエリの処理を続ける。
ディスティンクトカウントされている識別子を含む集約テーブルがない場合、次に、ステップ1110で、ファシリティは、ディスティンクトカウントされている識別子のカウントを含む少なくとも1つの集約テーブルがあるか否かを判断するために、廃棄されていない集約テーブルをチェックする。ディスティンクトカウントされている識別子のカウントを含む少なくとも1つの集約テーブルがある場合、次に、ステップ1112で、ファシリティは最も粒度の高い集約テーブルを選択し、選択された集約テーブルを用いて、ディスティンクトカウントクエリを処理し続ける。集約テーブルが1つしかない場合(ステップ1110)、その集約テーブルが最も粒度の高い集約テーブルである。
ディスティンクトカウントされている識別子のカウントを含む集約テーブルがない場合、次に、ステップ1114で、ファシリティはディスティンクトカウントされている識別子のディスティンクトカウントを含む少なくとも1つの集約テーブルがあるか否かを判断するために、廃棄されていない集約テーブルをチェックする。ディスティンクトカウントされている識別子のディスティンクトカウントを含む少なくとも1つの集約テーブルがある場合、次に、ステップ1116で、ファシリティは最も粒度の高い集約テーブルを選択し、選択された集約テーブルを用いて、ディスティンクトカウントクエリを処理し続ける。集約テーブルが1つしかない場合(ステップ1114)、その集約テーブルが最も粒度の高い集約テーブルである。
そうではなく、ファシリティが、クエリに答える際に用いる集約テーブルの特定に失敗した場合、ファシリティは詳細テーブルを用いてディスティンクトカウントクエリを処理し続ける。
本発明の実施例は図示する目的のために本願明細書に記載されているが、本発明の精神および範囲から逸れることなく様々な修正がなされ得ることは前記から認識されるだろう。従って、本発明は、添付の請求項で明示的に詳細に示された要素と一致するもの以外には限定的ではない。
Claims (25)
- ディスティンクトカウントクエリを処理するための計算システムの方法であって、
詳細テーブルのディスティンクトカウントを要求するクエリを受取るステップを含み、クエリは一意にカウントされる詳細テーブルの識別子タイプを指定し、クエリはさらに、詳細テーブルのディメンションに対する0以上の限定を指定し、指定された各限定は独立ディメンションまたは従属ディメンションのいずれかの限定であって、指定された各限定はそのディメンションの特定のレベルにあり、さらに、
詳細テーブルに対応する集約テーブルを特定するステップと、
特定された集約テーブルの行が、
(1)指定されたタイプの識別子を含むか、または(2)ディメンション値の異なる組合せについて詳細テーブルに生じる、指定されたタイプの複数の一意の識別子を各々表示するカウントを含むかを判断するステップとを含み、各ディメンション値はそのディメンションの特定のレベルにあり、
特定された集約テーブルの行が指定されたタイプの識別子を含む場合:
指定されたタイプの識別子が各々特定された集約テーブルに一意に生じる場合、ディスティンクトカウントクエリに対する結果を得るために、指定された限定を満たす集約テーブルの行で平易なカウント動作を行なうステップと、
指定されたタイプの識別子が各々特定された集約テーブルに一意に生じない場合、ディスティンクトカウントクエリに対する結果を得るために、指定された限定を満たす集約テーブルの行でディスティンクトカウント動作を行なうステップとを含み、さらに、
特定された集約テーブルの行が、ディメンション値の異なる組合せについて詳細テーブルに生じる、指定されたタイプの複数の一意の識別子を各々表示するカウントを含み、各ディメンションがそのディメンションの特定のレベルにある場合:
各指定された限定について、指定された限定が、(1)集約テーブルのディメンション値と同じレベルの独立ディメンションにあるか、または(2)集約テーブルのディメンション値と同じレベルまたはより高いレベルの従属ディメンションにあるかを判断するステップを含み、さらに、
各指定された限定が、(1)集約テーブルのディメンション値と同じレベルの独立したディメンションにあるか、または(2)集約テーブルのディメンション値と同じレベルまたはより高いレベルの従属ディメンションにあるかのいずれかである場合:
ディスティンクトカウントクエリに対する結果を得るために、そのディメンション値が指定された限定をすべて満たすような集約テーブルの行に含まれるカウントを合計するステップを含み、さらに、
指定された限定すべてが、(1)集約テーブルのディメンション値と同じレベルの独立したディメンションにあるか、または(2)集約テーブルのディメンション値と同じレベルまたはより高いレベルの従属ディメンションにあるかのいずれかであるわけではない場合:
ディスティンクトカウントクエリに対する結果を得るために、指定された限定を満たす詳細テーブルの行でディスティンクトカウント動作を行なうステップを含む、方法。 - 集約テーブルは複数の集約テーブルのうちの1つであって、集約テーブルは複数の集約テーブルのうち最も粒度が高い、請求項1に記載の方法。
- コンピュータ可読記憶媒体であって、その記憶内容によってコンピュータは、
詳細テーブルの識別子のディスティンクトカウントを要求するクエリを受取り、クエリは詳細テーブルのディメンションに対する0以上の限定を指定し、さらに、
詳細テーブルに関連した集約テーブルを特定し、
集約テーブルを特定することに応答して、ディスティンクトカウントされている識別子を集約テーブルが含むか否かを判断し、
ディスティンクトカウントされている識別子を集約テーブルが含むと判断することに応答して、
識別子が集約テーブルのすべての行で異なるか否かを判断し、さらに、
識別子が集約テーブルのすべての行で異なると判断することに応答して、ディスティンクトカウントクエリに対する結果を得るために、指定された限定を満たす集約テーブルの行でカウント動作を行う、コンピュータ可読記憶媒体。 - 各限定は詳細テーブルのディメンションにある、請求項3に記載のコンピュータ可読記憶媒体。
- 各限定は独立ディメンションまたは従属ディメンションのいずれかにある、請求項4に記載のコンピュータ可読記憶媒体。
- 各限定はそのディメンションの特定のレベルにある、請求項5に記載のコンピュータ可読記憶媒体。
- 集約テーブルは複数の集約テーブルのうちの1つであって、集約テーブルは複数の集約テーブルのうち最も粒度が高い、請求項3に記載のコンピュータ可読記憶媒体。
- 識別子が集約テーブルのすべての行で異なるわけではないと判断することに応答して、ディスティンクトカウントクエリに対する結果を得るために、指定された限定を満たす集約テーブルの行でコンピュータにディスティンクトカウント動作を行なわせる記憶内容をさらに含む、請求項3に記載のコンピュータ可読記憶媒体。
- 記憶内容をさらに含み、記憶内容によってコンピュータは、
集約テーブルを特定することに応答して、集約テーブルの行がディスティンクトカウントされている識別子のカウントを含むか否かを判断し、各カウントは、識別子がディメンション値の異なる組合せについて詳細テーブルに生じる回数を表示し、各ディメンション値はそのディメンションの特定のレベルにあり、さらに、
集約テーブルの行がディスティンクトカウントされている識別子のカウントを含むと判断することに応答して、ディスティンクトカウントされている識別子に従属するディメンションのみを伴うディメンション数を集約テーブルが有するか否かを判断し、さらに、
ディスティンクトカウントされている識別子に従属するディメンションのみを伴うディメンション数を集約テーブルが有すると判断することに応答して、ディスティンクトカウントクエリに対する結果を得るために、そのディメンション値が指定された限定をすべて満たす集約テーブルの行に含まれるカウントを合計する、請求項3に記載のコンピュータ可読記憶媒体。 - 記憶内容をさらに含み、記憶内容によってコンピュータは、
集約テーブルを特定することに応答して、ディスティンクトカウントされている識別子のカウントを集約テーブルの行が含むか否かを判断し、各カウントは、識別子がディメンション値の異なる組合せについて詳細テーブルに生じる回数を表示し、各ディメンションはそのディメンションの特定のレベルにあり、さらに、
ディスティンクトカウントされている識別子のカウントを集約テーブルの行が含むと判断することに応答して、集約テーブルは、ディスティンクトカウントされている識別子に従属する少なくとも1つのディメンション、およびディスティンクトカウントされている識別子から独立した少なくとも1つのディメンションを有するか否かを判断し、さらに、
ディスティンクトカウントされている識別子に従属する少なくとも1つのディメンション、およびディスティンクトカウントされている識別子から独立した少なくとも1つのディメンションを有するか否かを判断することに応答して、独立ディメンションの集約体の
レベルとクエリとがレベルで一致するか否かを判断し、さらに、
独立ディメンションの集約体のレベルとクエリとがレベルで一致するか否かを判断することに応答して、
ディスティンクトカウントクエリに対する結果を得るために、そのディメンション値が指定された限定をすべて満たす集約テーブルの行に含まれるカウントを合計する、請求項3に記載のコンピュータ可読記憶媒体。 - 記憶内容をさらに含み、記憶内容によってコンピュータは、
集約テーブルを特定することに応答して、ディスティンクトカウントされている識別子のカウントを集約テーブルの行が含むか否かを判断し、各カウントは、識別子がディメンション値の異なる組合せについて詳細テーブルに生じる回数を表示し、各ディメンションはそのディメンションの特定のレベルにあり、さらに、
ディスティンクトカウントされている識別子のカウントを集約テーブルの行が含むと判断することに応答して、ディスティンクトカウントされている識別子から独立したディメンションのみを伴うディメンション数を集約テーブルが有するか否かを判断し、さらに、
ディスティンクトカウントされている識別子から独立したディメンションのみを伴うディメンション数の数を集約テーブルが有すると判断することに応答して、ディスティンクトカウントに対する結果を得るために、集約テーブルのレベルとクエリ限定とがレベルで正確に一致する場合にのみ、そのディメンション値が指定された限定をすべて満たす集約テーブルの行に含まれる集約カウントを用いる、請求項3に記載のコンピュータ可読記憶媒体。 - ディスティンクトカウントメトリックを得るための計算システムの方法であって、
詳細テーブルの識別子のディスティンクトカウントを要求するクエリを受取るステップを含み、クエリは詳細テーブルのディメンションに対する0以上の限定を指定し、さらに、
詳細テーブルに関連した集約テーブルを特定するステップと、
集約テーブルを特定することに応答して、ディスティンクトカウントされている識別子を集約テーブルが含むか否かを判断するステップと、
ディスティンクトカウントされている識別子を集約テーブルが含むと判断することに応答して、
識別子が集約テーブルのすべての行で異なるか否かを判断するステップと、
識別子が集約テーブルのすべての行で異なると判断することに応答して、ディスティンクトカウントクエリに対する結果を得るために、指定された限定を満たす集約テーブルの行でカウント動作を実行するステップとを含む、方法。 - 各限定は詳細テーブルのディメンションにある、請求項12に記載の方法。
- 各限定は独立ディメンションまたは従属ディメンションのいずれかにある、請求項13に記載の方法。
- 各限定はそのディメンションの特定のレベルにある、請求項14に記載の方法。
- 集約テーブルは複数の集約テーブルのうちの1つであって、集約テーブルは、複数の集約テーブルの中で最も粒度が高い、請求項12に記載の方法。
- 識別子が集約テーブルのすべての行で異なるわけではないと判断することに応答して、ディスティンクトカウントクエリに対する結果を得るために、指定された限定を満たす集約テーブルの行でディスティンクトカウント動作を実行するステップをさらに含む、請求項13に記載の方法。
- 集約テーブルを特定することに応答して、ディスティンクトカウントされている識別子のカウントを集約テーブルの行が含むか否かを判断するステップを含み、各カウントは、識別子がディメンション値の異なる組合せについて詳細テーブルに生じる回数を表示し、各ディメンションはそのディメンションの特定のレベルにあり、さらに、
ディスティンクトカウントされている識別子のカウントを集約テーブルの行が含むと判断することに応答して、ディスティンクトカウントされている識別子に従属するディメンションのみを伴うディメンション数を集約テーブルが有するか否かを判断するステップと、
ディスティンクトカウントされている識別子に従属するディメンションのみを伴うディメンション数を集約テーブルが有すると判断することに応答して、ディスティンクトカウントクエリに対する結果を得るために、そのディメンション値が指定された限定をすべて満たす集約テーブルの行に含まれるカウントを合計するステップとをさらに含む、請求項12に記載の方法 - 集約テーブルを特定することに応答して、ディスティンクトカウントされている識別子のカウントを集約テーブルの行が含むか否かを判断するステップを含み、各カウントは、識別子がディメンション値の異なる組合せについて詳細テーブルに生じる回数を表示し、各ディメンションはそのディメンションの特定のレベルにあり、さらに、
ディスティンクトカウントされている識別子のカウントを集約テーブルの行が含むと判断することに応答して、ディスティンクトカウントされている識別子に従属するディメンションのみを伴うディメンション数を集約テーブルが有するか否かを判断するステップと、
独立ディメンションの集約体のレベルとクエリとがレベルで一致するか否かを判断するステップと、
独立ディメンションの集約体のレベルとクエリとがレベルで一致すると判断することに応答して、ディスティンクトカウントクエリについて結果を得るために、そのディメンション値が指定された限定をすべて満たす集約テーブルの行に含まれるカウントを合計するステップとを含む、請求項12に記載の方法。 - 集約テーブルを特定することに応答して、ディスティンクトカウントされている識別子のカウントを集約テーブルの行が含むか否かを判断するステップを含み、各カウントは、識別子がディメンション値の異なる組合せについて詳細テーブルに生じる回数を表示し、各ディメンションはそのディメンションの特定のレベルにあり、
ディスティンクトカウントされている識別子のカウントを集約テーブルの行が含むと判断することに応答して、ディスティンクトカウントされている識別子と独立ディメンションのみに関するディメンション数を集約テーブルが有するか否かを判断するステップと、
ディスティンクトカウントされている識別子から独立したディメンションのみを伴うディメンション数を集約テーブルが有すると判断することに応答して、ディスティンクトカウントに対する結果を得るために、集約テーブルのレベルとクエリ限定とがレベルで正確に一致する場合にのみ、そのディメンション値が指定された限定をすべて満たす集約テーブルの行に含まれる集約カウントを用いるステップとをさらに含む、請求項12に記載の方法。 - ディスティンクトカウントメトリックを得るためのシステムであって、
詳細テーブルの識別子のディスティンクトカウントを要求するクエリを受取るよう動作可能であるクエリ受信コンポーネントを含み、クエリは詳細テーブルのディメンションに対する0以上の限定を指定し、さらに、
ディスティンクトカウントメトリックコンポーネントとを含み、ディスティンクトカウントメトリックコンポーネントは、
詳細テーブルに関連した集約テーブルを特定するよう、
集約テーブルの特定に応答して、ディスティンクトカウントされている識別子を集約テーブルが含むか否かを判断するよう、
ディスティンクトカウントされている識別子を集約テーブルが含むと判断することに応答して、
識別子が集約テーブルのすべての行で異なるか否かを判断するよう、
識別子が集約テーブルのすべての行で異なると判断することに応答して、ディスティンクトカウントクエリに対する結果を得るために、指定された限定を満たす集約テーブルの行でカウント動作を行なうよう動作可能である、システム。 - ディスティンクトカウントメトリックコンポーネントはさらに、識別子が集約テーブルのすべての行で異なるわけではないと判断することに応答して、ディスティンクトカウントクエリに対する結果を得るために、指定された限定を満たす集約テーブルの行でディスティンクトカウント動作を実行するようさらに動作可能である、請求項21に記載のシステム。
- ディスティンクトカウントメトリックコンポーネントはさらに、
集約テーブルの特定に応答して、ディスティンクトカウントされている識別子のカウントを集約テーブルの行が含むか否かを判断するようさらに動作可能であり、各カウントは、識別子がディメンション値の異なる組合せについて詳細テーブルに生じる回数を表示し、各ディメンションはそのディメンションの特定のレベルにあり、さらに、
ディスティンクトカウントされている識別子のカウントを集約テーブルの行が含むと判断することに応答して、指定された限定が、各々集約テーブルのディメンション値と同じまたはより高いレベルの従属ディメンションの限定であるか否かを判断するよう、
指定された限定が各々集約テーブルのディメンション値と同じまたはより高いレベルの従属ディメンションの限定であると判断することに応答して、ディスティンクトカウントクエリに対する結果を得るために、そのディメンション値が指定された限定をすべて満たす集約テーブルの行に含まれるカウントを合計するよう、動作可能である、システム。 - ディスティンクトカウントメトリックコンポーネントはさらに、
集約テーブルの特定に応答して、ディスティンクトカウントされている識別子のカウントを集約テーブルの行が含むか否かを判断するようさらに動作可能であり、各カウントは、識別子がディメンション値の異なる組合せについて詳細テーブルに生じる回数を表示し、各ディメンション値はそのディメンションの特定のレベルにあり、さらに、
ディスティンクトカウントされている識別子のカウントを集約テーブルの行が含むと判断することに応答して、指定された限定は、各々集約テーブルのディメンション値と同じまたはより高いレベルの従属ディメンションの限定か、または集約テーブルのディメンション値と同じレベルの独立ディメンションの限定かを判断するよう、
指定された限定が各々集約テーブルのディメンション値と同じまたはより高いレベルの従属ディメンションの限定、または集約テーブルのディメンション値と同じレベルの独立ディメンションの限定のいずれかであると判断することに応答して、ディスティンクトカウントクエリに対する結果を得るために、そのディメンション値が指定された限定をすべて満たす集約テーブルの行に含まれるカウントを合計するよう動作可能である、請求項21に記載のシステム。 - ディスティンクトカウントメトリックコンポーネントはさらに、
集約テーブルを特定することに応答して、ディスティンクトカウントされている識別子のカウントを集約テーブルの行が含むか否かを判断するようさらに動作可能であり、各カウントは、識別子がディメンション値の異なる組合せについて詳細テーブルに生じる回数を表示し、各ディメンション値はそのディメンションの特定のレベルにあり、さらに、
ディスティンクトカウントされている識別子のカウントを集約テーブルの行が含むと判断することに応答して、指定された限定は、各々集約テーブルのディメンション値と同じまたはより高いレベルの従属ディメンションの限定か、または集約テーブルのディメンション値と同じレベルの独立ディメンションの限定かを判断するよう、
指定された限定が各々集約テーブルのディメンション値と同じまたはより高いレベルの従属ディメンションの限定、または集約テーブルのディメンション値と同じレベルの独立ディメンションの限定のいずれでもないと判断することに応答して、ディスティンクトカウントクエリに対する結果を得るために、集約テーブルのレベルとクエリ限定とがレベルで正確に一致する場合にのみ、そのディメンション値が指定された限定をすべて満たす集約テーブルの行に含まれる集約カウントを用いるステップをさらに含む、請求項21に記載のシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US53184003P | 2003-12-23 | 2003-12-23 | |
US10/994,905 US7707144B2 (en) | 2003-12-23 | 2004-11-22 | Optimization for aggregate navigation for distinct count metrics |
PCT/US2004/041922 WO2005065172A2 (en) | 2003-12-23 | 2004-12-10 | Optimization for aggregate navigation for distinct count metrics |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007517314A true JP2007517314A (ja) | 2007-06-28 |
Family
ID=34681655
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006547117A Withdrawn JP2007517314A (ja) | 2003-12-23 | 2004-12-10 | ディスティンクトカウントメトリック(distinctcountmetrics)のための集約ナビゲーションの最適化 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7707144B2 (ja) |
EP (1) | EP1697866A2 (ja) |
JP (1) | JP2007517314A (ja) |
AU (1) | AU2004311725A1 (ja) |
CA (1) | CA2550808A1 (ja) |
WO (1) | WO2005065172A2 (ja) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050177553A1 (en) * | 2004-02-09 | 2005-08-11 | Alexander Berger | Optimized distinct count query system and method |
US20070094233A1 (en) * | 2005-10-24 | 2007-04-26 | Wolfgang Otter | Translating time-independent data using database operations |
US7464083B2 (en) * | 2005-10-24 | 2008-12-09 | Wolfgang Otter | Combining multi-dimensional data sources using database operations |
US7698314B2 (en) * | 2005-11-09 | 2010-04-13 | Sas Institute Inc. | Computer-implemented systems and methods for providing a counting measure |
US20070113031A1 (en) * | 2005-11-16 | 2007-05-17 | International Business Machines Corporation | Memory management system and method for storing and retrieving messages |
US20070239663A1 (en) * | 2006-04-06 | 2007-10-11 | Clareos, Inc. | Parallel processing of count distinct values |
US20110307477A1 (en) * | 2006-10-30 | 2011-12-15 | Semantifi, Inc. | Method and apparatus for dynamic grouping of unstructured content |
US9558169B2 (en) * | 2007-11-20 | 2017-01-31 | Sap Se | Hierarchical grouping columns |
US20090235356A1 (en) * | 2008-03-14 | 2009-09-17 | Clear Blue Security, Llc | Multi virtual expert system and method for network management |
US20100083147A1 (en) * | 2008-10-01 | 2010-04-01 | Callidus Software, Inc. | Parameter-driven data aggregator |
US8832157B1 (en) * | 2009-12-31 | 2014-09-09 | Teradata Us, Inc. | System, method, and computer-readable medium that facilitates efficient processing of distinct counts on several columns in a parallel processing system |
US10169442B1 (en) * | 2012-06-29 | 2019-01-01 | Open Text Corporation | Methods and systems for multi-dimensional aggregation using composition |
US10235441B1 (en) * | 2012-06-29 | 2019-03-19 | Open Text Corporation | Methods and systems for multi-dimensional aggregation using composition |
US9430453B1 (en) | 2012-12-19 | 2016-08-30 | Emc Corporation | Multi-page document recognition in document capture |
US10176226B2 (en) * | 2014-11-26 | 2019-01-08 | Looker Data Sciences, Inc. | Relation aware aggregation (RAA) on normalized datasets |
CN114428789B (zh) * | 2022-04-06 | 2022-07-08 | 中国工商银行股份有限公司 | 数据的处理方法及装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4918593A (en) * | 1987-01-08 | 1990-04-17 | Wang Laboratories, Inc. | Relational database system |
US6374263B1 (en) * | 1999-07-19 | 2002-04-16 | International Business Machines Corp. | System for maintaining precomputed views |
US6662174B2 (en) * | 2000-04-17 | 2003-12-09 | Brio Software, Inc. | Analytical server including metrics engine |
US7107263B2 (en) * | 2000-12-08 | 2006-09-12 | Netrics.Com, Inc. | Multistage intelligent database search method |
US6836777B2 (en) * | 2001-11-15 | 2004-12-28 | Ncr Corporation | System and method for constructing generic analytical database applications |
US6775682B1 (en) * | 2002-02-26 | 2004-08-10 | Oracle International Corporation | Evaluation of rollups with distinct aggregates by using sequence of sorts and partitioning by measures |
US7047230B2 (en) * | 2002-09-09 | 2006-05-16 | Lucent Technologies Inc. | Distinct sampling system and a method of distinct sampling for optimizing distinct value query estimates |
US20050177553A1 (en) * | 2004-02-09 | 2005-08-11 | Alexander Berger | Optimized distinct count query system and method |
-
2004
- 2004-11-22 US US10/994,905 patent/US7707144B2/en active Active
- 2004-12-10 JP JP2006547117A patent/JP2007517314A/ja not_active Withdrawn
- 2004-12-10 AU AU2004311725A patent/AU2004311725A1/en not_active Abandoned
- 2004-12-10 WO PCT/US2004/041922 patent/WO2005065172A2/en active Application Filing
- 2004-12-10 CA CA002550808A patent/CA2550808A1/en not_active Abandoned
- 2004-12-10 EP EP04814141A patent/EP1697866A2/en not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
AU2004311725A1 (en) | 2005-07-21 |
CA2550808A1 (en) | 2005-07-21 |
US7707144B2 (en) | 2010-04-27 |
WO2005065172A2 (en) | 2005-07-21 |
US20050138001A1 (en) | 2005-06-23 |
WO2005065172A3 (en) | 2006-01-26 |
EP1697866A2 (en) | 2006-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11755575B2 (en) | Processing database queries using format conversion | |
US7805465B2 (en) | Metadata management for a data abstraction model | |
US6993529B1 (en) | Importing data using metadata | |
US9747349B2 (en) | System and method for distributing queries to a group of databases and expediting data access | |
US6477525B1 (en) | Rewriting a query in terms of a summary based on one-to-one and one-to-many losslessness of joins | |
US7953694B2 (en) | Method, system, and program for specifying multidimensional calculations for a relational OLAP engine | |
JP2007517314A (ja) | ディスティンクトカウントメトリック(distinctcountmetrics)のための集約ナビゲーションの最適化 | |
US7698314B2 (en) | Computer-implemented systems and methods for providing a counting measure | |
US6456999B1 (en) | Aggregations size estimation in database services | |
US7844623B2 (en) | Method to provide management of query output | |
JP5633944B1 (ja) | 評価方法、評価装置、およびプログラム | |
US8825633B2 (en) | System, method, and data structure for automatically generating database queries which are data model independent and cardinality independent | |
JPH10232804A (ja) | データベースシステムにおいて集合体照会を遂行するための方法と装置 | |
US8266186B2 (en) | Semantic model association between data abstraction layer in business intelligence tools | |
JP2003526159A (ja) | 多次元データベースおよび統合集約サーバ | |
US20130275372A1 (en) | Database Performance Analysis | |
US9098550B2 (en) | Systems and methods for performing data analysis for model proposals | |
US6473764B1 (en) | Virtual dimensions in databases and method therefor | |
US20070162472A1 (en) | Multi-dimensional data analysis | |
US20050278306A1 (en) | Linked logical fields | |
Chevalier et al. | Document-oriented data warehouses: Complex hierarchies and summarizability | |
US9268817B2 (en) | Efficient evaluation of hierarchical cubes by non-blocking rollups and skipping levels | |
US7275022B2 (en) | System and method for analytically modeling data organized according to non-referred attributes | |
US20040015471A1 (en) | System and method for analytically modeling data organized according to a referenced attribute | |
WO2004107204A2 (en) | Data processing method and system for combining database tables |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20080304 |