IP Library Granted Patent US 9,892,020
Granted Patent B1
US 9,892,020 · App. 15/277,787 · Granted Feb 13, 2018

User interface for specifying data stream processing language programs for analyzing instrumented software

Inventors: Eyal Ophir (Mountain View, CA); Kevin Cheng (Sunnyvale, CA)
Assignee: SignalFx, Inc.
G06F11/3644G06F11/3692G06F17/3053G06F17/30516
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,892,020
App. No.
15/277,787
Filed
Sep 27, 2016
Granted
Feb 13, 2018
Kind
B1
Art Unit
2196
USPC
717/106
Abstract

An instrumentation analysis system processes data streams by executing instructions specified using a data stream language program. A user interface allows users to specify data stream language programs. The user interface presents widgets to the user to specify various components of a data stream language program including a filter expression, an analytical function representing an aggregation or transformation, and so on. The user interface allows users to specify an expression based on results of previously specified data stream language programs. The instrumentation analysis system processes the data stream language programs specified by the user to generate a set of result data streams and plots the result data streams, for example, on a screen of a client device.

Claims (57)

1. A method for specifying a data stream language program, the method comprising:

receiving a plurality of input data streams providing data generated by instrumented software executing on one or more external systems;

configuring for presentation, a user interface for specifying data stream language programs, the user interface comprising one or more widgets for receiving expressions specified using the data stream language;

receiving, via the user interface, a plurality of data stream language programs, each data stream language program configured to generate a set of intermediate result data streams, the receiving comprising, for each data stream language program:

receiving an analytic function for computing an aggregate value based on a plurality of data values, each data value obtained from a distinct input data stream;

receiving, via the user interface, an association of each data stream language program with a label;

receiving a specification of a combined data stream language program as an expression based on the labels; and

configuring for presentation a visual representation of a set of final result data streams generated from the combined data stream language program, each final result data stream comprising result data values, each result data value obtained by evaluating the expression based on the labels by replacing each label by a data value from an intermediate result data stream of the data stream language program corresponding to the label.

2. The method of claim 1 , wherein each final result data value is associated with a time interval, such that the final result data value is obtained by evaluating the expression based on intermediate data value associated with the time interval.

3. The method of claim 1 , wherein receiving, via the user interface, each data stream language program comprises:

receiving a filter expression for determining a subset of the input data streams.

4. The method of claim 1 , wherein receiving, via the user interface, each data stream language program comprises:

receiving a transformation expression for aggregating the plurality of data values of an input data stream.

5. The method of claim 1 , further comprising:

selecting a set of dimensions describing data streams received, the selecting based on statistics describing data values of the dimension received in the data streams; and

displaying the set of dimensions via the user interface, the displayed set of dimensions for receiving a selection of a dimension.

6. The method of claim 5 , further comprising:

repeatedly reevaluating the set of dimensions based on recent statistics describing the dimensions associated with data streams; and

updating the set of dimensions presented via the user interface based on the reevaluated set of dimensions.

7. The method of claim 5 , wherein selecting the set of dimensions comprising ranking various dimensions describing the data streams received, the ranking based on the statistics describing each dimension from the set of dimension, wherein the set of dimensions is displayed based on the ranking.

8. The method of claim 7 , wherein a first dimension is ranked higher compared to a second dimension responsive to receiving a larger number of data values for the first dimension compared to the second dimension in a time interval.

9. The method of claim 7 , wherein a first dimension is ranked higher compared to a second dimension responsive to receiving a smaller number of distinct data values for the first dimension compared to the second dimension in a time interval.

10. The method of claim 7 , wherein a first dimension is ranked higher compared to a second dimension responsive to having a higher measure of recency of the data values for the first dimension compared to the second dimension in a time interval, the measure of recency based on an aggregate value based on the age of each data value of the dimension received within the time interval.

11. The method of claim 7 , further comprising:

repeatedly reevaluating the ranking of the dimensions based on recent statistics describing the dimensions associated with data streams to generate a new ranking of the dimensions; and

updating an order in which the dimensions are presented via the user interface based on the new ranking.

12. A computer readable non-transitory storage medium storing instructions thereon, wherein the instructions when executed by a processor cause the processor to perform the steps of:

receiving a plurality of input data streams providing data generated by instrumented software executing on one or more external systems;

configuring for presentation, a user interface for specifying data stream language programs, the user interface comprising one or more widgets for receiving expressions specified using the data stream language;

receiving, via the user interface, a plurality of data stream language programs, each data stream language program configured to generate a set of intermediate result data streams, the receiving comprising, for each data stream language program:

receiving an analytic function for computing an aggregate value based on a plurality of data values, each data value obtained from a distinct input data stream;

receiving, via the user interface, an association of each data stream language program with a label;

receiving a specification of a combined data stream language program as an expression based on the labels; and

