Newer Version Available
QueryBuilder Class
Namespace
wave
Usage
Use QueryBuilder and its associated classes, Wave.ProjectionNode and Wave.QueryNode, to incrementally build your SAQL statement. For example:
1public static void executeApexQuery(String name){
2 Wave.ProjectionNode[] projs = new Wave.ProjectionNode[]{
3 Wave.QueryBuilder.get('State').alias('State'),
4 Wave.QueryBuilder.get('City').alias('City'),
5 Wave.QueryBuilder.get('Revenue').avg().alias('avg_Revenue'),
6 Wave.QueryBuilder.get('Revenue').sum().alias('sum_Revenue'),
7 Wave.QueryBuilder.count().alias('count')};
8
9 ConnectApi.LiteralJson result = Wave.QueryBuilder.load('0FbD00000004DSzKAM', '0FcD00000004FEZKA2')
10 .group(new String[]{'State', 'City'})
11 .foreach(projs)
12 .execute('q');
13 String response = result.json;
14}Examples
QueryBuilder is the core of this first phase of the CRM Analytics Apex SDK, so let’s take a closer look. Here’s a simple count query.
1Wave.ProjectionNode[] projs = new Wave.ProjectionNode[]{Wave.QueryBuilder.count().alias('c')};
2String query = Wave.QueryBuilder.load('datasetId', 'datasetVersionId').group().foreach(projs).build('q');The resulting SAQL query looks like this:
1q = load "datasetId/datasetVersionId";
2q = group q by all;
3q = foreach q generate count as c;Here’s a more complex example that uses a union statement.
1Wave.ProjectionNode[] projs = new Wave.ProjectionNode[]{Wave.QueryBuilder.get('Name'), Wave.QueryBuilder.get('AnnualRevenue').alias('Revenue')};
2Wave.QueryNode nodeOne = Wave.QueryBuilder.load('datasetOne','datasetVersionOne').foreach(projs);
3Wave.QueryNode nodeTwo = Wave.QueryBuilder.load('datasetTwo', 'datasetVersionTwo').foreach(projs);
4String query = Wave.QueryBuilder.union(new List<Wave.QueryNode>{nodeOne, nodeTwo}).build('q');The resulting SAQL query has two projection streams, qa and qb.
1qa = load "datasetOne/datasetVersionOne";
2qa = foreach q generate Name,AnnualRevenue as Revenue;
3qb = load "datasetTwo/datasetVersionTwo";
4qb = foreach q generate Name,AnnualRevenue as Revenue;
5q = union qa, qb;QueryBuilder Methods
The following are methods for QueryBuilder.
load(datasetID, datasetVersionID)
Signature
public static wave.QueryNode load(String datasetID, String datasetVersionID)
Parameters
Return Value
Type: wave.QueryNode
get(projection)
Signature
public static wave.ProjectionNode get(String proj)
Parameters
- proj
- Type: String
- The name of the column to query.
Return Value
Type: wave.ProjectionNode
union(unionNodes)
Signature
global static Wave.QueryNode union(List<Wave.QueryNode> unionNodes)
Parameters
- unionNodes
- Type: List<wave.QueryNode>
- List of nodes to combine.
Return Value
Type: wave.QueryNode
cogroup(cogroupNodes, groups)
Signature
global static Wave.QueryNode cogroup(List<Wave.QueryNode> cogroupNodes, List<List<String>> groups)
Parameters
- cogroupNodes
- Type: wave.QueryNode
- List of nodes to group.
- groups
- Type: String
- The type of grouping.
Return Value
Type: wave.QueryNode