Tuesday, January 14, 2020

Einstein Analytics: Using EdgeMart object from Salesforce Direct

In Winter '20 release, Einstein Analytics introduces Salesforce Direct, read this release notes for complete info of Salesforce Direct.

However, Salesforce Direct offers you to get data more than just Salesforce objects, but data in Einstein Analytics too, one of them is EdgeMart, please not to confuse with the edgemart node in Dataflow.

Let's have hands-on, make sure you are in the Production org., EdgeMart object does not available in the sandbox at this moment.

1. Create a new Dashboard
2. Click Create Query button (if you do not see the button), click the blank canvas
3. Select Salesforce Direct as the data source
4. Type EdgeMart in search box
5. Select EdgeMart

6. Now you will be presented with Untitled Query with a bar chart with a count of rows, this row represent the number of datasets you have.

7. You can modify to table mode when as your needs.

The table above shows where is the dataset located, created by, last modified by, data refresh date, etc.

ReferenceShow your data's refresh date with Salesforce Direct

Friday, January 10, 2020

Einstein Analytics: Grouping in Dataflow

After the blog to transpose data from columns to rows, and from rows to columns. Today I have another challenge to group data based on a date.

Here is the data

I know the recipe offers this functionality to group data easily, however, reluctant to put a recipe in between of to dataflows, as it will cause maintenance nightmare in the future.

But, can we do this in dataflow? Dataflow does not offer data grouping by default, but as still we can achieve with it some tricks. Here we go:

The key node here is just cr1 which is a computeRelative node. I add 4 fields here:
- Sum_1
- Sum_2
- Sum_3
- IsLast

1. Partition the data with Date

2. For fields Sum_1 to Sum_3, choose SAQL (not Source Field), the Type should be Numeric and remember to enter Scale and Default Value. Here is the SAQL Expression 
case when previous(Sum_1) is null then current(Data_1) else current(Data_1) + previous(Sum_1) end

3. For IsLast, choose SAQL (not Source Field), the Type should be Text. Here is the SAQL Expression
case when next(Data_1) is null then "Yes" else "No" end

data after computeRelative, before cleanup

4. Delete unused rows with Filter node and unused columns with Slice node.


Sunday, January 5, 2020

SimplySfdc in 2019

Happy New Year 2020! To follow yearly tradition, I would like to share some statistics of SimplySfdc in 2019 -- here is the statistic for 2018.

In 2019, lesser blogs where written compare to 2018 (41% less), but the total Pageviews and total Sessions increase.

Page 2019 2018 2017 change*
Total New Page 37 63 34 -41.27%
Total Pageviews 210,213 171,249 115,744 22.75%
Total Sessions 185,396 149,574 97,310 23.95%
Pages / Session 1.13 1.14 1.19 -0.88%
* compare 2019 to 2018

Similar to previous years, organic search always contributes to the largest portion of traffic source in 2019, and this year it crosses the 70% mark. Direct traffic, referral and social weaker in 2019.

Channel Source 2019 2018 2017
1. Organic Search 74.06% 69.63% 67.66%
2. Direct 23.35% 27.15% 25.64%
3. Referral 1.72% 1.76% 4.09%
4. Social  0.82% 1.46% 2.60%

Google, as always is the king of search engine globally, the same applies to SimplySfdc in 2019, it contributes more than 96% of traffic, which is more than 1% lower compared to 2018. Bing and Yahoo gain a slight more percentage, while other search engines show an increase in contribution too.

Top Search Engine 2019 2018 2017
1. Google 96.09% 97.48% 96.46%
2. Bing 2.61% 2.02% 2.66%
3. Yahoo 0.56% 0.47% 0.77%
4. Other 0.74% 0.03% 0.11%

Twitter as the predominant social media for Salesforce #Ohana stays at the 1st spot by contributing more than 39% traffic for SimplySfdc. LinkedIn and Blogger contribution a huge increase for more than 16% compared to 2017.