configuring for presentation a visual representation of a set of final result data streams generated from the combined data stream language program, each final result data stream comprising result data values, each result data value obtained by evaluating the expression based on the labels by replacing each label by a data value from an intermediate result data stream of the data stream language program corresponding to the label.

13. The computer readable non-transitory storage medium of claim 12 , wherein the instructions when executed by a processor further cause the processor to perform the steps of:

selecting a set of dimensions describing data streams received, the selecting based on statistics describing data values of the dimension received in the data streams; and

displaying the set of dimensions via the user interface, the displayed set of dimensions for receiving a selection of a dimension.

14. The computer readable non-transitory storage medium of claim 12 , wherein the instructions when executed by a processor further cause the processor to perform the steps of:

repeatedly reevaluating the set of dimensions based on recent statistics describing the dimensions associated with data streams; and

updating the set of dimensions presented via the user interface based on the reevaluated set of dimensions.

15. The computer readable non-transitory storage medium of claim 12 , wherein selecting the set of dimensions comprising ranking various dimensions describing the data streams received, the ranking based on the statistics describing each dimension from the set of dimension, wherein the set of dimensions is displayed based on the ranking.

16. The computer readable non-transitory storage medium of claim 15 , wherein a first dimension is ranked higher compared to a second dimension responsive to receiving a larger number of data values for the first dimension compared to the second dimension in a time interval.

17. The computer readable non-transitory storage medium of claim 15 , wherein a first dimension is ranked higher compared to a second dimension responsive to receiving a smaller number of distinct data values for the first dimension compared to the second dimension in a time interval.

18. The computer readable non-transitory storage medium of claim 15 , wherein a first dimension is ranked higher compared to a second dimension responsive to having a higher measure of recency of the data values for the first dimension compared to the second dimension in a time interval, the measure of recency based on an aggregate value based on the age of each data value of the dimension received within the time interval.

19. The computer readable non-transitory storage medium of claim 15 , further comprising:

repeatedly reevaluating the ranking of the dimensions based on recent statistics describing the dimensions associated with data streams to generate a new ranking of the dimensions; and

updating an order in which the dimensions are presented via the user interface based on the new ranking.

20. A computer-implemented system for processing data generated by instrumented software, the system comprising:

a computer processor; and

a computer readable non-transitory storage medium storing instructions thereon, wherein the instructions when executed by a processor cause the processor to perform the steps of:

receiving a plurality of input data streams providing data generated by instrumented software executing on one or more external systems;

configuring for presentation, a user interface for specifying data stream language programs, the user interface comprising one or more widgets for receiving expressions specified using the data stream language;

receiving, via the user interface, a plurality of data stream language programs, each data stream language program configured to generate a set of intermediate result data streams, the receiving comprising, for each data stream language program:

receiving an analytic function for computing an aggregate value based on a plurality of data values, each data value obtained from a distinct input data stream;

receiving, via the user interface, an association of each data stream language program with a label;

receiving a specification of a combined data stream language program as an expression based on the labels; and

configuring for presentation a visual representation of a set of final result data streams generated from the combined data stream language program, each final result data stream comprising result data values, each result data value obtained by evaluating the expression based on the labels by replacing each label by a data value from an intermediate result data stream of the data stream language program corresponding to the label.

Assignments (8)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 22, 2025
From: SPLUNK LLC
To: CISCO TECHNOLOGY, INC.
Reel/Frame 072173/0058 →
CHANGE OF NAME Recorded Jul 22, 2025
From: SPLUNK INC.
To: SPLUNK LLC
Reel/Frame 072170/0599 →
CORRECTIVE ASSIGNMENT TO CORRECT THE MISSPACED COMPANY NAME OF SIGNAL FX, INC PREVIOUSLY RECORDED ON REEL 052858 FRAME 0782. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME. Recorded Jun 16, 2020
From: SOLIS MERGER SUB II, LLC; SIGNALFX, INC.
To: SIGNALFX LLC
Reel/Frame 052958/0872 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 5, 2020
From: SIGNALFX LLC
To: SPLUNK INC.
Reel/Frame 052858/0787 →
MERGER AND CHANGE OF NAME Recorded Jun 5, 2020
From: SOLIS MERGER SUB II, LLC; SIGNAL FX, INC.; SIGNALFX LLC
To: SIGNALFX LLC
Reel/Frame 052858/0782 →
RELEASE OF SECURITY INTEREST Recorded Oct 1, 2019
From: SILVER LAKE WATERMAN FUND II, L.P.
To: SIGNALFX, INC.
Reel/Frame 050585/0240 →
SECURITY INTEREST Recorded Dec 14, 2017
From: SIGNALFX, INC.
To: SILVER LAKE WATERMAN FUND II, L.P.
Reel/Frame 044868/0541 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 3, 2016
From: OPHIR, EYAL; CHENG, KEVIN
To: SIGNALFX, INC.
Reel/Frame 039925/0332 →
Continuity (1)
Provisional Application 62307188 · Mar 11, 2016