IP Library Granted Patent US 10,437,847
Granted Patent B1
US 10,437,847 · App. 15/143,044 · Granted Oct 8, 2019

Transformation based sampling for preprocessing big data

Inventors: Adam Eli Silberstein (Sunnyvale, CA); Edward Eli Marschner (San Francisco, CA); Sean Philip Kandel (San Francisco, CA); Philip John Vander Broek (San Francisco, CA); Alon Shulim Bartur (San Francisco, CA); Wei Zheng (San Carlos, CA)
Assignee: Trifacta Inc.
G06F16/254G06F16/26
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 10,437,847
App. No.
15/143,044
Granted
Oct 8, 2019
Kind
B1
Abstract

A system determines samples of datasets that are typically processed by big data analysis systems. The samples are for use for development and testing of transformations for preprocessing the datasets in preparation for analysis by big data systems. The system receives one or more transform operations input datasets for the transform operations. The system determines samples associated with the transform operations. According to a sampling strategy, the system determines samples that return at least a threshold number of records in the result set obtained by applying a transformation. According to another sampling strategy, the system receives criteria describing the result of the transform operations and determines sample sets that generate result sets satisfying the criteria as a result of applying the transform operations.

Claims (97)

1. A method for preprocessing data for analysis, the method comprising:

receiving one or more input datasets, each dataset comprising a plurality of records, wherein the input datasets are for analysis by a data analysis system that requires records of the input datasets to conform to one or more formatting rules;

determining a sample dataset from the one or more input datasets having sufficient samples for testing a set of transform operations for preprocessing the input datasets for the data analysis system, the preprocessing for modifying one or more records that fail to conform to the formatting rules such that the modified records conform to the formatting rules, the determining of the set of transform operations comprising:

identifying one or more transform operations;

determining a preliminary sample from each input dataset to be processed by the identified transform operations;

applying the identified transform operations to the preliminary samples to generate a result set;

responsive to a size of the generated result set being less than a threshold value, determining an updated preliminary sample from each input dataset to be processed by the identified transform operations, applying the identified transform operations to the updated preliminary sample to generate an updated result set, and supplementing the result set with the updated result set;

identifying input records of the preliminary samples that generated the result set;

storing the identified input records as the sample dataset; and

including the identified transform operations in the set of transform operations;

sending the sample dataset to a client device for analysis, wherein the client device is configured to present a user interface to a user allowing the user to debug and test the set of transform operations using the sample dataset to generate a debugged transformation script; and

using the debugged transformation script to preprocess the input dataset for analysis by the data analysis system.

2. The method of claim 1 , wherein determining the sample sets further comprises:

storing an association between each input record of an input dataset processed by the identified transforms to generate a record of the result set; and

wherein, identifying input records associated each record of the result set is based on the stored association.

3. The method of claim 1 , further comprising sampling the result set responsive to a size of the result set exceeding a second threshold value.

4. The method of claim 1 , further comprising:

sampling the updated result set to determine a sampled result set.

5. The method of claim 1 , wherein a preliminary sample is generated from an input dataset by using one of the sampling strategies including: random sampling, using a set of consecutive rows as a sample, taking a set of rows wherein a consecutive pair of rows in the set of rows is separated by a fixed number of rows.

6. The method of claim 1 , wherein the transform operation is a join operation, and the input datasets comprise a first input dataset and a second input dataset, the method further comprising:

receiving a join criteria for performing the join operation on the first input dataset and the second input dataset; and

wherein each record of the result set is obtained by combining at least a first record of the first input dataset and a second record of the second input set, wherein the first record and the second record are determined to match based on the join criteria.

7. The method of claim 1 , wherein a transform operation performs one or more of:

replacing occurrences of an input string occurring in a column of a dataset by a transformed string;

filtering records based on a given criteria such that the transform operation outputs input records that satisfy the given criteria;

aggregating a plurality of records in the input to generate an output record; and

generating an output value if an input value of a data field of a dataset satisfies a predetermined criterion.

8. The method of claim 1 , wherein the transform operation replaces a single data value stored in a single column of an input dataset into a plurality of data values, each of the plurality of data values for storing in a different column.

