Pages
Wednesday, July 1, 2020
Salesforce: Sharing Rules via Public Group & Role
Sunday, June 14, 2020
Einstein Analytics: Working with Multi-Pages Dashboard
- a new section will be added with the label "Clone of xyz" under the pages key
- the number of widgets in the new page section is exactly the same as the source page
- all the keys in the new widgets are exactly the same as the widgets on the source page, including name
- colspan
- column
- row
- rowspan
- widgetStyle
- chart_3 widget used in Page1A and Page1B page
- chart_3 widget use step "Dept_1"
- The "name" on the page where we clicked unlink, the widget name under gridLayouts will change to the new name and no change for other pages.
- In the "widgets" section, there will be a new widget added "chart_4", which uses the same step use in "chart_3", which is "Dept_1".
Widget created under the "widgets" section when we "unlink" earlier will remain, you can delete it manually to clean-up dashboard JSON from unused items.
- Create a new step
- Create a new widget, and assigned with step created (1)
- Add the widget created (2) to the current page
- No new steps created
- No new widgets created
- Create a new page under gridLayouts
Tuesday, May 26, 2020
What is Salesforce Marketing Cloud?
What else can you do with Salesforce Marketing Cloud?
What does Salesforce Marketing Cloud consist of?
|
Name of the app |
What is it used for? |
|
Content Builder |
Create content for
your emails, in-app messages, push notifications. |
|
Journey Builder |
Deliver cross-channel
personalized experiences at every step of the customer lifecycle with
campaign management. |
|
Interaction Studio |
Visualize, track, and
manage customer experiences with real-time interaction management—driving
valuable engagement at the right moment. |
|
Email Studio |
Use data from every
department to build smarter email—from basic marketing campaigns to
sophisticated 1-to-1 messages. |
|
Mobile Studio |
Send consistent SMS,
push, and chat app messages in real-time. |
|
Advertising Studio |
Use CRM to securely
power 1-to-1 advertising across Google, Facebook, LinkedIn, Twitter,
Pinterest, and Display at scale. |
|
Social Studio |
Listen, publish, and engage to create customer advocates. Connect social to marketing, sales, and service in one platform powered by AI. |
|
Web Studio |
Allows you to create
Cloud pages. |
|
Einstein |
Einstein Email and Web
Recommendations power delivery of relevant content based on prior user
behavior. |
|
Analytics Studio |
Allows to get deep insights into the behaviors and interests of your contacts across channels. You can use these insights to set marketing goals and refine customer journeys. |
Who is Salesforce Marketing Cloud made for?
Wednesday, May 13, 2020
Einstein Analytics: Compare Table functions
- Rank: assigns rank based on order. Repeats rank when the value is the same, and skips as many on the next non-match
- Dense Rank: same as rank() but doesn’t skip values on previous repetitions.
- Cumulative Distribution: calculates the cumulative distribution (relative position) of the data in the reset group
- Row-number: assigns a number incremented by 1 for every row in the reset group.
- Rank: rank() over([..] partition by all order by A desc)
- Dense Rank: dense_rank() over([..] partition by all order by A desc)
- Cumulative Distribution: cume_dist() over([..] partition by all order by A desc)
- Row Number: row_number() over([..] partition by all order by A desc)
Sunday, May 10, 2020
Einstein Analytics: computeExpression return Date
- For SAQL Expression, it is easier to use toDate(xxxx_sec_epoch)
- for Date Format, use yyyy-MM-ddTHH:mm:ss.000Z for Date/Time, or use yyyy-MM-dd for Date field
Wednesday, May 6, 2020
Einstein Analytics: Hidden Step
So, what is the hidden step? it is a query that used to support other queries, but not directly uses for widgets. The query can be in compact form, Salesforce Direct, SAQL, and SOQL.
As mentioned above, we can use a hidden step to support other queries, in this case, usually, we use "result" binding, remember selection binding will be trigger when user change/select something.sim
Sample SOQL query:
"QueryLoginUser_1": {
"groups": [],
"numbers": [],
"query": "SELECT Name,Id FROM User Where Name = '!{User.Name}'",
"selectMode": "single",
"strings": [],
"type": "soql"
}
use it in a "real" query:
"filters": [
[
"OwnerId",
"{{cell(QueryLoginUser_1.result,0,\"Id\").asString()}}",
"in"
]
]
Sample SAQL query:
q = load "Quote_History";
q = filter q by 'StatusChange' == "Created to In Progress";
q = group q by all;
q = foreach q generate avg('Cycle_Time') as 'avg_Cycle_Time';
q = foreach q generate avg_Cycle_Time as 'ave_seconds', floor(avg_Cycle_Time / 3600) as 'hours', floor((avg_Cycle_Time / 60) - (floor(avg_Cycle_Time / 3600) * 60)) as 'minutes';
q = foreach q generate ave_seconds as 'ave_seconds', hours as 'hours', minutes as 'minutes', floor(ave_seconds - ((3600 * hours) + (60 * minutes))) as 'seconds';
q = limit q 2000;
If you open in JSON, it would become
"cycle_time_1": {
"query": "q = load \"Quote_History\";\nq = filter q by 'StatusChange' == \"Created to In Progress\";\nq = group q by all;\nq = foreach q generate avg('Cycle_Time') as 'avg_Cycle_Time';\nq = foreach q generate avg_Cycle_Time as 'ave_seconds', floor(avg_Cycle_Time / 3600) as 'hours', floor((avg_Cycle_Time / 60) - (floor(avg_Cycle_Time / 3600) * 60)) as 'minutes';\nq = foreach q generate ave_seconds as 'ave_seconds', hours as 'hours', minutes as 'minutes', floor(ave_seconds - ((3600 * hours) + (60 * minutes))) as 'seconds';\nq = limit q 2000;"}
use it in a "real" query
"text": "{{column(cycle_time_1.result, [\"seconds\"]).asObject()}}",
Reference:



