Top Social Media Source 2019 2018 2017
1. Twitter (#1 in 2018) 39.05% 56.50% 26.42%
2. LinkedIn (#3 in 2017)  31.57% 15.65% 44.81% 
3. Blogger (#4 in 2017) 20.21% 4.17% 4.61%
4. Facebook (#2 in 2017) 5.57% 18.00% 7.15%
5. Others 3.60% 5.68% 17.01%
* in 2017 - StackExchange contribute 7.29% and Google+ contribute 7.11%

There is no change in the top 6 countries of the visitors, however, US visitors gain almost 2% of the total number of visitors. All other countries contribute lesser visitors in terms of the percentage of visitors. The top six countries represent almost 79 % of the visitors.

Top Visitor Country 2019 2018 2017
1. United States 43.60% 41.84% 49.45%
2. India 22.07% 23.88% 19.56%
3. United Kingdom  4.50% 4.95% 4.61%
4. Australia 3.20% 3.30% 2.58%
5. Canada 2.85% 2.92% 2.38%
6. France  2.09% 2.18% 1.90%

From the cities' perspective, Chicago out of nowhere takes the 1st spot in 2019, while it was not in the top 10 in 2018, I guess probably this is related to intensive Einstein Analytics posts in 2019. New York climb to spot #4, and London drop to #6.  The top 6 cities represent almost 22% of the total visitors.

Top Visitor City 2019 2018 2017
1. Chicago 6.60% n/a  1.82%
2. Bengaluru (#1 in 2018) 5.27% 6.08% 5.24%
3. Hyderabad (#2 in 2018) 3.27% 3.76% 3.11%
4. New York (#5 in 2018) 2.26% 2.30% 2.80%
5. Pune (#4 in 2018) 2.20% 2.32% 1.97%
6. London (#3 in 2018) 2.14% 2.50% 2.37%
* San Francisco was in #3 in 2017 and #6 in 2018
* Chicago was in #8 in 2017 and not in top 10 in 2018

This statistic includes access from desktop and mobile. Total top 5 web browsers contribute more than 98% of the visitors. All browsers position stay the same as in 2018, but Internet Explorer gains a higher contribution percentage by visitors.

Top Visitor Web Browser 2019 2018 2017
1. Chrome 83.13% 83.34% 81.33%
2. Internet Explorer 7.05% 5.43% 4.65%
3. Firefox  3.57% 4.64% 6.36%
4. Safari  2.91% 3.28% 5.32%
5. Edge 1.58% 1.71% 1.11%

In terms of the operating system, there is no change in the top 5 web browsers. There is a slight decrease in Windows users. While mobile and tablet users stay the same with close to 6% contribution of the total visitors, this makes sense because most of the visitors access this blog when they have difficulty in configuring Salesforce using the desktop/laptop.

Top Visitor Operating System 2019 2018 2017
1. Windows 74.19% 75.13% 73.36%
2. Macintosh 17.63% 17.12% 17.93%
3. Android 3.28% 3.15% 2.63%
4. iOS  2.57% 2.80% 4.10%
5. Linux 1.65% 1.36% 1.23%

As mentioned in last year's blog, screen resolution 1536x864 probably is 1920x1080 resolution with the display set to 125% zoom, and 1280x720 is 150% zoom of 1920x1080. In total, 1920x1080 is contributing to more than 42%. I have no idea with 1024x768, but some of the contributions probably are tablets and mobile.

Top Visitor Screen Resolution 2019 2018 2017
1. 1920x1080 24.38% 21.87% 20.87%
2. 1366x768 15.62% 20.09% 21.63%
3. 1536x864  8.88% 8.53% 8.12%
4. 1280x720 (#5 in 2018) 8.75% 6.63% 4.63%
5. 1440x900 (#4 in 2018) 7.95% 8.23% 8.44%
6. 1024x768 (#8 in 2018) 6.35% 3.63% n/a

Top 5 Popular Page
For popular pages, 3 of 5 top pages from 2018 still stay in 2019. And, 3 of 5 top pages in 2019 are written in 2018.

2. Salesforce: How to export Attachments? ~ 6,023 hits [2014] (#1~2018; #1~2017; #4~2016; #4~2015; #5~2014)
5. Salesforce: Activity Controlled by Parent ~ 2,970 hits [2015] (#5~2018; #17~2017)

Top 5 Referral Site
1. Salesforce Ben ~ 10 Most Popular Salesforce Admin Blogs
2. Kelsey Shannon ~ EA Certification Study Guide Part 1: Data Layer
3. Kelsey Shannon ~ EA Certification Study Guide Part 5: Security
4. SrinuSFDC ~ Admin 201 Sample Questions 1 - 20
5. Kelsey Shannon ~ EA Certification Study Guide Part 6: Administration

Thursday, January 2, 2020

Einstein Lead Scoring: Getting Started

Einstein looks at your company’s past leads, including any custom fields, to find patterns in your successful lead conversion history. Einstein Lead Scoring then determines which of your current leads fit your success patterns best. Each lead receives a score indicating how well it fits your patterns, along with insights about which of the lead’s fields affect its score most.

If you have Sales Cloud Einstein or High Velocity Sales license, then Einstein Lead Scoring is available for you to use.

menu availability depends on the licenses provisioned

Step to enable and configure Einstein Lead Scoring

1. Add Remote Site Settings
Remote Site Name CS41
Remote Site URL

2. Permission Set
You can use the standard Sales Cloud Einstein or High Velocity Sales User permission set, or create a custom permission set and make sure to enable Use Einstein Lead Scoring permission under App Permissions. Assign the users with the Permission Set.

3. Enable Einstein Lead Scoring
Go to the setup menu and type Assisted Setup, it should be under Einstein Sales. Follow the wizard start with set up for Einstein Lead Scoring.

It may take up to 24 hours for Einstein to score the Leads. Once finished, you will get a notification.

You will find Einstein Scoring component available on the Lead Lightning page.

Reference: Prioritize Leads with Einstein Lead Scoring

Tuesday, December 31, 2019

Einstein Prediction Builder: Getting Started

Einstein Prediction Builder allows you to easily build predictions across any Salesforce standard or custom object with clicks, no code! It predicts a field based on a set of historical data.

If you have Einstein Predictions or Einstein Analytics Plus license, then Einstein Prediction Builder is available for you to use, source Einstein Analytics Pricing (as of 31 Dec 2019).

If you org. have Einstein Prediction Builder license, you should see Einstein Prediction Builder in the setup menu.

There is a few blogs have shared on Einstein Prediction Builder use cases and how to configure it:
Einstein Prediction Builder. The Artificial Intelligence by Salesforce
Einstein prediction builder to predict
Einstein Prediction Builder

Einstein Prediction Builder comes with a wizard-style configuration, you need to select an object, a field for prediction, a set of records as "example", and field to store the prediction result.

Currently, it only supports to predict a checkbox field, while the result would be in number between 0 to 100. In summary, here are the steps:

1. Object
Select a Salesforce object you would like to use for prediction.

2. Segment
Do you want to use the whole data of the object for prediction and learning? Select:
- No segment, to use all data, or
- Yes, enter filter of fields to be included
Make sure you have a minimum of 400 records (after filter if you segment the data).

3. Field to Predict 
This is a very important field, Einstein will do the prediction based on historical value of this field, and it needs to be a checkbox or formula that returns checkbox.

In this blog, I have a picklist field called "Status" with value: Sent, No Show, and Attended. No Show and Attended is historical data, while Sent is new records, and Einstein will help us to predict the attendance for all Sent records.

Because it needs to be a checkbox field, let us create a formula field that returns checkbox called "Attend", ISPICKVAL(Status__c,"Attended"), this field will return True if the Status field is Attended.

4. Define a set of data as examples (for learning)
As mentioned that Einstein needs historical data to predict, we need to define historical data for learning. Einstein will not predict records set as examples, but use it to learn the value of "field to predict".

The more samples data (historical) is a better prediction, but make sure to have a minimum of 400 example records, with both Yes and No records should have a minimum of 100 records.

From the above sample screenshot:
- 407 is the historical data for learning, which are records with Status does not equal to Sent
- 188 of them is Yes <-- this means Attend value is True
- 219 of them is No <-- this means Attend value is False
- 3399 records with Status = Sent, this needs to be predicted for the attendance

The below image explains dataset scope:

- Green: whole data in an object
- Yellow: data filtered after segment, data outside yellow will not be used for prediction and learning
- Dark Yellow: historical data set for learning (Status = No Show and Attended)
- Light Yellow: new data set for prediction (Status = Sent)

5. Set a field to store prediction values
Once the predictions enabled, the values will be range from 0 to 100.

Depends on your data size, Einstein may take up to 24 hours to build the prediction, then you can review the scorecard. Once you enable the prediction, Einstein will start to populate the prediction field with a score, including new records.


Friday, December 27, 2019

Einstein Analytics: Working with Null Dimension with Default Value

A dimension field in Einstein Analytics is equal to a string field. However, by default Einstein Analytics does not show NULL value in grouping or sorting.

From the sample report below, we have 1004 accounts, and 5 of them do not have Account Source.

With dataflow, we get all the Account from Salesforce to Einstein Analytics, this clearly shows the number of Accounts in the dataset is 1004.

Then, let us group it by Account Source

Notice from the above screenshot, Accounts with null Account Source do not show at all, the same if we change it to Compare Table.

In Values Table, Account with null Account Source still appears.

But, if we sort by Account Source column, the rows will no longer show.

So, instead of keeping it null, we can transform the value as N/A in Einstein Analytics. We can do this from sfdcDigest note in Dataflow.
Open the sfdcDigest node for Account and click the pencil icon next to Account Source.

In the Default Value, populate N/A, and click the Save button.

Notice the pencil icon next to Account Source is changed, this tells us that something has been updated for that field, click Save button again to close sfdcDigest window.

If you check the dataflow JSON, defaultValue is added

"sfdcDigest_Account": {
    "action": "sfdcDigest",
    "parameters": {
      "fields": [
          "name": "Id"
          "name": "Name"
          "name": "AccountSource",
          "defaultValue": "N/A"
      "object": "Account"

Now, update the dataflow and run it again, then group the lens with Account Source, notice N/A added for all null values Account Source.

Page-level ad