Einstein Analytics Multilanguage
This is my first ever blog on Einstein Analytics. Therefore I would like to start with some of the Enterprise use cases in this article. Indeed there are several methods to execute or handle the same kind of use cases.
Einstein Analytics (Former WAVE) launch was a big buzz in Dreamforce 2014 event in San Francisco.I was one of the early adopters to get my hands on in the same year-end to evaluate this product for one of our reputed European clients. Since then this product has been revolutionized in every aspect. Thanks to the Salesforce Product team as they have been working quite intensively hard to bring out so many features over the time which was back then very hard for us to maintain and execute it.
Going forward I will share my experience and best practices which I have gained over the past few years for every audience in this domain.And also on other Salesforce products via this platform.
In this blog, I am focusing on how we can handle Multi-language EA assets based on defined consistent translation workbench in your Salesforce Org instance.
Quick Video :
Einstein Analytics Assets Localization: This is one of the areas which is still evolving in the product and have some gaps. Also a very important feature in order to increase the overall user adoption for EA implementations. We might see some more improvements in the future coming releases (Safe Harbor) to handle single dashboard for multilingual audience and markets.
Key Localization Limits: Below are the key limitations which we all are already aware of from the product side–
- Each dataset can have a single locale specified in the metadata. The metadata locale is not overridden by individual user locale settings. All users see the same date, time, and number formats, and dimension names, regardless of their own locale and language settings.
- Data within datasets is not modified for localization or internationalization.
Apart from the above-stated limits. We still have other assets such as TEXT Labels etc. to maintain on our dashboards which only stands in Einstein Analytics side, not in Salesforce.
Key Questions to think:
- What if, if you have one single dashboard KPIs that is consistent across for all markets. Consider your metadata is based upon the calculative measures. You will still need separate dashboards for maintaining EA text labels for each respective country audiences. Don’t you?
- What if, if markets have several regions with different sub-languages. For example: In GERMANY we have German, In Swiss, we have four official languages (French/Italian/German/Romansh) etc. Imagine how many dashboards now we need to maintain to serve the purpose?
- What if, if you want to update or extend your labels. Therefore, you can simply imagine the efforts when you are dealing with 15-20 markets with one to 4 regional languages in the regions etc.
Solution Approach: There are many approaches we can handle this use-case in order to achieve the objective.
- Approach 1: Maintaining an external DATASET or table which can store all your country based locale or translations. Then extending each row record in augmentation. Tradeoffs: Dataflow heavy lifting and then later performance topics you have to constantly watch for your SAQL rationalization. Think about what would be the case when you will deal with a few hundred millions of rows.
- Approach 2: In this approach, which I found it very useful. Where based on SOQL Step (Salesforce Object Query Language) you can bring the user local key attribute in EA. Then using conditional formatting via CASE functions in your SAQL for each Individual labels. Then simply disclose it on the text widgets with your results bindings. In this approach, you have to maintain one SAQL step for one label. This might can work fine with smaller use cases with multi orgs. However, to the other side, you have to deal with the good number of SAQL steps in the background and to maintain.
So if you have an individual country based salesforce orgs and the small number of assets to maintain. Then country based dataset metadata plus SAQL localization might be the workaround for you. Indeed thanks to Salesforce Product guys (Esp. Jason) for guiding me through this.
- Approach 3: This is the focused approach for this article. Which is kinda mixed from above two approaches. My intention was to simplify this translation and further down considering the performance aspects for EA. This is the three-step process :
Step 1 : Custom Meta Data Creation – (Salesforce)
Step 2 : Salesforce Translation Workbench Update – (Salesforce)
Step 3 : Einstein Analytics SOQ Step – (Einstein Analytics Studio)
Step 4: Text Widgets to pass your SOQL string results in EA.
Approach 3 Deep Dive:
Step 1: Custom Meta Data Creation – (Salesforce)
a) Custom Meta Data Creation: Simply go to -> Set up – Develop – Custom Metadata types
b) Create New Custom Meta Data: After pressing the New Custom Metadata button. Please populate the label and object name attributes. (Sample Snapshot below)
c) Create New Custom Meta Data Fields: I have created 5 different picklist fields for the demo purpose. Considering I am having 5 sections on the dashboards, therefore, one for each. You can extend up to 100 custom fields per metadata. Or in case of n number of dashboards, you can create one custom metadata table separate for each dashboard. You can have better transparency for your EA assets. (Snapshot Below)
d) Create Custom Meta Data record: Now we have the Metadata created. We just have to create the single record for this metadata. Press ManageEAAsset button on the top.
In the next step press NEW Button on the top to create the record
Create a single record and populate the picklist value for your every field and Press SAVE:
Step 2: Salesforce Translation Workbench Update
a) The process to update the translation is the same. How you do for any other objects in Salesforce. No changes in that.Translation Language ACTIVATION: Just to be sure that you have the translation activated in the translation settings in Salesforce. In my case, I have activated four languages for my user and for integration user.
Set up – Translation Workbench – Translation Settings
b) Field Translation ACTIVATION: Now we will activate the translations for our custom picklist fields in our metadata. So object selection is our metadata table in this case.
Set up – Translation Workbench – Translate
Please select the Language for which you want to set your translations. And then set the translation picklist value labels for all four languages (Snapshot Below)
Below is the snapshot for the Sample Translation for the German Language. Same can be done for all other active languages in Salesforce.
Step 3: Einstein Analytics SOQL Step :
SOQL Step: In this step, we can simply use the SOQL step and to label method. Which simply can bring the currently selected user locale field label for the fields. As we need these string values on our text labels.
“soql_based_step”: {
“groups”: [],
“numbers”: [],
“query”: “SELECT tolabel(Country__c),tolabel(EASection__c),tolabel(RevenueSource__c),tolabel(EATotalRevenue__c), tolabel(Type__c) FROM EAAsset__mdt”,
“selectMode”: “single”,
“strings”: [
” Country__c”,
” EASection__c “,
“RevenueSource__c”,
“Type__c”
],
“type”: “soql”,
“useGlobal”: false
},
Step 4: Text Widgets to pass your SOQL string results in EA
TEXT Results Binding: We can simple pass the SOQL string results into the text labels by using EA results binding.
Results Binding : “Text”: “{{coalesce(cell(soql_based_step.result, 0, \”value\”)).asString()}}”,
Sample TEXT Component JSON:
“text_1”: {
“parameters”: {
“fontSize”: 20,
“text”: “{{coalesce(cell(soql_based_step.result, 0, \”EASection__c\”)).asString()}}”,
“textAlignment”: “center”,
“textColor”: “#FFFFFF”
},
“type”: “text”
},
Conclusion
- Using the SOQL step provide us to leverage the salesforce data access directly without scheduling any of the data flow jobs. User can simply toggle the language and control these switch in the same way they are executing it in the Salesforce CRM application.
- If your company is using Salesforce Multi-orgs. Then you can also streamline your EA development & deployment process. Later can package your language assets in order to distribute it in other orgs.
- Also, we can extend the custom metadata table in order to fulfill the requirements of single dataset serving multiple countries if needed.
Cheers!
Varun.
Great article Varun! Thank you so much for putting this step by step guide together!
Thank you Reinhard