IP Library Granted Patent US 12,373,467
Granted Patent B2
US 12,373,467 · App. 18/424,619 · Granted Jul 29, 2025

Query semantics for multi-fact data model analysis using shared dimensions

Inventors: Thomas Nhan (Seattle, WA); Tyler Martin (Seattle, WA); Franz Gustave Amador (Seattle, WA); Marian Simo Boitel (Seattle, WA); Jeffrey Mark Booth, Jr. (Seattle, WA); Russell Steven Paul-Jones (Duvall, WA); Jinbo Feng (Medford, MA)
Assignee: Salesforce, Inc.
G06F16/287G06F3/04812G06F3/04817G06F16/2246G06F16/2453G06F16/24535G06F16/2456G06F16/9027
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 12,373,467
App. No.
18/424,619
Granted
Jul 29, 2025
Kind
B2
Abstract

A computing device receives user input specifying a first dimension data field and a second dimension data field. The device constructs a dimension subquery according to characteristics of the first dimension data field, the second dimension data field, a first object to which the first dimension data field belongs, and/or a second object to which the second dimension data field belongs, including determining a join type for combining (i) first data rows that include data values of the first dimension data field and (ii) second data rows that include data values of the second dimension data field. The device constructs the dimension subquery according to the determined join type, and executes the dimension subquery to retrieve first tuples. The device constructs measure subqueries and executes the measure subqueries to retrieve second tuples. The device forms extended tuples, and generates and displays the data visualization according to the extended tuples.

Claims (91)

1. A method for generating data visualizations using multi-fact object models, comprising:

at computing device having a display, one or more processors and memory storing one or more programs configured for execution by the one or more processors:

receiving a first user input specifying a first dimension data field and a second dimension data field for generating a first data visualization;

determining that the first dimension data field belongs to a first object of an object model and the second dimension data field belongs to a second object of the object model, distinct from the first object;

constructing a dimension subquery according to characteristics of the first dimension data field, the second dimension data field, the first object, and the second object, including:

determining a join type for combining (i) first data rows that include data values of the first dimension data field and (ii) second data rows that include data values of the second dimension data field; and

constructing the dimension subquery according to the determined join type, the dimension subquery referencing the first object and the second object;

executing the dimension subquery against one or more data sources corresponding to the first dimension data field and the second dimension data field to retrieve first tuples that comprise unique ordered combinations of data values for the first dimension data field and the second dimension data field;

constructing one or more measure subqueries, each of the measure subqueries referencing one or more measure data fields in the object model;

executing the one or more measure subqueries to retrieve second tuples;

forming extended tuples by combining the retrieved first tuples and the retrieved second tuples; and

generating and displaying the first data visualization according to the extended tuples.

2. The method of claim 1 , wherein constructing the dimension subquery according to the characteristics of the first dimension data field, the second dimension data field, the first object, and the second object includes:

in accordance with a determination that (i) the first dimension data field can be traced to one root object and (ii) the second dimension data field can be traced to the same root object:

combining data columns of the first dimension data field and the second dimension data field using an inner join.

3. The method of claim 1 , wherein constructing the dimension subquery according to the characteristics of the first dimension data field, the second dimension data field, the first object, and the second object includes:

in accordance with a determination that (i) the first dimension data field can be traced to a first root object and (ii) the second dimension data field can be traced to a second root object that is distinct from the first root object:

forming a first object tree that includes the first object and the first root object, and combining data columns from objects of the first object tree according to data values of the first dimension data field using an inner join to form a first table;

forming a second object tree that includes the second object and the second root object, and combining data columns from objects of the second object tree according to data values of the second dimension data field using an inner join to form a second table; and

combining data columns of the first table and the second table via a cross join.

4. The method of claim 1 , wherein constructing the dimension subquery according to the characteristics of the first dimension data field, the second dimension data field, the first object, and the second object includes:

in accordance with a determination that the first dimension data field and the second dimension data field belong to the same object that is shared by two or more root objects:

combining data columns of the first dimension data field and the second dimension data field using an inner join.

5. The method of claim 1 , wherein constructing the dimension subquery according to the characteristics of the first dimension data field, the second dimension data field, the first object, and the second object includes:

in accordance with a determination that (i) the first object is shared by a first set of root objects and (ii) the second object is shared by a second set of root objects:

combining data columns of the first dimension data field and the second dimension data field using a cross join.

6. The method of claim 1 , wherein constructing the dimension subquery according to the characteristics of the first dimension data field, the second dimension data field, the first object, and the second object includes:

in accordance with a determination that (i) the first object is a first root object, (ii) the second object can be traced to the first root object, and the (iii) the second dimension data field is not shared by another root object:

combining data columns of the first dimension data field and the second dimension data field using an inner join.

7. The method of claim 1 , wherein at least one of the first dimension data field or the second dimension data field is a geographic data field.

8. The method of claim 1 , wherein at least one of the first dimension data field or the second dimension data field is a date/time data field.

9. A computing device, comprising:

one or more processors;

memory;

a display; and

