ReportGrid.barChart("#chart", { axes : ["country","count"], datapoints : data(), options : { displayrules : true } });
Precog.append({
"path": "/events.json",
"value": {"Any": ["valid", {"JSON": "goes"}, "here."]}
});
Precog.uploadFile({
"path": "/dumps/today/data.json",
"contents": fileContents, "type": "application/json"
});
Precog.execute({
"query": "count((//events.json).location[2])"
});
Precog is a next-generation analytics platform that lets you easily store and analyze JSON data, without having to manipulate or transform the data, impose a rigid schema, or flatten it into tables. You can do everything from simple analytics to advanced statistics and machine learning.
// Append a JSON value Precog.append({path: '/foo/', value: {"hello": "world"}}); // Upload a file Precog.uploadFile({path: '/foo/data.json', type: 'application/json', contents: file});
// Append a JSON value Map<String,Object> json = new HashMap<String,Object>(); json.put("hello", "world"); precog.append("/foo/", json); // Upload a file File csvFile = new File("/path/to/my.csv"); precog.uploadFile("/foo/", csvFile, Formats.CSV);
// Append a JSON value client.append("/foo/", {"hello": "world"}) // Upload a file client.upload_file('/foo/', Format.json, "/path/to/data.json") client.upload_file('/foo/', Format.csv, file)
// Append a JSON value $api->store('/foo/', array('hello' => 'world')); // Upload a file $api->ingest('/foo/data.json', $fileContent, 'application/json');
// Append a JSON value Precog.append({path: '/foo/', value: {"hello": "world"}}); precog.append('/foo', { :hello => 'world' }) // Upload a file Precog.uploadFile({path: '/foo/data.json', type: 'application/json', contents: file}); precog.upload_file('/foo/data.json', :json, file)
// Append a JSON value Precog.append({path: '/foo/', value: {"hello": "world"}}); // Upload a file Precog.uploadFile({path: '/foo/data.json', type: 'application/json', contents: file});
// Append a JSON value SomeStuff myStuff = SomeSource.GetStuff("foo"); client.Append("/test", myStuff); // Upload a file client.UploadFile("/test", Formats.CSV, @"C:\somefile.csv");
// Enrich a Data Set Precog.execute('//foo with precog::enrichment(//foo, SentimentAnalysis)');
// Enrich a Data Set precog.query("precog::enrichment(//foo, SentimentAnalysis)");
// Enrich a Data Set client.query('//foo with precog::enrichment(//foo, SentimentAnalysis)')
// Enrich a Data Set client.query('//foo with precog::enrichment(//foo, SentimentAnalysis)')
// Enrich a Data Set precog.query('', '//foo with precog::enrichment(//foo, SentimentAnalysis)')
// Enrich a Data Set Precog.execute('//foo with precog::enrichment(//foo, SentimentAnalysis)');
// Enrich a Data Set client.Query("/", "//foo with precog::enrichment(//foo, SentimentAnalysis)");
// Compute Some Analytics Precog.execute('count(//foo)');
// Compute Some Analytics precog.query("count(//foo)");
// Compute Some Analytics client.query('count(//foo)')
// Compute Some Analytics $api->query('count(//foo)');
// Compute Some Analytics Precog.execute('count(//foo)'); precog.query('', 'count(//foo)')
// Compute Some Analytics Precog.execute('count(//foo)');
// Compute Some Analytics client.Query<int>("/", "count(//foo)").Data[0];
ReportGrid.funnelChart("#chart", { axes : ["event", "count"], datapoints : data() });
ReportGrid.geo("#chart", { axes : ["code", "summerGold"], datapoints : data(), options : { map : { template : "world", property : "code" } } });
ReportGrid.heatGrid("#chart", { axes : ["race","year","deathRate"], datapoints : data(), options : { color : "i:#00f,#0ff,#0f0,#ff0,#f00", } } );
ReportGrid.leaderBoard("#chart", { axes : ["country", "count"], data : data() });
ReportGrid.lineChart("#chart", { axes : ["year", "population"], datapoints : data(), })
ReportGrid.pieChart("#chart", { axes : ["count"], datapoints : data(), options : { datapoint : function(dp) { return dp.country; } } } );
ReportGrid.pivotTable("#chart", { axes : ["model", "quarter", "market", "value"], datapoints : data() });
ReportGrid.sankey("#chart", { axes : ["billions"], datapoints : data(), options : { layerwidth : 130 } });
ReportGrid.scatterGraph("#chart", { axes : ["year", "deathRate"], datapoints : data(), })
ReportGrid.streamGraph("#chart", { axes : ["year", "deathRate"], datapoints : data(), })
Precog can store any kind of JSON data, from primitive values, to records, to complex, large documents with lots of nested objects and arrays.
Precog does not impose any schema on your data. Every value you store in Precog can be different from every other value.
Precog comes in a hardware appliance, a virtual appliance, and a managed cloud offering, so you can choose the deployment option that's right for you.
Precog comes with client libraries for Java, C#, Python, PHP, JavaScript, Python, and Ruby, all bundled up, documented, and ready to go.
Precog supports Quirrel, a simple query language designed for analyzing JSON data, which you can learn in 30 minutes.
Quirrel lets you do everything that SQL can do, and much more, including statistical analysis and easy machine learning.
Build queries on your JSON data with Labcoat (a visual query builder), and export them as code you can run in the programming language of your choice.
Precog comes with a powerful charting library, but is also compatible with D3, Highcharts, Google Charts, and most other charting libraries.
Precog lets you create API keys with different levels of permission so you can easily build multi-tenant analytics solutions on top of Precog.
Every Precog customer receives unlimited email, phone, and IRC support. Large or small, our mission is to help you succeed.
The Developer Center is the launchpad for building applications using Precog. You'll find API docs, client libraries, and more.
Common AnalyticsThis is a short guide that shows how to perform very common analytical queries using the Quirrel query language.
Embed ReportingIf you're building a business application, then your customers probably want self-service reporting.
Optimize PerformanceIf you are deploying a production application that uses Precog, you may be interested in ways to optimize the runtime query performance.
Precog for MongoDBTry an experimental version of precog running on your MongoDB database.
// Append a JSON value Precog.append({path: '/foo/', value: {"hello": "world"}}); // Upload a file Precog.uploadFile({path: '/foo/data.json', type: 'application/json', contents: file});
// Append a JSON value Map<String,Object> json = new HashMap<String,Object>(); json.put("hello", "world"); precog.append("/foo/", json); // Upload a file File csvFile = new File("/path/to/my.csv"); precog.uploadFile("/foo/", csvFile, Formats.CSV);
# append json value (python object) client.append("/foo/", {"hello": "world"}) # upload file client.upload_file('/foo/', Format.json, "/path/to/data.json") client.upload_file('/foo/', Format.csv, file)
// Append a JSON value $api->store('/foo/', array('hello' => 'world')); // Upload a file $api->ingest('/foo/data.json', $fileContent, 'application/json');
// Append a JSON value Precog.append({path: '/foo/', value: {"hello": "world"}}); precog.append('/foo', { :hello => 'world' }) // Upload a file Precog.uploadFile({path: '/foo/data.json', type: 'application/json', contents: file}); precog.upload_file('/foo/data.json', :json, file)
// Append a JSON value Precog.append({path: '/foo/', value: {"hello": "world"}}); // Upload a file Precog.uploadFile({path: '/foo/data.json', type: 'application/json', contents: file});
// This assumes a SomeSource that can generate SomeStuff instances SomeStuff myStuff = SomeSource.GetStuff("foo"); client.Append("/test", myStuff); // Uploading a file means we replace (e.g. delete) the existing data at that path client.UploadFile("/test", Formats.CSV, @"C:\somefile.csv");