9. The method of claim 1 , further comprising:

estimating a size of a sample set to be generated; and

determining the size of the preliminary samples to be larger than the estimated size of the sample set.

10. A method for generating transformation based samples, the method comprising:

receiving one or more input datasets and a transform operation configured to process one or more input values to generate one or more output values;

for each of the input datasets, generating a preliminary sample corresponding to the input dataset;

performing the transform operation on records of the preliminary samples to generate a result set, wherein each record of the result set is associated with one or more records from each preliminary sample;

responsive to a size of the generated result set being less than a threshold value, determining an updated preliminary sample from each input dataset to be processed by the identified transform operations, applying the identified transform operations to the updated preliminary sample to generate an updated result set, and supplementing the result set with the updated result set;

identifying input records of the preliminary samples, the identified input records associated with at least a subset of records of the result set; and

storing the identified input records of each preliminary sample as a sample dataset based on the transform, to be used for debugging and analyzing the transform operation at a data analysis system to generate a debugged transformation script for preprocessing the one or more input datasets for analysis by the data analysis system.

11. The method of claim 10 , further comprising:

storing an association between each input record of an input dataset processed by the transform operation to generate a record of the result set; and

wherein, identifying input records associated each record of the result set is based on the stored association.

12. The method of claim 10 , further comprising:

sampling the result set to determine the subset of the result set for which the input records of the preliminary samples are identified.

13. The method of claim 12 , further comprising sampling the result set responsive to a size of the result set exceeding a second threshold value.

14. The method of claim 12 , further comprising:

sampling the result set to determine a subset of the result set.

15. The method of claim 10 , wherein a preliminary sample is generated from an input dataset by using one of the sampling strategies including: random sampling, taking a set of consecutive rows, taking a set of rows wherein a consecutive pair of rows in the set of rows is separated by a fixed number of rows.

16. The method of claim 10 , wherein the transform operation is a join operation, and the input datasets comprise a first input dataset and a second input dataset, the method further comprising:

receiving a join criteria for performing the join operation on the first input dataset and the second input dataset; and

wherein each record of the result set is obtained by combining at least a first record of the first input dataset and a second record of the second input set, wherein the first record and the second record are determined to match based on the join criteria.

17. The method of claim 10 , wherein the transform operation performs one or more of the following:

replacing occurrences of an input string occurring in a column of a dataset by a transformed string;

filtering records based on a given criteria such that the transform operation outputs input records that satisfy the given criteria;

aggregating a plurality of records in the input to generate an output record; and

generating an output value if an input value of a data field of a dataset satisfies a predetermined criterion.

18. The method of claim 10 , further comprising:

estimating a size of a sample set to be generated; and

determining the size of the preliminary samples to be larger than the estimated size of the sample set.

19. A computer readable non-transitory storage medium storing instructions for:

receiving one or more input datasets, each dataset comprising a plurality of records, wherein the input datasets are for analysis by a data analysis system that requires records of the input datasets to conform to one or more formatting rules;

determining a sample dataset from the input dataset having sufficient samples for testing a set of transform operations for preprocessing the input datasets for the analysis, the preprocessing for modifying one or more records that fail to conform to the formatting rules such that the modified records conform to the formatting rules, the determining of the set of transform operations comprising:

identifying one or more transform operations;

determining a preliminary sample from each input dataset to be processed by the identified transform operations;

applying the identified transform operations to the preliminary samples to generate a result set;

responsive to a size of the generated result set being less than a threshold value, determining an updated preliminary sample from each input dataset to be processed by the identified transform operations, applying the identified transform operations to the updated preliminary sample to generate an updated result set, and supplementing the result set with the updated result set;

identifying input records of the preliminary samples that generated the result set;

storing the identified input records as the sample dataset; and

including the identified transform operations in the set of transform operations;

sending the sample dataset to a client device for analysis, wherein the client device is configured to present a user interface to a user allowing the user to debug and test the set of transform operations using the sample dataset to generate a debugged transformation script; and

using the debugged transformation script to preprocess the input dataset for analysis by the data analysis system.