one or more programs stored in the memory and configured for execution by the one or more processors, the one or more programs comprising instructions for:

receiving a first user input specifying a first dimension data field and a second dimension data field for generating a first data visualization;

determining that the first dimension data field belongs to a first object of an object model and the second dimension data field belongs to a second object of the object model, distinct from the first object;

constructing a dimension subquery according to characteristics of the first dimension data field, the second dimension data field, the first object, and the second object, including:

determining a join type for combining (i) first data rows that include data values of the first dimension data field and (ii) second data rows that include data values of the second dimension data field; and

constructing the dimension subquery according to the determined join type, the dimension subquery referencing the first object and the second object;

executing the dimension subquery against one or more data sources corresponding to the first dimension data field and the second dimension data field to retrieve first tuples that comprise unique ordered combinations of data values for the first dimension data field and the second dimension data field;

constructing one or more measure subqueries, each of the measure subqueries referencing one or more measure data fields in the object model;

executing the one or more measure subqueries to retrieve second tuples;

forming extended tuples by combining the retrieved first tuples and the retrieved second tuples; and

generating and displaying the first data visualization according to the extended tuples.

10. The computing device of claim 9 , wherein the instructions for constructing the dimension subquery according to the characteristics of the first dimension data field, the second dimension data field, the first object, and the second object include instructions for:

in accordance with a determination that (i) the first dimension data field can be traced to one root object and (ii) the second dimension data field can be traced to the same root object:

combining data columns of the first dimension data field and the second dimension data field using an inner join.

11. The computing device of claim 9 , wherein the instructions for constructing the dimension subquery according to the characteristics of the first dimension data field, the second dimension data field, the first object, and the second object include instructions for:

in accordance with a determination that (i) the first dimension data field can be traced to a first root object and (ii) the second dimension data field can be traced to a second root object that is distinct from the first root object:

forming a first object tree that includes the first object and the first root object, and combining data columns from objects of the first object tree according to data values of the first dimension data field using an inner join to form a first table;

forming a second object tree that includes the second object and the second root object, and combining data columns from objects of the second object tree according to data values of the second dimension data field using an inner join to form a second table; and

combining data columns of the first table and the second table via a cross join.

12. The computing device of claim 9 , wherein the instructions for constructing the dimension subquery according to the characteristics of the first dimension data field, the second dimension data field, the first object, and the second object include instructions for:

in accordance with a determination that the first dimension data field and the second dimension data field belong to the same object that is shared by two or more root objects:

combining data columns of the first dimension data field and the second dimension data field using an inner join.

13. The computing device of claim 9 , wherein the instructions for constructing the dimension subquery according to the characteristics of the first dimension data field, the second dimension data field, the first object, and the second object include instructions for:

in accordance with a determination that (i) the first object is shared by a first set of root objects and (ii) the second object is shared by a second set of root objects:

combining data columns of the first dimension data field and the second dimension data field using a cross join.

14. The computing device of claim 9 , wherein the instructions for constructing the dimension subquery according to the characteristics of the first dimension data field, the second dimension data field, the first object, and the second object include instructions for:

in accordance with a determination that (i) the first object is a first root object, (ii) the second object can be traced to the first root object, and the (iii) the second dimension data field is not shared by another root object:

combining data columns of the first dimension data field and the second dimension data field using an inner join.

15. A non-transitory computer readable storage medium storing one or more programs configured for execution by a computing device having one or more processors, memory, and a display, the one or more programs comprising instructions for:

receiving a first user input specifying a first dimension data field and a second dimension data field for generating a first data visualization;

determining that the first dimension data field belongs to a first object of an object model and the second dimension data field belongs to a second object of the object model, distinct from the first object;

constructing a dimension subquery according to characteristics of the first dimension data field, the second dimension data field, the first object, and the second object, including:

determining a join type for combining (i) first data rows that include data values of the first dimension data field and (ii) second data rows that include data values of the second dimension data field; and

constructing the dimension subquery according to the determined join type, the dimension subquery referencing the first object and the second object;

executing the dimension subquery against one or more data sources corresponding to the first dimension data field and the second dimension data field to retrieve first tuples that comprise unique ordered combinations of data values for the first dimension data field and the second dimension data field;

constructing one or more measure subqueries, each of the measure subqueries referencing one or more measure data fields in the object model;

executing the one or more measure subqueries to retrieve second tuples;

forming extended tuples by combining the retrieved first tuples and the retrieved second tuples; and

generating and displaying the first data visualization according to the extended tuples.

16. The non-transitory computer readable storage medium of claim 15 , wherein the instructions for constructing the dimension subquery according to the characteristics of the first dimension data field, the second dimension data field, the first object, and the second object include instructions for:

in accordance with a determination that (i) the first dimension data field can be traced to one root object and (ii) the second dimension data field can be traced to the same root object:

combining data columns of the first dimension data field and the second dimension data field using an inner join.

17. The non-transitory computer readable storage medium of claim 15 wherein the instructions for constructing the dimension subquery according to the characteristics of the first dimension data field, the second dimension data field, the first object, and the second object include instructions for:

