IP Library Granted Patent US 9,824,118
Granted Patent B2
US 9,824,118 · App. 13/839,559 · Granted Nov 21, 2017

Querying one or more databases

Inventors: Lloyd Tabb (Santa Cruz, CA); Benjamin Porterfield (San Francisco, CA)
Assignee: Looker Data Sciences, Inc.
G06F17/30424
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,824,118
App. No.
13/839,559
Granted
Nov 21, 2017
Kind
B2
Abstract

A system and method for querying a database is disclosed. Database tables are represented as nodes in a model. Each node is associated with at least one leaf. The nodes can be interconnected with one another. A model input is received by a server from a client device, the model input including a starting node, one or more leaves, and optionally one or more filters. A query is executed against a database based on the model input. A subsequent query can be generated by selecting a result of the first query. Also disclosed is a technique for cancelling queries.

Claims (34)

1. A method for querying one or more databases, comprising:

receiving, at a computing device, a selection of a starting node, wherein the starting node represents a database table and is included in a model that corresponds to one or more database tables;

receiving, at the computing device, a selection of a first set of one or more leaves, wherein each leaf is connected to a node in the model and represents a column in a database table represented by the node to which the leaf is connected;

generating a first database query based on the starting node and the first set of leaves;

providing a first results output based on the first database query executing on the one or more databases;

receiving a selection of a result in the first results output;

generating a second database query based on the selection of the result in the first results output, wherein the second database query is associated with a detail set associated with the result, wherein the detail set associated with the result identifies a second starting node and a second set of leaves, wherein the second starting node represents a database table and each leaf of the second set of leaves is connected to a node in the model and represents a column in a database table represented by the node to which the leaf is connected; wherein generating the second database query comprises generating the second database query based on the second starting node and the second set of leaves, and wherein the second database query is filtered by one or more values included in a row in the first results output corresponding to the selected result; and

providing a second results output based on the second database query executing on the one or more databases.

2. The method according to claim 1 , wherein the one or more databases are relational databases and the first and second database queries are SQL (Structured Query Language) queries.

3. The method according to claim 1 , wherein each leaf in the first set of leaves is associated with one of a first leaf type or a second leaf type.

4. The method according to claim 3 , wherein the first results output includes a column for each leaf in the first set and a separate row for each unique tuple of values for leaves associated with the first leaf type in the first set.

5. The method according to claim 4 , wherein, for each column in the first results output corresponding to a leaf associated with the second leaf type, an aggregate value is provided in each row of the column based on data in the row.

6. The method according to claim 5 , wherein the aggregate value is based on computing a sum, a count, an average, a minimum, or a maximum of one or more values in the row.

7. The method according to claim 1 , wherein the model includes a plurality of interconnected nodes, wherein each node is connected to one or more leaves.

8. The method according to claim 7 , wherein each leaf in the first set is connected to the starting node or another node in the plurality of interconnected nodes.

9. The method according to claim 1 , wherein generating the first database query comprises:

generating five data sets to store database query fragments;

for each leaf in the first set, adding one or more database query fragments to one or more of the five data sets based on attributes of the leaf; and

constructing the first database query by appending together the database query fragments from the five data sets.

10. The method according to claim 9 , wherein the first database query comprises an SQL (Structured Query Language) query, and the five data sets corresponds to SQL commands for SELECT, JOIN, WHERE, GROUP BY, and HAVING.

11. The method according to claim 1 , wherein the one or more databases comprise relational databases, non-relational databases, file-based databases, and/or non-file-based databases.

12. The method according to claim 1 , wherein the first results output is sorted according to one of the leaves in the first set.

13. A method for querying one or more databases, comprising:

receiving, at a computing device, a selection of a starting node, wherein the

starting node is included in a model that corresponds to one or more database tables;

receiving, at the computing device, a selection of a first set of one or more leaves, wherein each leaf is connected to a node in the model;

generating a first database query based on the starting node and the first set of leaves, wherein generating the first database query comprises

generating five data sets to store database query fragments,

for each leaf in the first set, adding one or more database query fragments to one or more of the five data sets based on attributes of the leaf, and

constructing the first database query by appending together the database query fragments from the five data sets;

providing a first results output based on the first database query executing on the one or more databases;

receiving a selection of a result in the first results output;

generating a second database query based on the selection of the result in the first results output, wherein the second database query is associated with a detail set associated with the result; and

providing a second results output based on the second database query executing on the one or more databases.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 23, 2020
From: LOOKER DATA SCIENCES, INC.
To: GOOGLE LLC
Reel/Frame 053854/0647 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 22, 2013
From: PORTERFIELD, BENJAMIN
To: LOOKER DATA SCIENCES INC.
Reel/Frame 031452/0557 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 19, 2013
From: TABB, LLOYD
To: LOOKER DATA SCIENCES INC.
Reel/Frame 030040/0324 →
Continuity (1)
Related Publication 20140280326A1 · Sep 18, 2014