JP4465147B2 - データベースシステムにおいてスプレッドシートの算出を行なう方法 - Google Patents
データベースシステムにおいてスプレッドシートの算出を行なう方法 Download PDFInfo
- Publication number
- JP4465147B2 JP4465147B2 JP2002512841A JP2002512841A JP4465147B2 JP 4465147 B2 JP4465147 B2 JP 4465147B2 JP 2002512841 A JP2002512841 A JP 2002512841A JP 2002512841 A JP2002512841 A JP 2002512841A JP 4465147 B2 JP4465147 B2 JP 4465147B2
- Authority
- JP
- Japan
- Prior art keywords
- processors
- spreadsheet
- executed
- perform
- expression
- 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.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/242—Query formulation
- G06F16/2433—Query languages
- G06F16/244—Grouping and aggregation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- 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/953—Organization of data
- Y10S707/954—Relational
-
- 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/99932—Access augmentation or optimizing
-
- 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
-
- 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/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
-
- 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/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
-
- 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/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
- Y10S707/99945—Object-oriented database structure processing
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Electrical Control Of Air Or Fuel Supplied To Internal-Combustion Engine (AREA)
- Measurement And Recording Of Electrical Phenomena And Electrical Characteristics Of The Living Body (AREA)
- Exposure Of Semiconductors, Excluding Electron Or Ion Beam Exposure (AREA)
Description
【著作権の認可】
この特許文献の開示の一部は、著作権による保護を必要とする資料を含んでいる。著作権所有者は、米国特許商標庁の特許ファイルまたは記録に現われる特許開示のいずれかによる複写複製には異議なしとするが、他ではあらゆる著作権を留保する。
【0002】
【優先権の主張】
この特許出願は、2000年7月13日に出願の「SQLスプレッドシート関数(SQL SPREADSHEET FUNCTIONS)」と題された米国仮特許出願番号第60/218,851号からの優先権を主張し、その内容はここでその全体において引用により援用される。
【0003】
【発明の分野】
この発明は一般的にデータベース問合せの処理に関し、より特定的には、データシステムにおいてスプレッドシート様の演算を行なうことに関する。
【0004】
【発明の背景】
業務用解析ツールのうち最も成功を収めたものの1つがスプレッドシートである。一般に、スプレッドシートプログラム(以下「スプレッドシート」とも呼ぶ)は、人が業務用データを特定してデータに対する演算を公式化し、再帰的モデルで連立方程式を構成し、マクロ言語を用いてデータに対し抽象的な計算を行なうことを可能にする。加えて、多くのスプレッドシートプログラムには、公式を管理して、図形式、表形式およびその他のさまざまな種類の形式で結果を提示するための、ユーザインターフェイスが付随している。
【0005】
たとえば典型的なスプレッドシートプログラムは、会計係の多桁式帳簿の列/行または格子形式に似たコンピュータメモリを構成し、こうしてユーザが見ることのできる計算機を提供する。スプレッドシートにある情報にアクセスするには、コンピュータが理解できる形式でスプレッドシート内の特定の位置をコンピュータに伝えることになる。これを達成するための一般的な方式は、スプレッドシートの各行に数を、各列には文字(letter)を割当てることである。たとえば列Aおよび行1(すなわち左上の隅)の位置を参照するためには、ユーザは“A1”を打込む。このようにスプレッドシートは、列と行との各交差部にアドレス指定可能な記憶位置、または「セル」を規定する。
【0006】
残念ながら、構造化問合せ言語(SQL)などのデータベース問合せ言語の解析の有用性は、スプレッドシートの有用性にまだ到達してはいない。たとえばSQLで行間の算出を行なうことは一般的に極めて面倒であり、多くの場合、極めて非効率的である。一般的にこの限界は、SQLにおけるセルの概念およびセルアドレス指定の欠如、より具体的にはセル内でデータを操作するための形式の欠如の結果として生じる、根本的な問題に由来する。よって典型的なシナリオでは、データはまずリレーショナルデータベース管理システム(RDBMS)から抜き出され、スプレッドシート(または特化された多次元解析ツール)のようなツールに与えられる。この後、抜き出されたデータはスプレッドシート内のデータに対し1セットのスプレッドシート演算を実行することにより操作され得る。
【0007】
しかしながら、これらスプレッドシート演算を用いたデータの操作自体が或る問題をもたらす可能性がある。たとえば、スプレッドシート演算の典型的なセットは二次元的な「行−列」セルアドレス指定を考慮したものであるが、このために記号的な構造化モデルを構築することが困難となる。たとえば、計算パラメータの追加はスプレッドシートの手動変化を必要とするため、変化管理が困難となる。加えて、公式の数が多大(数千以上)なものとなれば顕著なスケーラビリティの問題が存在するが、これはスプレッドシートが並列実行を可能としないからである。さらに、企業における数多くのスプレッドシートを含む共同作業環境で、統合が極めて困難となることがある。しかしスプレッドシート上の情報が統合されていなければ、多数のスプレッドシートを問合せて業務状態を把握することはほとんど不可能であろう。
【0008】
上記のことに基づき、スプレッドシートプログラムでのデータの操作に一般的に関連する問題と、RDBMS内に含まれるデータに対しスプレッドシート様の演算を行なう試みから典型的に生じる課題とに対処する機構が、明らかに必要とされている。
【0009】
【発明の概要】
データベースシステムでスプレッドシート様の演算を行なうための方法およびシステムがここに記載される。ここに記載のように、データベース言語は、RDBMS内に含まれるデータに対するスプレッドシート様の演算を定義および実行するための新たな句(「スプレッドシート様の句」)を導入するように拡張される。この発明の一局面に従うと、データを操作するための演算を特定するデータベース問合せを受取るのに応答して、リレーショナル構造からのデータが検索され、多次元的な配列(array)としてアドレス指定され得る非リレーショナル構造で記憶される。次に、データベース問合せで特定された演算がデータに対し行なわれる。
【0010】
この発明の別の局面に従うと、スプレッドシート様の演算を含む問合せを受取るのに応答して、データが検索され多次元配列で記憶される。次に、スプレッドシート様の句で特定された演算が、多次元配列で記憶されていたデータに対して行なわれる。
【0011】
この発明はさらに、コンピュータ読取可能媒体、搬送波で実施されるコンピュータデータ信号、および上記のステップを行なうよう構成された装置を含む。以下の説明および前掲の特許請求の範囲より、その他の特徴および局面が明らかとなるであろう。
【0012】
添付の図面の図において、限定としてではなく例としてこの発明を示す。ここで、同様の参照番号は同様の要素を指す。
【0013】
【好ましい実施例の詳細な説明】
データベースシステムでスプレッドシート様の演算を行なうためのメカニズムが提供される。以下の記載では、この発明の完全な理解をもたらすために説明上多くの特定の詳細を記述する。しかしながら、当業者であればこの発明はこれら特定の詳細なしに実施可能であることが明らかであろう。他の場合には、この発明を不必要に不明瞭なものにすることを避けるために、周知の構造および装置をブロック図の形で示す。
【0014】
演算コンテキストの概観
ここで、データベースシステムでスプレッドシート様の演算を行なうためのメカニズムを説明する。一実施例でデータベース言語は、RDBMS内に含まれるデータに対するスプレッドシート様の演算を定義および実行するための新たな句(「スプレッドシート様の句」)を導入するように拡張される。この拡張は、スプレッドシートプログラムの解析機能をRDBMSと一体化し、記号による参照で読みやすさを改善し、スケーラビリティを増大させ、管理性(安全性、空間、およびその他の制御を一括して)を改良することによって、スプレッドシートプログラムを改良することができる。さらにこの拡張は、スプレッドシート様の計算を直接言語内に与えることによって、従来のデータベース言語をはっきりと向上させる。
【0015】
説明上、データベースシステム内のスプレッドシート様の計算を提供するための技術を、構造化問合せ言語(SQL)の拡張との関連で説明する。しかしながら、ここに説明する方法およびシステムはその他のデータベースおよび/または問合せ言語にも適用可能である。したがってここに与える例は、この発明の実施例を特定のいかなるデータベースおよび/または問合せ言語に限定するものとしても解釈されるべきではない。
【0016】
たとえば或る実施例においてSQLなどの問合せ言語は、表(または問合せの結果)を区画化(partition)して、区画内で配列状の計算を行ない以下の新たな特徴点をもたらすための、新たなSQL句を含むように拡張される。
【0017】
(1) 記号的セルアドレス指定 SQL言語は、個々の行にある列が記号により参照(および更新)され得るセルのように扱われることを可能にするよう拡張される。たとえば事項表(fact table)(地域(region)、年(year)、売上(sales))では、ユーザは所与の地域および年についての売上を直接参照できる(たとえばsales[region='west(西部)', year=1998])。ここに示すように、セルは記号によって参照可能であり、こうして典型的なスプレッドシートアプリケーションが改良される。
【0018】
(2) 記号配列計算 SQL言語は、スプレッドシートの公式と同様の態様でユーザが一連の割当を特定できるように拡張される。一実施例でSQLの拡張は、個々のセルおよび/またはセルの範囲に対しユーザが演算を行なうことを可能にする。或る実施例では,SQLの拡張はセルの或る範囲にわたりデータを集約するための新たな句をサポートする。たとえばSQL拡張は、以下の新たなSQL句を可能にする。
【0019】
【数1】
【0020】
(3) 略記 略記は表示を容易にするために設けられるものである。たとえば、s[r='west', y=2000]の代わりにs['west', 2000]とするなどの位置参照を可能にする略記が設けられ得る。加えて、単一の(スプレッドシートマクロに近い)割当規則を用いて、左辺にある多数のセルを更新することを可能にする略記が設けられ得る。たとえばSQL言語は、s[r=*,y=2000]=s[current (r), 1999]という略記を可能にするように拡張することができ、これを用いて2000年度におけるすべての地域(r)に1999年度の売上の値(s)を割当てることができる。この例では、相対アドレス指定は関数current(r)によって行なわれ、これは地域の値を左辺から右辺へ渡す。
【0021】
(4) 自動的な表現式の順序付け 或る実施例では、スプレッドシートと同様に、スプレッドシート句にある表現式がセル間の依存性に基づいて自動的に順序付けられる。たとえば以下の表現式
【0022】
【数2】
【0023】
が与えられると、最後の2つの割当がまず処理される。
(5) 計算のスケーラビリティ 或る実施例でSQL言語は、ユーザがデータを区画化して区画内で並列に1セットの配列計算を行なうことを可能にするように拡張される。たとえば以下の表現式
【0024】
【数3】
【0025】
については、データは地域rにより区画化され、各々の区画(これは並列に処理され得る)内で2000年度の売上予測が、1990年から1999年までの平均売上の数に基づき算出される。この区画化の関数は、スプレッドシートアプリケーションには典型的に存在しないスケーラビリティの増加をもたらす。
【0026】
(6) 再帰的(recursive)モデル解答 スプレッドシートと同様、SQL言語は再帰的参照を解くことを可能にするよう拡張される。たとえば
【0027】
【数4】
【0028】
では、演算の実行は再帰的なs[x=1]:=s[x=1]/2の割当を四度繰返す。或る実施例では、再帰の終了は特定されたサイクルおよび/または特定の収束基準の数に基づき得る。この種の演算はさまざまな異なった業務用アプリケーションで有益であろう。
【0029】
(7) ストアードモデル 或る実施例では、新たなスプレッドシート句は問合せに直接現われるか、または命名、記憶されて後に問合せに適用され得る。これによりユーザはビジネスモデルを直接RDBMSに記憶させることができる。こうしてデータおよびモデルを単一のRDBMS管理(安全性を含む)のもとにあるようにすることで、潜在的にビジネスモデルの一体化を容易にする。一実施例では2つのメカニズム、すなわちパラメータ化されたビューおよびスプレッドシートテンプレートが、モデルの記憶のために設けられる。これらモデルはオンライン解析処理(OLAP)コンテキストの外側で有益であり得るが、これはこれらモデルが、従来のSQLのサポートしない、データと計算とを分離するやり方をもたらすからである。たとえばパラメータ化されたビューは、ユーザが表または問合せブロックをパラメータとしてのビューへ渡すことを可能にする。この場合、ビューはパラメータ上の「計算終わり(computation done)」を特定し、こうしてビュー呼出中に、表の名称または問合せを与えることで「実(real)」データが渡され得る。
【0030】
(8) 具現化ビュー(materialized view) 或る実施例では、スプレッドシート句での問合せは、具現化ビューに記憶され得る。こうしてデータの変化が引起こされ、その結果モデルが自動的に維持される。
【0031】
SQLでのスプレッドシートアドレス指定
以下、SQLがどのようにスプレッドシート様の演算を含むように拡張され得るかの例を与える。説明上いくつかの例で、時間、製品および地域の次元、ならびに1測定値としての売上を有する事項表fact(t,p,r,s)が用いられる。なお、説明上特定の例を与えるが、この発明の実施例はいかなる特定の例に限定されることはない。
【0032】
スプレッドシート句
多次元的な応用例では、一般的に事項表は行を一意的に識別する列と、依存的な測定値または属性として働く他の情報とからなる。一実施例では、識別列を「区画化」列および「次元化」列に分ける新たなSQL句(「スプレッドシート句」)が設けられる。次元化列は区画内の行を一意的に識別し、その中の測定値に対し配列指標として働く。或る実施例では、スプレッドシート句は更新のリストを含み、これは区画内の配列計算を表わしかつSQL問合せブロックの一部である。たとえば、スプレッドシート句構造は以下のようなものであり得る。
【0033】
【数5】
【0034】
この例では、各々の<update rule>(「規則(rule)」)は割当を表わし、(1)セル(またはセルの範囲)を参照する左辺と、(2)定数、ホスト変数、個々のセル、または区画内のセルの範囲についての表現式を含む右辺とを含む。
【0035】
たとえば、以下の問合せ
【0036】
【数6】
【0037】
は、SELECT(選択する)…GROUP BY(〜によりグループ分けする)…演算の結果を受取り、次にこれを地域rで区画化し、各地域内で2000年のワイン(wine)の売上が1999年と同じであり、かつ2000年のビール(beer)の売上が1998年と1999年の合計売上高であると予測する。
【0038】
一実施例でスプレッドシート句は、どのベーステーブルも更新することなくSELECT…GROUP BY…問合せの結果に対し演算を行なう。
【0039】
任意のORDERED|UPSERTなどのサブ句は後に詳細に説明する。
セル参照
セルへの参照は、区画内のすべての次元を修飾(qualify)することになり、記号または位置による参照を用いることができる。記号による参照を用いると、単一の次元はたとえば
【0040】
【数7】
【0041】
または
【0042】
【数8】
【0043】
などのブール条件を用いて修飾(qualify)される。
一般に、“[]”大括弧内の条件は、DIMENSION BY(〜により次元化する)句での次元と同じだけある。単一の条件はただ1つの次元のみを修飾(qualify)することができ、単一のどの列の述語であってもよい。たとえば、d=<value>、d is null、d{>,>=,<,<=,<>}<value>、d in<list of values>、d between<value>and<value>、d like<value>などがある。或る実施例では、限定を条件に与えることで、複問合せが許可されなくなる。たとえば、d=<value>は単一のセルを選択する。これに代えて他の条件を用いて多数のセルを選択することもできる。
【0044】
或る実施例で、位置による参照については、次元がDIMENSION BY句内で位置により含意され、表現式により修飾(qualify)される。たとえばスプレッドシート句DIMENSION BY(p,t)について、以下の参照
【0045】
【数9】
【0046】
は、s[p='wine', t=2000]およびs[p is null, t=2000]と等価である。加えて、位置および記号による参照を混合することもでき、たとえばs['wine', t=2000]は正当である。しかしながら、或る実施例では記号と位置との両方による参照で一貫性を確保するために、DIMENSION BY句で示される位置に次元dが現われなければならない。したがってDIMENSION BY(b,t)については、句s['wine', t=2000]は正当であるが、一方で句s[t=2000,'wine']は一般に正当ではない。
【0047】
この発明の或る実施例では、演算の次元を修飾(qualify)する条件は、定数およびホスト変数を用いることもできる。右辺にある次元は左辺の次元によって決定されることが多く、たとえば
【0048】
【数10】
【0049】
となる。
略記による表記法を設けることにより、右辺にある次元は左辺に与えられる次元へデフォルトされるようになり、こうして割当でエラーが起こりにくくなる。一実施例では、略記による表記法として“.”という表記を用いる。たとえば上述の句について“.”の略記表記を用いると、句は以下のように表現され得る。
【0050】
【数11】
【0051】
加えて他のSQL表現式では、割当の右辺にある表現式に関数が適用され得る。たとえば以下の表現式
【0052】
【数12】
【0053】
では、割当の右辺にある表現式に関数が適用される。
右辺における範囲参照
或る実施例でSQL言語は、規則の右辺にある1セットのセルへの参照を可能にするように拡張される。一実施例では、和またはカウントなどの集合演算がこのセットに与えられることになる。次元dにわたるセットを参照するために、ブール条件が列dの1つの次元に対し用いられ、たとえばd BETWEEN…またはd IN…またはd LIKE…d{>,>=,<,<=,<>}…などとなる。たとえば
【0054】
【数13】
【0055】
などとなる。
一般に右辺の範囲参照は新たな行を生成することはなく、その代わりに既存の行にわたるループを生成する。たとえば上述の規則には、偶数値t=1990,1992,…,1998を有する行があるが、奇数値t=1991,1993,…,1999を有する行がない場合、tの既存の偶数値のみが集合に寄与する。或る実施例では、集合演算は2つ以上の測定値に適用され得る。たとえば、売上sに加え、各行につき、所与の年が予測にどれだけ寄与することになるかを示す重みwもまた記憶される。次に、以下の表現式
【0056】
【数14】
【0057】
については、1990年から1999年までの重み付けられた売上の合計が算出される。加えて或る実施例では,関係演算子{例えば>,>=,<,<=,<>}を用いた開放型の範囲が与えられ得る。たとえば以下の表現式
【0058】
【数15】
【0059】
などとなる。
一実施例では、開いた範囲のための、たとえば“*”などの特殊な表記が表現式の両辺に与えられる。たとえば以下の表現式
【0060】
【数16】
【0061】
は、製品がワインである区画におけるすべての年度を合計する。
さらなる実施例では、セルの範囲を特定する別のやり方は、小括弧に囲まれたセル参照のリストを列挙することである。たとえば以下の表現式
【0062】
【数17】
【0063】
または、ことによればより簡略に
【0064】
【数18】
【0065】
におけるようなものがある。
これらの表現式は述語(p='wine', t=1998)OR(p='wine', t=1999)OR…により生成されるセットと等価である。
【0066】
さらに、規則は
【0067】
【数19】
【0068】
とも表現され得る。
一実施例で、セルの範囲が右辺で参照される場合、順序付けを明示的に特定しない既存の集合(sum,avg,count)が許される。或る実施例では、集合関数はDISTINCTオプションを含むことができない。ウィンドウ(window)関数およびインバース・ディストリビューション(inverse distribution)関数については、演算を正しく行なうためにセルの順序付けが必要となる。
【0069】
一実施例で、右辺の表現式を評価するための規則はSQLの拡張されていないバージョンと同じである。たとえば、セルが空(null)であると評価される、またはセルが抜けている場合、表現式の結果は、空が無視される集合に含まれていない限り空である。この点を例示するために、1998年度についてのレコードが記録されなければ、表現式
【0070】
【数20】
【0071】
は空の値を戻す。これに代えて、集合を含む以下の表現式では、セットの中の少なくとも1つのセルが空でない値であると評価されるため、空の値は返されない。
【0072】
【数21】
【0073】
或る実施例では、スプレッドシート句はデフォルトによるUPSERTセマンティックを含む。一実施例で、割当の左辺を表わす行が表にあれば、示されたセルが更新され、表になければ新たな行が生成される。たとえば、以下の問合せ
【0074】
【数22】
【0075】
については、2000年がある行が存在しなければ、各々の地域についての2つの新たなt=2000行(1行が'wine'について、1行が'beer'についてである)が出力において生成される。加えて、新たな行について、値が割当てられていない列は空にセットされる。たとえば、上述の問合せのうちSELECT…GROUP BY…の部分が図1の表100に示すものであれば、スプレッドシート句を適用した後には、表100に含まれる情報は更新され、図2の表200に反映されるように新たな行202、204、206、および208を含む。
【0076】
左辺におけるルーピングコンストラクト
以上の例は、割当の左辺が単一のセルを有するように示されている。しかしながら実施例によっては、左辺がセルの範囲である割当を実行することもある。一実施例では、セルの範囲からなる左辺の各々について右辺が再評価される。しかしこの機能を行なうには、一般に左辺に関する相対指標を行なうことができることが必須である。或る実施例では、特殊な関数current()が導入され、これが次元の現在の値を左辺から戻す。この特殊な関数は次に割当の右辺で用いられ得る。たとえば以下の表現式を考慮されたい。
【0077】
【数23】
【0078】
この例では、右辺はcurrent(p)への参照を含み、これは左辺の製品pの現在の値(すなわち'beer')を受取る。したがって、上述の表現式は
【0079】
【数24】
【0080】
と等価であり、これは
【0081】
【数25】
【0082】
と等価である。
加えて、実施例によっては、current()関数についての略記表記は、以下の例に示すように“.”で表わされ得る。
【0083】
【数26】
【0084】
なお、相対指標は左辺のルーピングコンストラクトで補足され得る。このことに対処するために、或る実施例では、2つのコンストラクトすなわち存在ループおよび修飾(qualify)されたループが設けられる。たとえば、左辺にある存在ルーピングコンストラクトは、't between 1990 and 1999'または't like “199%”'などの単一の列述語を用いて既存のセルの範囲を特定する。これらのコンストラクトは既存の行を修飾(qualify)するのに用いられる。こうして左辺で範囲を指定でき、相対指標は右辺で用いられ得る。たとえば以下の割当を考慮されたい。
【0085】
【数27】
【0086】
説明上、データは奇数の年の値のみ(すなわちt=2001、2003および2005)を含むものとする。こうして右辺は、各々の既存の年について先行する2年間の合計を表わす。これはたとえば2001年について、1999年と2000年との合計となる。
【0087】
加えて或る実施例では、数、日付およびストリング範囲について、増分を用いてセルを指定する修飾(qualify)されたループが設けられる。たとえばSQLは、既存のBETWEEN<v1>AND<v2>句がBETWEEN<v1>AND<v2>INCREMENT(増分)<n>句へと拡張されて範囲内の離散的増分を可能にするように拡張され得る。さらに既存のLIKE句は、LIKE<string with single%>INCREMENT<n>へ拡張され得る。たとえば以下の割当を考慮されたい。
【0088】
【数28】
【0089】
この例では、左辺は2000年から2005年までの範囲を増分1で指定する(すなわち2000年、2001年、2002年、2003年、2004年、および2005年)。したがってデフォルトにより、データが奇数年、たとえばt=2001、2003、および2005の値を含む場合、奇数年は更新されて、抜けている年t=2000、2002および2004について追加の行が生成される。
【0090】
以上の例では、各々の年について右辺は先行する2年の合計を表わす。たとえば2002年について、これは2000年と2001年との合計となる。しかしながら、上述の割当は
【0091】
【数29】
【0092】
などの集合を用いても表現できる。したがって、以下の問合せ
【0093】
【数30】
【0094】
と、図3の表300に示すSELECT…GROUP BY…の初期データとが与えられると、問合せの実行は、図4の表400に反映されるような新たな行402、404、406、408、410、および412を生成することになる。
【0095】
この例に関し、d BETWEEN<v1>AND<v2>INCREMENT<n>は意味的に(FOR d=<v1>TO<v2>d+<n>)と等価である。したがってこの例では、d BETWEEN 2005 AND 2000 INCREMENT -1は行d=2005、2004、…2000をこの順序で指定し、d BETWEEN 2005 AND 2000 INCREMENT 1は空いている範囲を指定する。
【0096】
加えて、INCREMENT演算子は加算および減算がサポートされるすべてのデータタイプ、すなわち数および日付タイプに適用される。後者については、間隔のあるタイプの増分を用いることができる。
【0097】
さらに、LIKE<string with single%>INCREMENT<n>は、<string with single%>がただ1つの'%'キャラクタを含むことを想定する。これは'%'を、実行中に<n>に対応するキャラクタと置換える。たとえば以下の割当を考慮されたい。
【0098】
【数31】
【0099】
ここで左辺は、y=2000であり四半期(quarter)が'Q1'、'Q2'、'Q3'、'Q4'である行を指定し、右辺は、年度が1999であり四半期が左辺に指定されたものである行を指定する。
【0100】
或る実施例では、current()関数は同じ次元についてのみ特定され得る。したがって、表現式
【0101】
【数32】
【0102】
は正当である(すなわち2000年から2005年までの各々の年について、先行する2年間の売上についての平均が算出される)。しかしながら、表現式
【0103】
【数33】
【0104】
は、次元tとpとを混合するため正当ではない。
或る実施例では、セルの範囲を指定する他の条件を左辺に用いることもできる。たとえば、1999年より前のすべての記録された年についてのビールの売上を2倍にするためには、以下の表現式を用いることができる。
【0105】
【数34】
【0106】
この例では、't between 2000 and 2005'と't between 2000 and 2005 increment 1'との間にわずかな差異が認められる。特に前者は既存のデータに対してのみ演算を行ない、すなわちt=2000、2004、2005を有する行についてはこれら3年間を通じてのみループすることになる。しかし後者では、2000年から2005年までのすべての年を通じてのループが行なわれる。
【0107】
或る実施例では、左辺でのルーピングは2つ以上の次元について特定され得る。たとえば、表現式
【0108】
【数35】
【0109】
については、すべての組合せが試みられ、評価の順序は最も左の次元から始まる入れ子にされたループにより決定される。たとえば上述の場合については、表現式を評価するシステムはまずp='beer'を固定し、2000年、…2005年を通じて反復し、それからp='wine'を固定してこれらの年を再び反復する。
【0110】
一般的に、修飾(qualify)されたルーピングコンストラクトBETWEEN <v1> AND <v2> INCREMENT <n>はスプレッドシート句にのみ現われることができる。<n>パラメータは負の値を取ることもでき、この結果降順ループが得られる。加えて、修飾(qualify)されたルーピングコンストラクトは規則の右辺で参照され得る。このような場合、パラメータはセルの範囲を含意し、こうして集合演算子がこれらに与えられることになる。たとえば表現式
【0111】
【数36】
【0112】
は、2000年のビールの売上が1990年から1998年までの偶数年の平均売上となることを予測する。
【0113】
空および抜けている値の扱い
或る普及しているスプレッドシートでは、数表現式での初期化されていないセルは0として扱われ、これにより便利にプログラムを簡略化する(すなわち初期化されていないセルについてテストする必要がないなど)。ここでこの発明の或る実施例は未定の値の2つの種類に対処する必要がある。一方の種類は既存のセルでのNULL値であり、他方は抜けているセルからの未定の値である。
【0114】
一実施例で、NULLはSQLで他のところと同じように扱われる。抜けている値は、直接的なセル参照ではNULLとして扱われ、集合では存在しない値として扱われる(これはSQLでのNULLの扱いと同様である)。
【0115】
たとえば、以下の表現式
【0116】
【数37】
【0117】
で行['beer',1999]が抜けている場合、その結果得られる表現式はNULLである。しかしながら、以下の表現式
【0118】
【数38】
【0119】
については、抜けている行は無視される。
或る場合には、既存のNULL値と抜けている値とを区別することが望ましいであろう。このような場合には、述語を導入してこの問題を解決できる。たとえば、IS PRESENT(<cell>)述語は、<cell>参照により示される行がスプレッドシート句の実行よりも以前に存在していれば、TRUE(真)にセットされ得る。ここで、IS PRESENT句は、スプレッドシート句の実行前の状態と関係することが注目される。
【0120】
たとえば、以下の問合せ
【0121】
【数39】
【0122】
を実行する場合、問合せはまず、[p='wine', t=1999]を有する行が存在するかどうかを調べ、もしそうであれば行内の情報を用いる。
【0123】
“is present”述語の変形例が“presentv”関数である。これはセルと2つの表現式e1およびe2、たとえば“presentv(cell, e1, e2)”を受入れる。このセルを含む行が存在すると判断されると、e1が返され、そうでなければe2が返される。こうして上述の問合せに“presentv”関数を代入する場合、問合せは
【0124】
【数40】
【0125】
として表現され得る。
“is present”述語のもう1つの有用となり得る変形例が“presentnnv”(present & not null)関数、たとえば“presentnnv(cell, e1, e2)”である。“presentnnv”関数は、セルがありかつ空でないかどうかを調べ、
【0126】
【数41】
【0127】
と等価である。
この関数は、いくつかの多次元ツールの挙動をエミュレートするのに用いられ得る。もしセルが存在し、かつ空でないデータを有していれば、これをそのままにしておき、そうでなければ(もしセルが存在しなければ)それを作成し値を割当てる。たとえば
【0128】
【数42】
【0129】
となる。
或る実施例では、“is present”述語ならびにpresentv関数およびpresentnnv関数は、スプレッドシート句の内部でのみ利用可能であり、外部での使用はエラー条件を発生させることになる。各セルの存在および空状態をテストするには“is present”および“is null”述語を用いることもできるが、これは一般的に使用しづらいものである。これに対処するため、IGNORE NAVと呼ばれるスプレッドシート句のオプションを導入することができ、これは、抜けているおよび空の値についてのスプレッドシート様の挙動をもたらす。このオプションが特定されると、数および日付のデータについての空および抜けている値は0へデフォルトし、ストリングデータは空いているストリングにデフォルトする。たとえば、以下の表現式
【0130】
【数43】
【0131】
について、s['beer', 1998]が抜けているまたは空である場合、これは算術演算のために0へデフォルトすることになる。
【0132】
更新オプション
一実施例で、スプレッドシート句での更新はアップサート(upsert)セマンティックにデフォルトする(すなわち、左辺で指し示されたセルが存在すればそれは更新され、そうでなければこのセルを含む新たな行が生成される)。或る実施例では、このデフォルトは、UPDATE(更新する)またはUPDATEIF(〜であれば更新する)オプションを特定することにより更新セマンティックに変えることができる。
【0133】
UPDATEオプションを用いると、割当の左辺が存在しなければ(実行時の)エラーが発生する。これに代えてUPDATEEIFオプションを用ると、左辺が存在しない場合、割当は無視される。
【0134】
たとえば、以下の問合せ
【0135】
【数44】
【0136】
において、[p='wine', t=2000]を有する行が存在しなければ、割当は無視される。
【0137】
スプレッドシート句のための規則
この節では、スプレッドシート句での規則を実現するためにはどのようにSQL言語を拡張するのかについてのさらなる例を説明する。一般に、スプレッドシート句での列(すなわちPARTITION/DIMENSION BYの列)が問合せに対するキーを形成することになる。ユーザは、GROUP BY/DISTINCTを問合せの中に置くこと、または問合せの中に表に対する一意的なキー制約を作成することによって、上記のことを確実にできる。もしこれら2つのコンパイル時認識可能条件が満足されなければ一意性検証のステップが実行時に行なわれ、これはシステムにオーバーヘッドを追加することになり、こうしてその性能に影響を与える可能性がある。
【0138】
或る実施例では、スプレッドシート句内で更新され得る列は、PARTITION BY/DIMENSION BYリストにない列のみである。スプレッドシート句での列は、これらが問合せのSELECT句でエイリアス化されている場合には、表現式であり得る。たとえば、3000年期での売上が1000年期および2000年期の売上の平均であることを表現するためには、以下の問合せを用いることができる。
【0139】
【数45】
【0140】
例示のように、スプレッドシート句は問合せのSELECTリストからのエイリアスを用いることができる。加えて、スプレッドシート句は問合せブロックの一部である。したがって、これは問合せが用いられ得るところであればどこでも(すなわちビュー、インラインビュー、副問合せなど)用いられ得る。
【0141】
一般に、スプレッドシート句は、ORDER BY(〜により順序付ける)句を除き、ウィンドウ関数を含む問合せブロックのすべての句が評価された後に評価される。ORDER BY句は最後に実行される。
【0142】
たとえば、以下の問合せにおいて、
【0143】
【数46】
【0144】
内部問合せはスプレッドシート句を含む。この句は、1990年から1999年までのワイン生産での変化を表わす一時変数s[p='wine increase 90-99']を有する。これはreg_slope(回帰勾配)集合関数を用いて算出され得る。次に、生成された一時変数を用いて2000年度のワイン売上を算出する。s[p='wine', t=2000]。しかしながら外部問合せでは一時変数は必要でなく、したがって省略できる。
【0145】
スプレッドシート句内でのセルの評価の順序
スプレッドシートと同様、規則の評価の順序は典型的に依存性グラフを用いて決定される。他のセルc2に依存するセルc1は、c2についてのすべての規則が計算された後に評価される。
【0146】
たとえば、以下の問合せ
【0147】
【数47】
【0148】
においては、セルs[r='west', y=2000]は、s[r='west', y=1999]およびs[r='west', y=1998]に依存する。したがって後者の2つのセルが最初に評価される。
【0149】
場合によっては、ユーザはスプレッドシート句にORDEREDキーワードを与えることによって、特定の評価順序を強制することができる。たとえば、以下の問合せ
【0150】
【数48】
【0151】
においては、割当は特定されたシーケンスで行なわれる。ORDEREDがない場合、ただ1つの規則がスプレッドシートの同じセルに割当を行なうことができる。
【0152】
サイクルおよび連立方程式
スプレッドシートと同様、記載された計算はサイクルを含んでいてもよい。たとえば、問合せ:
【0153】
【数49】
【0154】
は、終了質問を提起する再帰算出s[1]:=s[1]/2を行なう。この例では、s=1024に対する初期値は内部選択により提供されている。
【0155】
サイクルは普通、スプレッドシート句に受入れられず、通常は検出されてエラーとなる。しかし、明示されたITERATE(反復する)サブ句が特定される場合、サイクルはスプレッドシート句に受入れられる。この句は、行なわれるべき反復回数か、または満たされるべき何らかの収束条件のいずれかを特定できる。
【0156】
たとえば、ITERATE(4)句:
【0157】
【数50】
【0158】
は、s[1]:=s[1]/2を4回反復する。こうして問合せは単一のタプル(1,64)へ戻る。この例では、ITERATE句は正の定数をパラメータとして受付ける。
【0159】
スプレッドシートと同様、セルの更新前状態と更新後状態とを用いて、いつ再帰を終了させるかについて条件を特定することができる。たとえば、一実施例では、再帰の終了を許可するために、新しいUNTIL(〜まで)<condition>サブ句が提供される。<condition>はセルの更新前および更新後の値“s”を参照でき、各反復の完了後に評価される。こうしてセルのデルタ変更が決定可能となり、収束基準として役割を果たし得る。ある実施例では、新しい関数“previous(前の)(<cell>)”は、各反復の開始に従い<cell>の値を戻す。計算が終了するのを保証するには、UNTIL句をITERATE句とともに用いなければならない。
【0160】
たとえば、問合せ:
【0161】
【数51】
【0162】
では、スプレッドシート句は10回実行する。パラメータ“s”は初期値が1024で開始し、“s”の前の値マイナスその現在の値が1(“1”)未満となるまで(つまりこの例では10回)反復する。
【0163】
記載されたメカニズムは連立方程式に使用可能である。通常どおり、ITERATE句については、規則の評価の順序はスプレッドシート句におけるそれらの順序によって与えられる。このため、たとえば問合せ:
【0164】
【数52】
【0165】
では、規則s[1]=s[2]+1とs[2]=s[1]*2とは互いのセルを参照する。
【0166】
この例では、初期値はs[1]=10およびs[2]=20である。規則s[1]=s[2]+1がまず実行され、次にs[2]=s[1]*2が続く。2回の反復後、s[1]=43およびs[2]=86となる。
【0167】
多くのシナリオにおいては、プログラミングのために反復回数を手元に用意しておくことが便利である。一実施例では、整数値を仮定し、スプレッドシート句の反復回数を記憶する新しいシステム変数SYSITERATEが導入される。システム変数SYSITERATEはゼロ(“0”)の値で開始し、スプレッドシート句内でのみ使用可能で、それ以外での使用はエラー条件をもたらす。ある実施例では、SYSITERATEは「簡単な」配列ルーピングコンストラクトの役割を果たすことができる。たとえば、問合せ:
【0168】
【数53】
【0169】
は、'west'地域の売上を1990−1999から2000−2009のセルへコピーする。
【0170】
具現化ビューおよびスプレッドシート句
問合せブロックの一部であるスプレッドシート句は、具現化ビュー(MV)において使用可能である。ある実施例では、スプレッドシート句を有する具現化ビューは完全リフレッシュでのみリフレッシュ可能である。増分リフレッシュを行なうためには異なるアルゴリズムを用いてもよい。
【0171】
スプレッドシート句を含むMVを用いた書換
スプレッドシート句を持たない具現化ビューMと1を有する問合せQとを考慮されたい。問合せQはMにアクセスするために書換規則を用いて限定されずに書換可能である。書換規則の例は以下の米国特許出願に記載されている:
米国特許出願第09/221,647号、「準結合を含む関連する問合せを処理するための具現化ビューの使用(USING A MATERIALIZED VIEW TO PROCESS A RELATED QUERY CONTAINING A SEMIJOIN)」、1998年12月28日、ウィトコウスキ(WITKOWSKI)により出願;
米国特許出願第09/221,913号、「反結合を含む関連する問合せを処理するための具現化ビューの使用(USING A MATERIALIZED VIEW TO PROCESS A RELATED QUERY CONTAINING AN ANTI JOIN)」、1998年12月28日、ウィトコウスキにより出願;
米国特許第09/221,649号、「1対多無損失結合を含む関連する問合せを処理するための具現化ビューの使用(USING A MATERIALIZED VIEW TO PROCESS A RELATED QUERY CONTAINING A ONE TO MANY LOSSLESS JOIN)」、1998年12月28日、ウィトコウスキにより出願;
米国特許出願第09/221,641号、「関数従属性と結合バックに基づき、および結合導出可能性に基づいたサマリの観点での問合せの書換(REWRITING A QUERY IN TERMS OF A SUMMARY BASED ON FUNCTIONAL DEPENDENCIES AND JOIN BACKS, AND BASED ON JOIN DERIVABILITY)」、1998年12月28日、ベッロ(BELLO)他により出願;
米国特許出願第09/221,363号、「結合の1対1および1対多無損失性に基づいたサマリの観点での問合せの書換(REWRITING A QUERY IN TERMS OF A SUMMARY BASED ON ONE-TO-ONE AND ONE-TO-MANY LOSSLESSNESS OF JOINS)」、1998年12月28日、ベッロ他により出願;
米国特許出願第09/361,688号、「順序付けられた次元に沿ってグループ分けを行なう具現化ビューにアクセスするための問合せの書換(REWRITING QUERIES TO ACCESS MATERIALIZED VIEWS THAT GROUP ALONG AN ORDERED DIMENSION)」、1999年7月27日、ウィトコウスキ他により出願。
【0172】
たとえば、MVが
【0173】
【数54】
【0174】
で、問合せが
【0175】
【数55】
【0176】
であるとすると、それは以下のように書換可能である。
【0177】
【数56】
【0178】
そうすることで具現化ビューMAVはGROUP BYにおいて問合せQ4よりも多くの列を含むことに注目されたい。こうしてそれはスプレッドシート句を適用する前にロールアップされなければならない。ここでスプレッドシート句を含む具現化ビューMを考慮されたい。スプレッドシート句は重要なデータ含有問題を導入するため、Mを用いた書換は限定される。限定は以下のとおりである。
【0179】
(1) Qはスプレッドシート句を持たねばならず、MおよびQの句は正確に整合しなければならない。
【0180】
(2) M′およびQ′がスプレッドシート句を持たないMおよびQである場合、M′はQ′と同じセットの行を作成しなければならない。
【0181】
このことは、既存の書換規則のいくつか(たとえば上述の特許を参照されたい)が適用可能である(特に無損失結合規則および列等価規則)ことを含意する。しかし、ロールアップ規則などの多くの既存の規則はこの場合のようには使用できず、M′はQ′よりも多くの行を含み得る。
【0182】
たとえば、以下のMVを考慮されたい。
【0183】
【数57】
【0184】
ここでMVは、以下の問合せを書換えるため、fact><product(製品)間の結合が無損失である場合に使用可能である。
【0185】
【数58】
【0186】
しかし、同じmav2を用いて、WHERE(〜の場合)句に限定を含む非常に類似した問合せを書換えることはできない。たとえば、句:
【0187】
【数59】
【0188】
では、Q5は事項表をp<>'wine'の場合の行に限定する。一方、Mav2はそれらの行を含み、このためそれらをスプレッドシート句における算出に用いることができる。この場合にmav2から何をフィルタすべきかを決定することは困難である場合があり、このためスプレッドシート句を有する具現化ビューは書換えにそれほど有益ではないかもしれない。したがって、ユーザに対し、句を持たない具現化された問合せブロックの使用を考慮すべきであるということが推奨される。
【0189】
スプレッドシート句を有するMVの推奨使用
スプレッドシートのある用途では、スプレッドシート句の選択問合せが大きなセット(つまり何百万もの行)にわたる集合であることが考えられる。しかし、その結果は比較的小さなセット(最大で何万もの行)である。この結果は(何百もの行の)より小さなセットへ区画化され、それらの行はスプレッドシート句の支配を受けてそれらの最大80%が変更される。このため、記載されたシステムはときには何千もの区画を有し、各区画につき何百もの更新規則を有していてもよいということになる。
【0190】
たとえば、問合せ:
【0191】
【数60】
【0192】
は、何千もの区画を生成し、各区画につき何百もの更新規則を潜在的に有することが見込まれる。自己再計算可能なスプレッドシートが必要とされる場合、具現化ビューはこのシナリオにおいて効果的に使用可能である。一実施例では、1つはSELECT…GROUP BY…問合せ用、もう1つはスプレッドシート用の2つの別個のMVが使用可能である。たとえば、上述の問合せは、
【0193】
【数61】
【0194】
および、
【0195】
【数62】
【0196】
によって、再帰具現化ビューとして表わすことができる。
ここで、具現化ビューMAVは増分して維持され得る。具現化ビューSPREADSHEET_MVは(MAVの上部に構築されているため)ずっと小さく、完全リフレッシュにより維持される。このため、具現化ビューによってユーザは、オラクル(Oracle)RDBMSTMなどのRDBMS内において連立方程式モデルを含むモデルを保存し再計算することができる。また、上述のように、MVの書換能力はいくぶん限定されていてもよく、リフレッシュが書換よりも重要なシナリオにおいて通常あるべきである。
【0197】
スプレッドシート句を有する問合せの最適化
スプレッドシート句を有する問合せに適用されてもよい最適化はいくつかある。適用されてもよい最適化の1つは、スプレッドシート句において不必要な計算を避けることである。たとえば、句がビューに含まれる場合、外部問合せがスプレッドシート句により行なわれるいかなる更新からも外れたデータを選択する。例として、以下の問合せを考慮されたい。
【0198】
【数63】
【0199】
この例では、問合せはスプレッドシート句により更新されるデータを選択せず、したがってその実行は切捨てられ得る。この種の最適化は一般にコンパイル時に決定され得る。また、外部問合せが[p='beer']である場合のデータを選択すると、スプレッドシート句の一部のみが実行される必要がある。
【0200】
一実施例では、オプティマイザを用いてスプレッドシート句により行なわれる不必要な計算を検出し切捨てる。たとえば、オプティマイザをコンパイル時に用いて、スプレッドシート句内に存在するかもしれない不必要な計算を識別して切捨てることが可能である。
【0201】
スプレッドシート句の使用例
以下は、SQLにおけるスプレッドシート様の演算を達成するために、RDBMS内でスプレッドシート句をいかに使用するかという例である。
【0202】
ケース1. 目的は、ニューヨークとニュージャージーの売上、および各製品についての2都市間の差を示すことである。差はcity(都市)='Diff'(差)を有する新しい行に記録されるものとする。
【0203】
【数64】
【0204】
ケース2. 目的は、各都市における各製品の売上が、1999年11月から1999年12月にかけて、1999年10月から1999年11月にかけてと同じ月別レートで伸びた(または低下した)場合、第4四半期は会社および各都市にとってどうなるかを知ることである。
【0205】
【数65】
【0206】
ケース3. 目的は、個人の純所得の30%を利子として計算する(純所得=給与−税金−利子)ことである。利子は総所得から税控除の対象とされ、税金は給料(salary)の38%、および譲渡所得(capital gain)の28%である。個人がいくら借りるべきか判断したい場合、これは連立方程式の例(純所得は利子に依存し、利子は純所得に依存する)であり、このためITERATE句が含まれる。
【0207】
【数66】
【0208】
ケース4. 12月の売上は、各州/製品について、過去6ヵ月間の売上の平均となることが予想される。目的は、過去6ヵ月間の売上を示し、12月の売上を予測することである。
【0209】
【数67】
【0210】
ケース5. 2000年のワインの売上は1999年に比べ、前世紀の到来、つまり1899年〜1900年と同様に増加するであろう。2000年のビールの売上は1999年に比べ、幸せな60年代の戦争期間、つまり、1960年〜1969年と同様に増加するであろう。目的は、回帰集合関数reg_slope(回帰勾配)を用いて増加を計算することである。
【0211】
【数68】
【0212】
スプレッドシートテンプレート
ある実施例では、この文書に記載のスプレッドシート句は、基本SQL構造への拡張を必要とする問合せブロックの一部である。一実施例では、基本SQL構造への拡張は、スプレッドシートテンプレートの概念を導入することによって回避されてもよい。この節の終わりで2つのアプローチの利点を比較する。
【0213】
一実施例では、スプレッドシート句は、ISO/IEC9075−2:1999 サブ句7.12、<query expression>において定義されるような<with clause>を拡張することにより、計算テンプレートとして宣言され、それは次に主問合せにおいて表または問合せに適用される関数として用いられる。スプレッドシートテンプレートはオブジェクトとして記憶可能であり、後に問合せの結果に適用され、これがスプレッドシート句の記憶されたバージョンとなる。ある実施例では、スプレッドシートテンプレートはスプレッドシート句のものに非常に近いシンタックスを有し、そのためスプレッドシート句からの概念のすべてがここに同様に当てはまる。
【0214】
インラインスプレッドシートテンプレート
ある実施例では、スプレッドシートテンプレートを定義するためにWITH句が拡張される。テンプレートは、<template name>、<input columns>、およびこの文書において以前に記載されたようなスプレッドシート句の定義(「スプレッドシート句」を参照されたい)からなる。以下は、この発明のある実施例に従ったテンプレートの形式例である。
【0215】
【数69】
【0216】
この例では、WITH句はdrink_projection(飲料予測)テンプレートを定義する。
【0217】
【数70】
【0218】
このテンプレートは次に、問合せへのパラメータ化されたビューについて記載されたものと同様の方法で、問合せへ適用可能である。たとえば、上述のテンプレートを有する問合せ全体は、以下のようになり得る。
【0219】
【数71】
【0220】
記憶されたテンプレート
ある実施例では、スプレッドシートテンプレートは新しいデータベースオブジェクトとして記憶される。一実施例では、3つの新しいDDLステートメント、つまり、CREATE SPREADSHEET TEMPLATE(スプレッドシートテンプレートを作成する)、ALTER SPREADSHEET TEMPLATE(スプレッドシートテンプレートを変更する)、およびDROP SPREADSHEET TEMPLATE(スプレッドシートテンプレートをドロップする)が用いられる。
【0221】
CREATE SPREADSHEET TEMPLATEは、テンプレートのインライン形を定義すること(上述のQ22参照)に類似している。たとえば、以下のようである。
【0222】
【数72】
【0223】
テンプレートは一旦定義されると、問合せにおいて使用可能である。たとえば、それは以下の問合せにおいて使用可能である。
【0224】
【数73】
【0225】
ALTER TEMPLATEステートメントにより、<update rules>は追加されたりまたはテンプレートからドロップされるようになる。その形式は以下のとおりである。
【0226】
【数74】
【0227】
たとえば、2000年のコーラ(coke)の売上を予測するためにdrink_projectionテンプレートに更新規則を追加するには、以下の更新問合せを使用してもよい。
【0228】
【数75】
【0229】
同様に、<update rules>を用いて、drink_projectionテンプレートから規則をドロップすることができる。ある実施例では、<update rule>の重複がある場合、その重複も取除かれる。
【0230】
多数測定値集合
ある実施例では、多数の測定値にわたる集合が、各測定値について同じ範囲を特定するために必要とされる。たとえば、問合せ:
【0231】
【数76】
【0232】
は、測定値sとwの両方が同じ範囲['beer',t between 1998 and 1999]にわたって変化するという要件を課している。集合は、範囲定義を考慮から除外してのみ、測定値について特定される。またこれに代えて、各測定値は例のようにそれ自体の範囲で特定されてもよい。
【0233】
【数77】
【0234】
ある実施例では、範囲が同一であることを確実にするため、検証プロセスがコンパイル時に実行される。
【0235】
しかし、各測定値にそれ自体の範囲が付随するようにするシンタックスは、以下の例のように、全測定値に対して異なる範囲の特定を提供する。
【0236】
【数78】
【0237】
この場合、各範囲が同じ濃度(cardinality)を確実に有するようにすることが望ましいかもしれない。しかし、実行時においてさえ、各範囲が同じ濃度を有するかどうかを判断することは問題となるかもしれない。たとえば、データが以下を含むと仮定されたい。
【0238】
【数79】
【0239】
範囲[d1 between 'C' and 'D',d2 between 1 and 2]の濃度は4である。同様に、[d1 between 'K' and 'L',d2 between 11 and 12]の濃度は4である。しかし、これらの範囲の形状は異なる。たとえば、第1の範囲はd1がたった1つの値('C')にわたっており、その形状は線であるが、一方、第2の範囲は2つの値('K'と'L')にわたっており、その形状は正方形である。ユーザはこの状態が起こってほしいとは思わないであろう。
【0240】
たとえば、スプレッドシートプログラムにおいて以下の式SUM(B1:B15*C11:C25)を実行することを考慮されたい。その式の実行はまず、倍数の内部配列を作り出し、それは次にスカラ値へと合計される。等価式をQ27のシンタックスへ適用すると、関数SUMは以下のように書かれる。
【0241】
【数80】
【0242】
しかしここで、次元(d1,d2)が以下の値を有し得るシナリオを考慮されたい。
【0243】
【数81】
【0244】
この場合、両方の範囲の形状は同じとなり(それらは線である)、結果は以下のようになる。
【0245】
【数82】
【0246】
一実施例では、潜在的なセル整合問題を解決するため、システムは、範囲の濃度が同じであることだけでなく、形状も同様に同じであることを要求する。この目的を達成するため、ある実施例では、各次元dに対して、それがすべての範囲において同じ数の行を修飾(qualify)しているかを判断するためにチェックがなされる。たとえば、上述のデータについては、Q28のd1は両方の範囲において1つの値(つまり第1の範囲における値'B'と第2の範囲における値'C')を修飾(qualify)し、d2は、第1の範囲における3つの値(1,5,6.6)と第2の範囲における3つの値(11,12.6,24)とを修飾(qualify)する。このため、形状は同じである。ある実施例では、形状の整合を確実にする検証プロセスが実行時に行なわれる。
【0247】
他の実施例では、潜在的なセル整合問題は、IN(〜に入っている)コンストラクトまたはINCREMENT演算子のいずれかを用いてセルを明示的に列挙することによって解決される。セルのセットが多数測定値集合に対したやすく整合可能なため、次に各範囲がコンパイル時に検証され得る。
【0248】
たとえば、以下の問合せ:
【0249】
【数83】
【0250】
については、('B',5)、('B',6.6)などの他の点は修飾(qualify)しないため、結果はs['B',1]*s['C',11]である。曖昧さを避けるため、システムはINリストをその要素(つまりd2=1,d2=2,…d2=15)の順に段階的に進む。
【0251】
また、Q29はINCREMENT演算子を用いて以下のように書換えられてもよい。
【0252】
【数84】
【0253】
この例では、INCREMENT演算子が適用可能である場合に、Q30のシンタックスは数値および日付次元に対してうまく機能する。しかし、ストリングタイプの次元は通常、明示的に列挙される必要がある。
【0254】
Q29およびQ30のシンタックスは、左辺と右辺とが同一形状の配列を定義するアドレス配列計算に使用可能である。たとえば、以下の問合せが使用可能である。
【0255】
【数85】
【0256】
この例ではTREND(傾向)関数がセルの2つの配列を入力として取込み、セルの同一形状の配列を出力する。入力配列は[d1=‘B',d2 between 11 and 20 increment 1]と[d1=‘C',d2 between 31 and 40 increment 1]で、ともに10の要素を含むベクトルである。出力配列は[d1=‘A',d2 between 1 and 10 increment 1]で、それも10の要素を含むベクトルである。このシンタックスはまた、線状回帰勾配および切片などの2値集合(つまり2つの引数を取込むもの)のための引数の範囲にも使用可能である。たとえば、年によって次元化された測定値XおよびY(つまり、表(year,x,y))を有すると仮定する。その場合、XおよびYの勾配は、(x,y)が同じ行から来ていなくても決定できる。
【0257】
例を挙げる。
【0258】
【数86】
【0259】
INCREMENTを用いた上述のシンタックスはコンパイル時に検証可能で理解しやすい。しかし、既存のデータを特定できないという欠点がある。たとえば、'd2 between 11 and 20'はその間隔におけるd2のすべての値を含むことに注目されたい。しかし、'd2 between 11 and 20 increment 1'は、11、12、…、30の10の値しか許容しない。
【0260】
このように、以前に示したように、範囲が同じであることを保証するQ25に示された概念は、ほとんどの場合を対象とする。Q29およびQ30のシンタックスは、範囲は異なり得るもののそれらの形状は同じである場合を対象とし、全範囲値がINまたはINCREMENT演算子のいずれかを用いて効果的に列挙されるため、範囲はコンパイル時に発見可能である。最後に、Q27のシンタックスについては、範囲は異なり得るもののそれらの形状は同じでなければならず、範囲は実行時に決定される。
【0261】
ルーピングコンストラクト
ルーピングコンストラクトの使用を示すいくつかの例が提供されてきた。数々の例は宣言ルーピングコンストラクトを示す。他の例はプログラマチックルーピングコンストラクトを示す。一般に,ルーピングコンストラクトは、数値指標付けを有するセルに対しうまく機能する。しかし、他のデータ型に対しては通常うまく機能しない。
【0262】
たとえば、tが数値型であるとすると、コンストラクト:
【0263】
【数87】
【0264】
は、2000年、2001年、2002年、2003年、2004年,および2005年における'beer'に対する割当が先行する2年の合計となるよう生成する。“t”が'2000年'、'2001年'、'2002年'といったストリングタイプの形である場合、“t”は数値に変換されて増分を行なうために用いることができないため、コンストラクトは機能しないであろう。
【0265】
一実施例では、この問題に対処するため、一般的なプログラマチックルーピングコンストラクトが提供される。たとえば、以下のプログラマチックコンストラクトが使用されてもよい。
【0266】
【数88】
【0267】
データ駆動型計算−セルアドレス指定の緩和
一般に、セルは個々の次元についてブール条件を用いて特定される。条件は単一の次元と定数とを参照する。
【0268】
たとえば、問合せ:
【0269】
【数89】
【0270】
では、ワイン、ビール、およびコーラの生産が2000年について予測される。各製品につき、3つのパラメータ、つまり、予測に対する重み、開始時、および終了時がある。たとえば、ワインについては、重みは0.2であり、開始時および終了時はそれぞれ1996と1999である。パラメータは製品ごとであるため、製品をその予測パラメータに関連付けるルックアップ表にパラメータを入れることが望ましいかもしれない。この場合、ルックアップ表はp、重み、開始年(syear)、終了年(eyear)をルックアップする。
【0271】
【表1】
【0272】
ここでの課題は、Q32におけるような定数よりむしろルックアップ表からのデータによってセルをアドレス指定するために、スプレッドシート句をいかに使用するかということである。一実施例では、次元をアドレス指定するため、ブール条件について限定が緩和され得る。現在、そのような条件は単一の次元dと定数とを参照可能である。また、ある測定値(つまりPARTITION BY/DIMENSION BYリストにない列)が許容されてもよい。たとえば、以下の式:
【0273】
【数90】
【0274】
について、セルtemp=syear['wine',1999]がまず検索され、次にs['wine',t=temp]におけるtを修飾(qualify)するために用いられてもよい。このため、上述の問合せ(Q32)は以下のように書換え可能である。
【0275】
【数91】
【0276】
この例では、製品pは重み、開始年、および終了年を決定する。このため、すべての対(p,t)について、これらのパラメータは決定可能である。なぜなら、上述の問合せは明白であることをスプレッドシート句が保証するためである。
【0277】
ある実施例では、表(または問合せ)を反復するため、ITERATE句が拡張される。ここで、その考えは、すべての行をルックアップ表(p、重み、開始年、終了年)から取ること、および、以下の問合せに示されるように結果をスプレッドシート句のコンストラクトに基づかせるということである。
【0278】
【数92】
【0279】
この例では、スプレッドシート句は、ルックアップ表の行と同じくらい多い回数実行される。各行は次の反復用のパラメータを提供する。なお、ORDER BY句はITERATE OVER(〜を反復する)副問合せに挿入されている。なぜなら、スプレッドシート句の実行はルックアップ表からの行の順序に依存するためである。決定的な結果のため、一意の順序付けが必要とされ得る。
【0280】
上述の例の変形は、以下の例のように、規則に従ったルックアップ表についてのルーピングをもたらすものである。
【0281】
【数93】
【0282】
個々の規則におけるUPDATE/UPDATEIF/UPSERTオプション
UPDATE、UPDATEIFおよびUPSERTオプションは、スプレッドシート句レベルで提供される。また、ある実施例では、UPDATE、UPDATEIF、およびUPSERTオプションは、個々の規則レベルで提供される。たとえば、以下の問合せを考慮されたい。
【0283】
【数94】
【0284】
セルのより一般的な指標付け
ある実施例では、ブール条件によりすべての次元において識別されるセルまたはセルの範囲を指標付けするために、より一般的な指標付け方法が提供される。たとえば、式:
【0285】
【数95】
【0286】
では、条件x2+y2=10は、半径10以内の円上の点を指定する。割当は次に、20の値を半径上のセルに割当てる。
【0287】
また、別の例は2次元(x,y)に対する識別マトリックスの作成にあり、それは以下のように表わされ得る。
【0288】
【数96】
【0289】
この例では、評価の順序は特定されておらず、このため非決定的な規則を以下の例のように書くことが可能である。
【0290】
【数97】
【0291】
この例は、セルが評価される順序に依存する異なる結果をもたらす。ある実施例では、ユーザがこの非決定性を制御するのを助けるため、ORDER BY能力が提供されて選択された行の順序付けを可能とする。たとえば、以下のシンタックスを用いて選択された行の順序付けを制御してもよい。
【0292】
【数98】
【0293】
一般添字を用いることにより、規則をその依存性に基づいた順序にソートすることが難しくなり得る。その結果、ユーザが一般添字を特定する場合、ユーザはORDERED(順序付けられた)セットの規則を特定しなければならない。なぜなら順序付けられていない規則は通常、特殊添字内でしか使用できないためである。一実施例において、以下はユーザによって特定されてもよいORDEREDセットの規則である。
【0294】
1. 2種類の添字、つまりWHEREで始まるもの(一般添字)とそうでないもの(特殊添字)がある。
【0295】
2. 特殊添字は、添字をAND(論理積)と組合せることにより一般添字と等価である。
【0296】
3. 規則の左辺は、規則が適用される1セットのセルを特定する。1セットのセルは、規則を任意のセルに対して実行する前に効果的に決定される(これは、修飾されたセルが検出されるやいなや規則を実行するにはいつが正当かを認識する最適化を妨げるものではない)。
【0297】
4. 次元の現在の値を戻す演算子が規則の右辺にある。
5. 集合への引数内にある右辺でのセル参照は、集合が適用される1セットのセルを特定する。
【0298】
6. 集合外の右辺でのいかなるセル参照も、単一のセルを参照しなければならず、さもなければ例外が生じる。
【0299】
7. 左辺での一般添字も規則内の順序付けに対してORDER BY句を提供し、そのため、2つ以上のセルを選択する規則の評価の順序を特定できる。
【0300】
8. 規則がORDEREDである場合、一般添字は左辺でのみ使用可能である。
ORDER BYを有するウィンドウ関数および集合
一実施例では、SQLは拡張されて、スプレッドシート句においてpercentile_contなどのORDER BYを用いてウィンドウ関数または集合を行なうためのシンタックスを提供する。たとえば、以下のシンタックスが挙げられる。
【0301】
【数99】
【0302】
また、たとえば一月にわたる和を移動するウィンドウ関数に対して可能なシンタックスは、以下のとおりである。
【0303】
【数100】
【0304】
ランクの例は以下のとおりである。
【0305】
【数101】
【0306】
ハードウェア例
図5は、この発明の一実施例が実現され得るコンピュータシステム500を示すブロック図である。コンピュータシステム500は、バス502または情報を通信するための他の通信メカニズムと、情報を処理するためにバス502と結合されたプロセッサ504とを含む。コンピュータシステム500はまた、プロセッサ504により実行されるべき命令および情報を記憶するためにバス502に結合された、ランダムアクセスメモリ(RAM)または他のダイナミック記憶デバイスといったメインメモリ506を含む。メインメモリ506は、プロセッサ504により実行されるべき命令の実行中に一時的変数または他の中間情報を記憶するためにも使用されてもよい。コンピュータシステム500は、スタティック情報およびプロセッサ504用の命令を記憶するためにバス502に結合された、読出専用メモリ(ROM)508または他のスタティック記憶デバイスをさらに含む。磁気ディスクまたは光ディスクなどの記憶デバイス510が、情報および命令を記憶するために設けられてバス502に結合されている。
【0307】
コンピュータシステム500は、バス502を介して、コンピュータユーザへ情報を表示するための陰極線管(CRT)などのディスプレイ512へ結合されてもよい。英数字およびその他のキーを含む入力装置514が、情報およびコマンド選択をプロセッサ504へ通信するためにバス502に結合されている。別の種類のユーザ入力装置としてマウス、トラックボール、またはカーソル方向キーなどのカーソル制御516があり、方向情報およびコマンド選択をプロセッサ504へ通信し、ディスプレイ512上のカーソルの動きを制御する。この入力装置は通常、2つの軸、つまり第1の軸(たとえばx)および第2の軸(たとえばy)において2つの自由度を有し、それによって装置は平面における位置を特定できる。
【0308】
この発明は、構造化問合せ言語(SQL)においてスプレッドシート様の演算を行なうためのコンピュータシステム500の使用に関する。この発明の一実施例によれば、構造化問合せ言語(SQL)におけるスプレッドシート様の演算は、プロセッサ504がメインメモリ506に含まれる1つまたはそれ以上の命令の1つまたはそれ以上のシーケンスを実行するのに応答して、コンピュータシステム500により行なわれる。そのような命令は、記憶デバイス510などの別のコンピュータ読取可能媒体からメインメモリ506へ読出されてもよい。メインメモリ506に含まれる命令のシーケンスの実行により、プロセッサ504はここに記載されたプロセスステップを行なうようになる。メインメモリ506に含まれる命令のシーケンスを実行するため、マルチプロセッシング構成の1つまたはそれ以上のプロセッサも採用されてもよい。代替的な実施例では、この発明を実現するため、ソフトウェア命令の代わりに、またはソフトウェア命令と組合せて、ハードワイヤード回路が用いられてもよい。このため、この発明の実施例はハードウェア回路およびソフトウェアのいかなる特定の組合せにも限定されない。
【0309】
ここで用いられる「コンピュータ読取可能媒体」という用語は、命令をプロセッサ504に提供して実行させることにかかわるあらゆる媒体を指す。そのような媒体は、不揮発性媒体、揮発性媒体、および伝送媒体を含む多くの形を取ってもよいが、これらに限定されない。不揮発性媒体はたとえば、記憶デバイス510などの光ディスクまたは磁気ディスクを含む。揮発性媒体は、メインメモリ506などのダイナミックメモリを含む。伝送媒体は、バス502を構成する配線を含む同軸ケーブル、銅線、および光ファイバを含む。伝送媒体はまた、電波および赤外線データ通信中に生成されるような音波または光波の形を取り得る。
【0310】
コンピュータ読取可能媒体の一般的な形態は、たとえば、フロッピー(R)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、または他のあらゆる磁気媒体、CD−ROM、他のあらゆる光媒体、パンチカード、紙テープ、孔のパターンを有する他のあらゆる物理的媒体、RAM、PROM、EPROM、FLASH−EPROM、他のあらゆるメモリチップまたはカートリッジ、以下に記載されるような搬送波、または、コンピュータがそれから読出可能な他のあらゆる媒体を含む。
【0311】
コンピュータ読取可能媒体のさまざまな形態は、1つまたはそれ以上の命令の1つまたはそれ以上のシーケンスをプロセッサ504へ搬送して実行させることに関与してもよい。たとえば、命令はまず遠隔コンピュータの磁気ディスク上を搬送されてもよい。遠隔コンピュータは命令をそのダイナミックメモリへロードし、モデムを用いて電話回線で命令を送ることができる。コンピュータシステム500近傍のモデムは、電話回線上のデータを受取り、赤外線送信器を用いてデータを赤外線信号に変換することができる。バス502に結合された赤外線検出器は、赤外線信号の中の搬送されたデータを受取り、データをバス502上へ置くことができる。バス502はデータをメインメモリ506へ搬送し,そこからプロセッサ504が命令を検索して実行する。メインメモリ506により受取られた命令は、プロセッサ504による実行の前または後のいずれかにおいて、任意に記憶デバイス510上に記憶されてもよい。
【0312】
コンピュータシステム500はまた、バス502に結合された通信インターフェイス518も含む。通信インターフェイス518は、ローカルネットワーク522に接続されたネットワークリンク520へ2方向データ通信結合を提供する。たとえば、通信インターフェイス518は、対応する種類の電話回線へデータ通信接続を提供する統合サービスデジタル通信網(ISDN)カードまたはモデムであってもよい。別の例として、通信インターフェイス518は、互換性のあるLANへデータ通信接続を提供するローカルエリアネットワーク(LAN)カードであってもよい。無線リンクも実現されてもよい。そのようないかなる実現においても、通信インターフェイス518は、さまざまな種類の情報を表わすデジタルデータストリームを搬送する電気、電磁、または光信号を送信し、受信する。
【0313】
ネットワークリンク520は通常、1つまたはそれ以上のネットワークを介して他のデータ装置にデータ通信を提供する。たとえば、ネットワークリンク520はローカルネットワーク522を介して、ホストコンピュータ524へ、またはインターネットサービスプロバイダ(ISP)526により動作されるデータ装置へ接続を提供してもよい。ISP526は次に、現在一般に「インターネット」528として言及されている全世界的パケットデータ通信ネットワークを介して、データ通信サービスを提供する。ローカルネットワーク522とインターネット528とは双方とも、デジタルデータストリームを搬送する電気、電磁、または光信号を使用する。コンピュータシステム500へ、およびコンピュータシステム500からデジタルデータを搬送する、さまざまなネットワークを通った信号、およびネットワークリンク520上にあり通信インターフェイス528を通った信号は、情報を伝送する搬送波の例示的な形態である。
【0314】
コンピュータシステム500は、ネットワーク、ネットワークリンク520、および通信インターフェイス518を介して、メッセージを送り、プログラムコードを含むデータを受取ることができる。インターネットの例では、サーバ530はアプリケーションプログラム用の要求されたコードを、インターネット528、ISP526、ローカルネットワーク522、および通信インターネット518を介して送信するかもしれない。この発明によれば、そのようなダウンロードされた1つのアプリケーションは、ここに記載のように構造化問合せ言語(SQL)においてスプレッドシート様の演算を行なうために提供される。
【0315】
受取られたコードは、受取時にプロセッサ504によって実行されてもよく、および/または、記憶デバイス510または他の不揮発性記憶装置に記憶されて後に実行されてもよい。このように、コンピュータシステム500は搬送波の形のアプリケーションコードを得てもよい。
【0316】
代替、拡張
リレーショナルデータベースシステムにおいてスプレッドシート様の演算を行なうために構造化問合せ言語(SQL)を拡張するための方法およびシステムを、ここに記載する。一実施例では、拡張されたSQLは問合せブロックの出力時に演算するスプレッドシート句を含む。ある実施例では、スプレッドシート句の演算は、具現化ビューを用いた書換え、指標選択、または結合順序などの問合せブロックのいかなる最適化をも妨げはしない。また、スプレッドシート句は問合せの最適化を提供し、句の不必要な部分の再計算を回避するかもしれない。
【0317】
たとえば、スプレッドシート句を有する内部問合せと内部問合せ内に押込まれ得るという限定を有する外部問合せとを仮定すると、スプレッドシート句はPARTITION BY句を用いてデータを区画化することができ、句の実行は区画にわたって並列して行なわれてもよい(つまり、各区画は単一のスレーブにマッピング可能となり、区画内の計算は他のスレーブからの情報を必要としない)。またこれに代えて、スプレッドシート句がPARTITION BY句を持たない場合(つまり1つの区画しか持たない場合)、それは並列化されない。しかし、このことは、行を句へ送る問合せを並列して実行することを妨げない。
【0318】
この発明のある実施例を記載するにあたり、説明のためにいくつかの図面が用いられた。しかし、この発明は図面に示されたようないかなる特定の状況にも限定されない。なぜならこの発明の範囲は、ここに記載されたメカニズムおよびプロセスが他のメカニズム、方法、プログラム、およびプロセスに利用できる他の状況および用途を含むためである。このため、明細書および図面は、したがって、限定的な意味というよりもむしろ例示的な意味において考えられるべきである。たとえば、SQLにおけるスプレッドシート様の算出を行なうための例が記載されたが、この発明の実施例は特定のデータベースおよび/または問合せ言語に限定されない。たとえば、ある実施例では、記載された特徴はXMLなどの他の言語においてスプレッドシート様の算出を行なうために実現されてもよい。このため、この発明は、ここに記載されたメカニズムおよびプロセスが他のメカニズム、方法、プログラム、およびプロセスに利用できる他の状況および用途を含む。
【0319】
また、この開示では、あるプロセスステップが特定の順序で記載され、英字および英数字のラベルを用いてあるステップを識別している。この開示に特に述べられていない限り、この発明の実施例はそのようなステップを実行するいかなる特定の順序にも限定されない。特に、ラベルは単にステップを便利に識別するために用いられており、そのようなステップを実行する特定の順序を含意、特定、または要求する意図はない。
【図面の簡単な説明】
【図1】 スプレッドシート句の適用前にあった表100を示す図である。
【図2】 スプレッドシート句の適用後における、新たに追加された行情報を例示する表200を示す図である。
【図3】 スプレッドシート句の適用前にあった表300を示す図である。
【図4】 スプレッドシート句の適用後における、新たに追加された行情報を例示する表400を示す図である。
【図5】 或る実施例が実行され得るコンピュータシステムを示すブロック図である。
Claims (36)
- データベース問合せ演算を処理するための、コンピュータにより実現される方法であって、
データベースサーバが、第1の配列参照を含むデータベース問合せを受取るステップを含み、
前記データベース問合せは、データベース言語に適合した表現式であり、
前記データベースサーバは、1つ以上のコンピュータで動いており、
第1の配列参照は、1つ以上の指標を有する配列のセルとして、リレーショナル構造の或る行のうちの或る列をアドレス指定しており、
前記1つ以上の指標のうちの各指標は、前記或る列とは異なる別の列に対応しており、
前記1つ以上の指標のうちの第1の指標は、第1の列に対応しており、
第1の配列参照は、第1の指標のための第1の指標式を特定し、
第1の配列参照の第1の指標式は、前記第1の列における第1の値に対応しており、
データベース問合せは、第1の配列参照に基づいて演算を特定し、前記方法はさらに、
前記データベース問合せを受取るのに応答して、データベースサーバが、前記データベース問合せで特定された前記演算を行なうことによってデータベース問合せを実行するステップを含む、方法。 - 1つ以上の指標は第2の指標を含み、
第1の配列参照は、第2の指標のための第2の指標式を含む、請求項1に記載の方法。 - 1つ以上のプロセッサによって実行されると1つ以上のプロセッサに請求項2に記載の方法を行なわせる1つ以上の命令シーケンスを記憶している、コンピュータ読取可能媒体。
- 第1の指標式はブール式である、請求項1に記載の方法。
- 1つ以上のプロセッサによって実行されると1つ以上のプロセッサに請求項1に記載の方法を行なわせる1つ以上の命令シーケンスを記憶している、コンピュータ読取可能媒体。
- 第1の指標式は値の範囲を識別する、請求項1に記載の方法。
- 1つ以上のプロセッサによって実行されると1つ以上のプロセッサに請求項4に記載の方法を行なわせる1つ以上の命令シーケンスを記憶している、コンピュータ読取可能媒体。
- 第1の指標式は、第1の列における多数の値に対応している、請求項1に記載の方法。
- 前記多数の値の各値は、前記リレーショナル構造のそれぞれの行に記憶され、
前記データベース問合せで特定された前記演算を行なうステップは、前記各値について前記演算を行なうステップを含む、請求項8に記載の方法。 - 1つ以上のプロセッサによって実行されると1つ以上のプロセッサに請求項9に記載の方法を行なわせる1つ以上の命令シーケンスを記憶している、コンピュータ読取可能媒体。
- 1つ以上のプロセッサによって実行されると1つ以上のプロセッサに請求項8に記載の方法を行なわせる1つ以上の命令シーケンスを記憶している、コンピュータ読取可能媒体。
- 第1の配列参照のための第1の指標式は、値の範囲を特定するルーピングコンストラクトを含む、請求項1に記載の方法。
- 1つ以上のプロセッサによって実行されると1つ以上のプロセッサに請求項12に記載の方法を行なわせる1つ以上の命令シーケンスを記憶している、コンピュータ読取可能媒体。
- データベース問合せは、配列への第2の配列参照を含み、
第2の配列参照は、第1の指標のための第1の指標式を含む、請求項1に記載の方法。 - 第2の配列参照の第1の指標式は、第1の配列参照の第1の指標式に関連するやり方で指標値をアドレス指定する、請求項14に記載の方法。
- 1つ以上のプロセッサによって実行されると1つ以上のプロセッサに請求項15に記載の方法を行なわせる1つ以上の命令シーケンスを記憶している、コンピュータ読取可能媒体。
- 1つ以上のプロセッサによって実行されると1つ以上のプロセッサに請求項14に記載の方法を行なわせる1つ以上の命令シーケンスを記憶している、コンピュータ読取可能媒体。
- 演算は、前記或る行の或る列への更新演算である、請求項1に記載の方法。
- 1つ以上のプロセッサによって実行されると1つ以上のプロセッサに請求項18に記載の方法を行なわせる1つ以上の命令シーケンスを記憶している、コンピュータ読取可能媒体。
- 演算は、前記或る行の挿入演算である、請求項1に記載の方法。
- 1つ以上のプロセッサによって実行されると1つ以上のプロセッサに請求項20に記載の方法を行なわせる1つ以上の命令シーケンスを記憶している、コンピュータ読取可能媒体。
- データベース問合せは、割当ステートメントを特定することによって、第1の配列参照に基づいて演算を特定し、
データベース問合せは、配列への第2の配列参照を含み、
割当ステートメントは、第1の配列参照によって表わされるセルへ割当てる値を規定する割当式を含み、
割当式は第2の配列参照を含む、請求項1に記載の方法。 - 割当式は割当演算子の右側にあり、第1の配列参照は割当演算子の左側にある、請求項22に記載の方法。
- 1つ以上のプロセッサによって実行されると1つ以上のプロセッサに請求項23に記載の方法を行なわせる1つ以上の命令シーケンスを記憶している、コンピュータ読取可能媒体。
- 第1の指標式は、第1の列における多数の値に対応しており、
前記多数の値の各値は、前記リレーショナル構造のそれぞれの行に記憶され、
前記データベース問合せで特定された前記演算を行なうステップは、前記多数の値の前記各値について、前記各値のそれぞれの行の第1の列への割当演算を行なうステップを含む、請求項22に記載の方法。 - 1つ以上のプロセッサによって実行されると1つ以上のプロセッサに請求項25に記載の方法を行なわせる1つ以上の命令シーケンスを記憶している、コンピュータ読取可能媒体。
- 第2の配列参照の第1の指標式は、第1の配列参照の第1の指標式に関連するやり方で指標値をアドレス指定する、請求項22に記載の方法。
- 第1の配列参照のための第1の指標式は、第1の列における値の範囲に対応するルーピングコンストラクトを含む、請求項27に記載の方法。
- 1つ以上のプロセッサによって実行されると1つ以上のプロセッサに請求項28に記載の方法を行なわせる1つ以上の命令シーケンスを記憶している、コンピュータ読取可能媒体。
- 1つ以上のプロセッサによって実行されると1つ以上のプロセッサに請求項27に記載の方法を行なわせる1つ以上の命令シーケンスを記憶している、コンピュータ読取可能媒体。
- 1つ以上のプロセッサによって実行されると1つ以上のプロセッサに請求項22に記載の方法を行なわせる1つ以上の命令シーケンスを記憶している、コンピュータ読取可能媒体。
- 前記データベース問合せは、リレーショナル構造の第1の列を前記第1の指標に相互に関連付ける、請求項1に記載の方法。
- 1つ以上のプロセッサによって実行されると1つ以上のプロセッサに請求項32に記載
の方法を行なわせる1つ以上の命令シーケンスを記憶している、コンピュータ読取可能媒体。 - 前記データベース問合せは、リレーショナル構造の或る列を配列の測定値に相互に関連付ける、請求項1に記載の方法。
- 1つ以上のプロセッサによって実行されると1つ以上のプロセッサに請求項34に記載の方法を行なわせる1つ以上の命令シーケンスを記憶している、コンピュータ読取可能媒体。
- 1つ以上のプロセッサによって実行されると1つ以上のプロセッサに請求項6に記載の方法を行なわせる1つ以上の命令シーケンスを記憶している、コンピュータ読取可能媒体。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US21885100P | 2000-07-13 | 2000-07-13 | |
| PCT/US2001/041094 WO2002006999A2 (en) | 2000-07-13 | 2001-06-20 | Performing spreadsheet-like calculations in a database system |
Publications (3)
| Publication Number | Publication Date |
|---|---|
| JP2004504672A JP2004504672A (ja) | 2004-02-12 |
| JP2004504672A5 JP2004504672A5 (ja) | 2006-04-20 |
| JP4465147B2 true JP4465147B2 (ja) | 2010-05-19 |
Family
ID=22816749
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2002512841A Expired - Lifetime JP4465147B2 (ja) | 2000-07-13 | 2001-06-20 | データベースシステムにおいてスプレッドシートの算出を行なう方法 |
Country Status (9)
| Country | Link |
|---|---|
| US (1) | US6985895B2 (ja) |
| EP (1) | EP1323066B1 (ja) |
| JP (1) | JP4465147B2 (ja) |
| AT (1) | ATE373272T1 (ja) |
| AU (2) | AU2296302A (ja) |
| CA (1) | CA2415183C (ja) |
| DE (1) | DE60130475T2 (ja) |
| HK (1) | HK1052777B (ja) |
| WO (1) | WO2002006999A2 (ja) |
Families Citing this family (60)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7228300B2 (en) | 1998-10-05 | 2007-06-05 | Oracle International Corporation | Caching the results of security policy functions |
| US8275974B2 (en) * | 2001-01-16 | 2012-09-25 | Outlooksoft Corporation | Systems and methods providing dynamic spreadsheet functionality |
| US7251776B2 (en) * | 2001-07-13 | 2007-07-31 | Netview Technologies, Inc. | System and method for efficiently and flexibly utilizing spreadsheet information |
| US6907422B1 (en) * | 2001-12-18 | 2005-06-14 | Siebel Systems, Inc. | Method and system for access and display of data from large data sets |
| DE10300334A1 (de) * | 2003-01-02 | 2004-07-22 | Kalsbach, Jörg | Verfahren und Datenablage zur Auswertung von Massendaten |
| EP1618491B1 (en) * | 2003-04-18 | 2006-11-15 | International Business Machines Corporation | System and method in a data table for creating recursive scalable template instances |
| US7334064B2 (en) * | 2003-04-23 | 2008-02-19 | Dot Hill Systems Corporation | Application server blade for embedded storage appliance |
| US7243096B2 (en) * | 2003-04-29 | 2007-07-10 | International Business Machines Corporation | Method and system in an electronic data table for managing order oriented criteria |
| US7454416B2 (en) * | 2003-04-30 | 2008-11-18 | International Business Machines Corporation | Method for aggregation subquery join elimination |
| US7530012B2 (en) * | 2003-05-22 | 2009-05-05 | International Business Machines Corporation | Incorporation of spreadsheet formulas of multi-dimensional cube data into a multi-dimensional cube |
| CA2429910A1 (en) * | 2003-05-27 | 2004-11-27 | Cognos Incorporated | System and method of query transformation |
| US7530013B2 (en) * | 2003-06-13 | 2009-05-05 | Ultimate Risk Solutions, Llc | Optimizer of interdependent information |
| US7233956B2 (en) * | 2003-08-12 | 2007-06-19 | International Business Machines Corporation | Method and apparatus for data migration between databases |
| US7251650B2 (en) * | 2003-08-25 | 2007-07-31 | International Business Machines Corporation | Method, system, and article of manufacture for processing updates to insert operations |
| US7979384B2 (en) * | 2003-11-06 | 2011-07-12 | Oracle International Corporation | Analytic enhancements to model clause in structured query language (SQL) |
| FR2864275A1 (fr) * | 2003-12-19 | 2005-06-24 | Thales Sa | Procede de mise a jour d'une base de donnees creee avec un tableur |
| US7676453B2 (en) * | 2004-04-22 | 2010-03-09 | Oracle International Corporation | Partial query caching |
| US7664804B2 (en) * | 2004-06-01 | 2010-02-16 | Microsoft Corporation | Method, system, and apparatus for exposing workbook ranges as data sources |
| US7707490B2 (en) * | 2004-06-23 | 2010-04-27 | Microsoft Corporation | Systems and methods for flexible report designs including table, matrix and hybrid designs |
| US20060026498A1 (en) * | 2004-07-30 | 2006-02-02 | Microsoft Corporation | Systems and methods for controlling report properties based on aggregate scope |
| US7559023B2 (en) | 2004-08-27 | 2009-07-07 | Microsoft Corporation | Systems and methods for declaratively controlling the visual state of items in a report |
| US20060085386A1 (en) * | 2004-10-19 | 2006-04-20 | Microsoft Corporation | Two pass calculation to optimize formula calculations for a spreadsheet |
| US7590972B2 (en) * | 2004-10-28 | 2009-09-15 | Cogency Software, Inc. | Role-oriented development environment |
| US7779008B2 (en) * | 2005-02-16 | 2010-08-17 | Oracle International Corporation | Parallel partition-wise aggregation |
| US20080010237A1 (en) * | 2006-07-06 | 2008-01-10 | American Express Travel Related Services Company, Inc. | System and Method for Managing Multi-Dimensional Data |
| US20080140623A1 (en) * | 2006-12-11 | 2008-06-12 | Microsoft Corporation | Recursive reporting via a spreadsheet |
| US7779031B2 (en) * | 2007-02-15 | 2010-08-17 | International Business Machines Corporation | Multidimensional query simplification using data access service having local calculation engine |
| US20080222601A1 (en) * | 2007-03-06 | 2008-09-11 | Cauvin Kenneth L | Method and system for processing data contained within COBOL or PL/I record description entries and storage medium for storing instructions which effectuate the method |
| US9715710B2 (en) * | 2007-03-30 | 2017-07-25 | International Business Machines Corporation | Method and system for forecasting using an online analytical processing database |
| US20080294612A1 (en) * | 2007-05-22 | 2008-11-27 | It-Workplace | Method For Generating A Representation Of A Query |
| US7747657B2 (en) * | 2007-06-08 | 2010-06-29 | International Business Machines Corporation | Mapping hierarchical data from a query result into a tabular format with jagged rows |
| US20090108858A1 (en) * | 2007-10-24 | 2009-04-30 | Industrial Technology Research Institute | Methods and systems for calibrating rc circuits |
| US7836100B2 (en) * | 2007-10-26 | 2010-11-16 | Microsoft Corporation | Calculating and storing data structures including using calculated columns associated with a database system |
| US8140549B2 (en) | 2007-10-31 | 2012-03-20 | Juan Carlos Barinaga | Methods and arrangements of processing and presenting information |
| US9164978B2 (en) * | 2008-06-17 | 2015-10-20 | Microsoft Technology Licensing, Llc | Identifying objects within a multidimensional array |
| US9424287B2 (en) * | 2008-12-16 | 2016-08-23 | Hewlett Packard Enterprise Development Lp | Continuous, automated database-table partitioning and database-schema evolution |
| AU2010302939B2 (en) * | 2009-09-29 | 2013-06-06 | Zap Holdings Limited | A content based approach to extending the form and function of a business intelligence system |
| US20110161796A1 (en) * | 2009-12-31 | 2011-06-30 | Edward Charles Laikin | FormDB: a process to create a forms database in Excel without user programming |
| US9069747B2 (en) | 2010-08-26 | 2015-06-30 | Sap Se | Methods, apparatus, systems and computer readable mediums for use in association with electronic spreadsheets |
| US8479089B2 (en) * | 2011-03-08 | 2013-07-02 | Certusoft, Inc. | Constructing and applying a constraint-choice-action matrix for decision making |
| US11093702B2 (en) | 2012-06-22 | 2021-08-17 | Microsoft Technology Licensing, Llc | Checking and/or completion for data grids |
| US10685062B2 (en) | 2012-12-31 | 2020-06-16 | Microsoft Technology Licensing, Llc | Relational database management |
| US9626397B2 (en) * | 2013-02-13 | 2017-04-18 | Business Objects Software Limited | Discounted future value operations on a massively parallel processing system and methods thereof |
| WO2016183544A1 (en) | 2015-05-14 | 2016-11-17 | Walleye Software, LLC | System performance logging |
| US10521431B2 (en) * | 2016-05-09 | 2019-12-31 | Sap Se | Relational conversion of multiprovider operations in a calculation scenario for executing a query |
| US10102241B2 (en) * | 2016-05-20 | 2018-10-16 | Microsoft Technology Licensing, Llc | Detecting errors in spreadsheets |
| US10366082B2 (en) * | 2016-12-09 | 2019-07-30 | Oracle International Corporation | Parallel processing of queries with inverse distribution function |
| US11222172B2 (en) | 2017-05-18 | 2022-01-11 | Lakebolt Research | System and method for reactive computing |
| US11182548B2 (en) | 2017-07-10 | 2021-11-23 | Adaptam Inc. | Methods and systems for providing selective multi-way replication and atomization of cell blocks and other elements in spreadsheets and presentations |
| US10866943B1 (en) | 2017-08-24 | 2020-12-15 | Deephaven Data Labs Llc | Keyed row selection |
| US11036929B2 (en) | 2017-11-15 | 2021-06-15 | Adaptam Inc. | Methods and systems for connecting a spreadsheet to external data sources with ordered formulaic use of data retrieved |
| US11416262B1 (en) * | 2018-05-22 | 2022-08-16 | Workday, Inc. | Systems and methods for improving computational speed of planning by enabling interactive processing in hypercubes |
| US20210393574A1 (en) | 2018-11-12 | 2021-12-23 | Hanyi Bio-Technology (Beijing) Co., Ltd. | Use of cannabinoid compound in neurodermatitis treatment |
| US11086894B1 (en) | 2019-06-25 | 2021-08-10 | Amazon Technologies, Inc. | Dynamically updated data sheets using row links |
| US11194793B1 (en) | 2019-06-25 | 2021-12-07 | Amazon Technologies, Inc. | Dynamically materialized views for sheets based data |
| US11836444B2 (en) | 2020-06-26 | 2023-12-05 | Adaptam Inc. | Methods and systems for constructing a complex formula in a spreadsheet cell |
| CN112631731B (zh) * | 2020-12-30 | 2024-12-20 | 平安证券股份有限公司 | 数据查询方法、装置、电子设备及存储介质 |
| CN112925800A (zh) * | 2021-02-26 | 2021-06-08 | 平安普惠企业管理有限公司 | 数据依赖判断方法、装置、计算机设备及存储介质 |
| US11977835B2 (en) | 2021-05-24 | 2024-05-07 | Adaptam Inc. | Method and system for spreadsheet error identification and avoidance |
| US11880381B1 (en) | 2023-07-13 | 2024-01-23 | Snowflake Inc. | Notebooks with predictable behavior |
Family Cites Families (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5319777A (en) * | 1990-10-16 | 1994-06-07 | Sinper Corporation | System and method for storing and retrieving information from a multidimensional array |
| US5359724A (en) * | 1992-03-30 | 1994-10-25 | Arbor Software Corporation | Method and apparatus for storing and retrieving multi-dimensional data in computer memory |
| JP4121566B2 (ja) * | 1993-03-23 | 2008-07-23 | 株式会社野村総合研究所 | データベースからのデータ抽出方法 |
| EP0667586A3 (en) * | 1994-02-14 | 1996-08-28 | Digital Equipment Corp | Database creation system. |
| US5978796A (en) * | 1997-06-30 | 1999-11-02 | International Business Machines Corporation | Accessing multi-dimensional data by mapping dense data blocks to rows in a relational database |
| US5943668A (en) * | 1997-06-30 | 1999-08-24 | International Business Machines Corporation | Relational emulation of a multi-dimensional database |
| AU8496398A (en) * | 1997-07-18 | 1999-02-10 | Net Exchange, Inc. | Apparatus and method for effecting correspondent-centric electronic mail |
| JPH11161656A (ja) * | 1997-11-27 | 1999-06-18 | Asahi Chem Ind Co Ltd | データベース検索・抽出システムおよびデータベース検索・抽出用制御プログラムを記録した記録媒体 |
| US6298342B1 (en) | 1998-03-16 | 2001-10-02 | Microsoft Corporation | Electronic database operations for perspective transformations on relational tables using pivot and unpivot columns |
| US6317750B1 (en) * | 1998-10-26 | 2001-11-13 | Hyperion Solutions Corporation | Method and apparatus for accessing multidimensional data |
| US6408292B1 (en) * | 1999-08-04 | 2002-06-18 | Hyperroll, Israel, Ltd. | Method of and system for managing multi-dimensional databases using modular-arithmetic based address data mapping processes on integer-encoded business dimensions |
| US7761403B2 (en) | 2001-06-20 | 2010-07-20 | Oracle International Corporation | Run-time optimizations of queries with SQL spreadsheet |
| US7177855B2 (en) | 2001-06-20 | 2007-02-13 | Oracle International Corporation | Compile-time optimizations of queries with SQL spreadsheet |
-
2001
- 2001-06-20 JP JP2002512841A patent/JP4465147B2/ja not_active Expired - Lifetime
- 2001-06-20 CA CA2415183A patent/CA2415183C/en not_active Expired - Lifetime
- 2001-06-20 AU AU2296302A patent/AU2296302A/xx active Pending
- 2001-06-20 AU AU2002222963A patent/AU2002222963B2/en not_active Expired
- 2001-06-20 WO PCT/US2001/041094 patent/WO2002006999A2/en not_active Ceased
- 2001-06-20 AT AT01984272T patent/ATE373272T1/de not_active IP Right Cessation
- 2001-06-20 EP EP01984272A patent/EP1323066B1/en not_active Expired - Lifetime
- 2001-06-20 US US09/886,839 patent/US6985895B2/en not_active Expired - Lifetime
- 2001-06-20 HK HK03105068.3A patent/HK1052777B/en not_active IP Right Cessation
- 2001-06-20 DE DE60130475T patent/DE60130475T2/de not_active Expired - Lifetime
Also Published As
| Publication number | Publication date |
|---|---|
| JP2004504672A (ja) | 2004-02-12 |
| AU2002222963B2 (en) | 2007-05-10 |
| HK1052777B (en) | 2007-11-09 |
| CA2415183C (en) | 2011-01-11 |
| DE60130475T2 (de) | 2008-06-19 |
| US20020059203A1 (en) | 2002-05-16 |
| US6985895B2 (en) | 2006-01-10 |
| HK1052777A1 (en) | 2003-09-26 |
| DE60130475D1 (de) | 2007-10-25 |
| WO2002006999A2 (en) | 2002-01-24 |
| WO2002006999A3 (en) | 2003-03-13 |
| AU2296302A (en) | 2002-01-30 |
| EP1323066B1 (en) | 2007-09-12 |
| CA2415183A1 (en) | 2002-01-24 |
| EP1323066A2 (en) | 2003-07-02 |
| ATE373272T1 (de) | 2007-09-15 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4465147B2 (ja) | データベースシステムにおいてスプレッドシートの算出を行なう方法 | |
| AU2002222963A1 (en) | Performing spreadsheet-like calculations in a database system | |
| US7761403B2 (en) | Run-time optimizations of queries with SQL spreadsheet | |
| US7809712B2 (en) | Compile-time optimizations of queries with SQL spreadsheet | |
| US10460277B2 (en) | Business intelligence language macros | |
| US5724569A (en) | Apparatus for evaluating database query performance having libraries containing information for modeling the various system components of multiple systems | |
| US6915291B2 (en) | Object-oriented query execution data structure | |
| US7366730B2 (en) | Registration of solved cubes within a relational database management system | |
| US6424967B1 (en) | Method and apparatus for querying a cube forest data structure | |
| US8156145B2 (en) | Analytic enhancements to model clause in structured query language (SQL) | |
| US20110113025A1 (en) | Systems and Methods for Data Storage and Retrieval Using Algebraic Relations Composed from Query Language Statements | |
| US20120150922A1 (en) | Extensible rdf databases | |
| WO2021248319A1 (en) | Database management system and method for graph view selection for relational-graph database | |
| US20070078826A1 (en) | Analytic enhancements to model clause in structured query language (SQL) | |
| US11036730B2 (en) | Business intelligence language type representing result structure | |
| Pokorny et al. | Big graph storage, processing and visualization | |
| Zykin et al. | Technology of separate formation of multidimensional data with lists of measure values | |
| Holubová et al. | Evolution Management | |
| Huang | Modern Analytics over Wide-Tables | |
| Kaufmann et al. | Database Languages | |
| KR20250058696A (ko) | 개선된 질의 성능을 위한 관계형 서브트리 매칭 | |
| Wang | LAD: A Locality-Aware Data Science Framework | |
| Leyshock | Optimizing Data Movement in Hybrid Analytic Systems | |
| Liu et al. | Dynamic information integration using object deputy model | |
| Zinke | Relational database: A practical foundation |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040415 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060301 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060301 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081224 |
|
| A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20090323 |
|
| A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20090330 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090424 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090714 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091112 |
|
| A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20091130 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100126 |
|
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100222 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130226 Year of fee payment: 3 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4465147 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130226 Year of fee payment: 3 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140226 Year of fee payment: 4 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| EXPY | Cancellation because of completion of term |