20. The computer readable non-transitory storage medium of claim 19 , wherein determining the sample sets further comprises:

storing an association between each input record of an input dataset processed by the identified transforms to generate a record of the result set; and

wherein, identifying input records associated each record of the result set is based on the stored association.

21. The computer readable non-transitory storage medium of claim 19 , further storing instructions for:

sampling the updated result set to determine a sampled result set.

22. The computer readable non-transitory storage medium of claim 19 , wherein the transform operation is a join operation, and the input datasets comprise a first input dataset and a second input dataset, further storing instructions for:

receiving a join criteria for performing the join operation on the first input dataset and the second input dataset; and

wherein each record of the result set is obtained by combining at least a first record of the first input dataset and a second record of the second input set, wherein the first record and the second record are determined to match based on the join criteria.

23. The computer readable non-transitory storage medium of claim 19 , wherein the transform operation performs one or more of the following:

replacing occurrences of an input string occurring in a column of a dataset by a transformed string;

filtering records based on a given criteria such that the transform operation outputs input records that satisfy the given criteria;

aggregating a plurality of records in the input to generate an output record; and

generating an output value if an input value of a data field of a dataset satisfies a predetermined criterion.

24. A computer system, comprising:

a computer processor; and

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

receiving one or more input datasets, each dataset comprising a plurality of records, wherein the input datasets are for analysis by a data analysis system that requires records of the input datasets to conform to one or more formatting rules;

determining a sample dataset from the input dataset having sufficient samples for testing a set of transform operations for preprocessing the input datasets for the analysis, the preprocessing for modifying one or more records that fail to conform to the formatting rules such that the modified records conform to the formatting rules, the determining of the set of transform operations comprising:

identifying one or more transform operations;

determining a preliminary sample from each input dataset to be processed by the identified transform operations;

applying the identified transform operations to the preliminary samples to generate a result set;

responsive to a size of the generated result set being less than a threshold value, determining an updated preliminary sample from each input dataset to be processed by the identified transform operations, applying the identified transform operations to the updated preliminary sample to generate an updated result set, and supplementing the result set with the updated result set;

identifying input records of the preliminary samples that generated the result set;

storing the identified input records as the sample dataset; and

including the identified transform operations in the set of transform operations;

sending the sample dataset to a client device for analysis, wherein the client device is configured to present a user interface to a user allowing the user to debug and test the set of transform operations using the sample dataset to generate a debugged transformation script; and

using the debugged transformation script to preprocess the input dataset for analysis by the data analysis system.

Assignments (6)
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Mar 25, 2024
From: ALTERYX, INC.; TRIFACTA INC.
To: SSLP LENDING, LLC
Reel/Frame 066879/0585 →
CORRECTIVE ASSIGNMENT TO CORRECT THE CONVERYANCE TYPE ROM "NAME CHANGE" TO--ASSIGNMENT-- PREVIOUSLY RECORDED AT REEL: 062144 FRAME: 0729. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 11, 2023
From: TRIFACTA INC.
To: ALTERYX, INC.
Reel/Frame 062357/0534 →
CHANGE OF NAME Recorded Dec 19, 2022
From: TRIFACTA INC.
To: ALTERYX, INC.
Reel/Frame 062144/0729 →
SECURITY INTEREST - SR. LOAN Recorded Nov 26, 2019
From: TRIFACTA INC.
To: SILICON VALLEY BANK
Reel/Frame 051137/0141 →
SECURITY INTEREST - MEZZ LOAN Recorded Nov 26, 2019
From: TRIFACTA INC.
To: SILICON VALLEY BANK
Reel/Frame 051137/0152 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 10, 2016
From: SILBERSTEIN, ADAM ELI; MARSCHNER, EDWARD ELI; KANDEL, SEAN PHILIP; VANDER BROEK, PHILIP JOHN; BARTUR, ALON SHULIM; ZHENG, WEI
To: TRIFACTA INC.
Reel/Frame 038882/0890 →
Continuity (1)
Provisional Application 62156068 · May 1, 2015
Cited By (1)
US 12,639,274