in accordance with a determination that (i) the first dimension data field can be traced to a first root object and (ii) the second dimension data field can be traced to a second root object that is distinct from the first root object:

forming a first object tree that includes the first object and the first root object, and combining data columns from objects of the first object tree according to data values of the first dimension data field using an inner join to form a first table;

forming a second object tree that includes the second object and the second root object, and combining data columns from objects of the second object tree according to data values of the second dimension data field using an inner join to form a second table; and

combining data columns of the first table and the second table via a cross join.

18. The non-transitory computer readable storage medium of claim 15 , wherein the instructions for constructing the dimension subquery according to the characteristics of the first dimension data field, the second dimension data field, the first object, and the second object include instructions for:

in accordance with a determination that the first dimension data field and the second dimension data field belong to the same object that is shared by two or more root objects:

combining data columns of the first dimension data field and the second dimension data field using an inner join.

19. The non-transitory computer readable storage medium of claim 15 , wherein the instructions for constructing the dimension subquery according to the characteristics of the first dimension data field, the second dimension data field, the first object, and the second object include instructions for:

in accordance with a determination that (i) the first object is shared by a first set of root objects and (ii) the second object is shared by a second set of root objects:

combining data columns of the first dimension data field and the second dimension data field using a cross join.

20. The non-transitory computer readable storage medium of claim 15 , wherein the instructions for constructing the dimension subquery according to the characteristics of the first dimension data field, the second dimension data field, the first object, and the second object include instructions for:

in accordance with a determination that (i) the first object is a first root object, (ii) the second object can be traced to the first root object, and the (iii) the second dimension data field is not shared by another root object:

combining data columns of the first dimension data field and the second dimension data field using an inner join.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 8, 2024
From: NHAN, THOMAS; MARTIN, TYLER; AMADOR, FRANZ GUSTAVE; BOITEL, MARIAN SIMO; BOOTH,, JEFFREY MARK, JR.; PAUL-JONES, RUSSELL STEVEN; FENG, JINBO
To: SALESFORCE, INC.
Reel/Frame 067039/0597 →
Continuity (2)
Provisional Application 63464911 · May 8, 2023
Related Publication 20240378220A1 · Nov 14, 2024
References Cited (29)
US 9779150B1 · Sherman et al. · 2017 [cited by applicant]
US 10402061B2 · Kohlmeier et al. · 2019 [cited by applicant]
US 10795902B1 · Setlur et al. · 2020 [cited by applicant]
US 10997217B1 · Nielsen et al. · 2021 [cited by applicant]
US 11580127B1 · Newman · 2023 [cited by applicant]
US 20020069193A1 · Beavin et al. · 2002 [cited by applicant]
US 20120054226A1 · Cao · 2012 [cited by examiner]
US 20150120698A1 · Plattner · 2015 [cited by examiner]
US 20150134598A1 · Banerjee · 2015 [cited by examiner]
US 20150134599A1 · Banerjee · 2015 [cited by examiner]
US 20160225271A1 · Robichaud et al. · 2016 [cited by applicant]
US 20180089286A1 · Marquardt et al. · 2018 [cited by applicant]
US 20180129374A1 · Kim et al. · 2018 [cited by applicant]
US 20190065565A1 · Stolte et al. · 2019 [cited by applicant]
US 20190155803A1 · Miller et al. · 2019 [cited by applicant]
US 20200026532A1 · Bill et al. · 2020 [cited by applicant]
US 20200401581A1 · Eubank et al. · 2020 [cited by applicant]
US 20210149935A1 · De Boer · 2021 [cited by applicant]
US 20210256039A1 · Weir et al. · 2021 [cited by applicant]
US 20220318262A1 · Whilden et al. · 2022 [cited by applicant]
US 20230394053A1 · Mahdy et al. · 2023 [cited by applicant]
US 20240265024A1 · Newman · 2024 [cited by applicant]
Andreas Grünwald et al., “The semantic model editor,” Semantic Systems, Sep. 4, 2014, Copyright 2014, ACM 978-1-4503-2927, pp. 116-123, 8 pgs. [cited by applicant]
Nhan, Office Action, U.S. Appl. No. 18/424,592, filed Dec. 4, 2024, 13 pgs. [cited by applicant]
Nhan, Office Action, U.S. Appl. No. 18/424,505, filed Mar. 7, 2025, 46 pgs. [cited by applicant]
Salesforce, Inc., International Search Report and Written Opinion, PCT/US2024/028206, Jan. 16, 2025, 16 pgs. [cited by applicant]
SS-BI Tutorials, (Feb. 2013), ‘Erwin Data modeler relationships’, https://www.youtube.com/watch?v=UfwyD13jr8Q&t-45s (Year: 2013), 3 pgs. [cited by applicant]
Nhan, Office Action, U.S. Appl. No. 18/751,126, Jun. 2, 2025 22 pgs. [cited by applicant]
Nhan, Office Action, U.S. Appl. No. 18/751,131, Jun. 20, 2025 12 pgs. [cited by applicant]