tag:blogger.com,1999:blog-45070293955572195572024-03-12T23:11:32.255-04:00Cloud ThoughtsArticles to achieve the aha moment when you learn something new.Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.comBlogger48125tag:blogger.com,1999:blog-4507029395557219557.post-79221356886825560572023-11-21T10:15:00.005-05:002023-11-21T10:22:53.515-05:00Preserving CRM Analytics Dashboard Formatting When Deploying<p>You've built a beautiful CRM Analytics full of customization such as table column names, formats, and conditional formatting by grouping value.</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_zosuqiJlM8949k6xmVv_I45eetjeOOchjrRDIdm0aeMz09ONDVVCYz1sPPSjG6jF6wMOCcJGJffZJzFtl7KTkM7XOvgnqictJBBnbN7BDk7Etoj6iwK8zqVJOegkyM_EV2hiiGaWO5U08qciS9nEn8z3thw8OOYLCG0fdMkcKBJTvqRBCU2jYeFGr_xB/s2192/Screenshot%202023-11-21%20at%208.30.32%E2%80%AFAM.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="820" data-original-width="2192" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_zosuqiJlM8949k6xmVv_I45eetjeOOchjrRDIdm0aeMz09ONDVVCYz1sPPSjG6jF6wMOCcJGJffZJzFtl7KTkM7XOvgnqictJBBnbN7BDk7Etoj6iwK8zqVJOegkyM_EV2hiiGaWO5U08qciS9nEn8z3thw8OOYLCG0fdMkcKBJTvqRBCU2jYeFGr_xB/w640-h240/Screenshot%202023-11-21%20at%208.30.32%E2%80%AFAM.png" width="640"></a></div><br><div class="separator" style="clear: both; text-align: center;"><br></div>Now, it's time to move this to production. You can either deploy from the sandbox with change sets or use the Metadata API with your preferred tooling. It's rather straightforward to select the dashboard name and complete the deployment. <p></p><p>Except there's a problem. All that super styling work you did is gone. You're left with a sad looking dashboard.</p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjW_9Sal9Ue4QhKXghahu3orSVpqd5JrXcSdq5fVoblzSy-gbcU0VOME-mQTPp6gA39zgf4-SRp5wdayLUwhHvLSxrtPvAniyNjmjbuSTPTNkOCSZ2EYdlC2XQf4JQv9hzWeeNw-bqUJlu7o4ia-MO_0Ld2fcONo9tl6DkQvbHTqdbUibq_3zhoZXY4bSLc" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="802" data-original-width="2204" height="232" src="https://blogger.googleusercontent.com/img/a/AVvXsEjW_9Sal9Ue4QhKXghahu3orSVpqd5JrXcSdq5fVoblzSy-gbcU0VOME-mQTPp6gA39zgf4-SRp5wdayLUwhHvLSxrtPvAniyNjmjbuSTPTNkOCSZ2EYdlC2XQf4JQv9hzWeeNw-bqUJlu7o4ia-MO_0Ld2fcONo9tl6DkQvbHTqdbUibq_3zhoZXY4bSLc=w640-h232" width="640"></a></div><br>What went wrong and how can we fix it? We need to dive behind the scenes of CRM Analytics to understand where our customization are stored.<div><br><span></span></div><a href="http://blog.canntechnology.com/2023/11/preserving-crm-analytics-dashboard.html#more">Read more »</a>Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.com0tag:blogger.com,1999:blog-4507029395557219557.post-84467071847694305262023-06-16T09:36:00.004-04:002023-06-16T09:39:29.910-04:00CRM Analytics Save Error - Value required for [actions]<p>After the Salesforce Summer 23 release, I've encountered this error when attempting to save a dashboard after making changes - Value required for [actions].</p><p>What makes this error odd, is the dashboard modification had nothing to do with actions.</p><div class="separator" style="clear: both; text-align: center;"><div style="text-align: center;"><br /></div><div style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgXoatwwT9cKqDBVaR177Vi5rVUipoqWRCrBmFH9chD3LjzulaDe-gq4qatwpqahTAmA09mnVfv7tDnTXR4LawjzSbli1UCJ-MUGhYWQjX_KHKVrMyp7vH2V2PjTnzxOBCMU-bTy2-sB1p-ZY5rgA-24XBHDd_zn6vq0vKUgntg_4arD-Wq8WKitxtOzg"><img alt="Value required for actions error message" data-original-height="288" data-original-width="896" height="129" src="https://blogger.googleusercontent.com/img/a/AVvXsEgXoatwwT9cKqDBVaR177Vi5rVUipoqWRCrBmFH9chD3LjzulaDe-gq4qatwpqahTAmA09mnVfv7tDnTXR4LawjzSbli1UCJ-MUGhYWQjX_KHKVrMyp7vH2V2PjTnzxOBCMU-bTy2-sB1p-ZY5rgA-24XBHDd_zn6vq0vKUgntg_4arD-Wq8WKitxtOzg=w400-h129" title="Save Dashboard Error" width="400" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div style="text-align: left;">A quick look at the dashboard JSON revealed the following interactions node on a table in the widgets collection.</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh-3dCNPtnj16_oLsnBl0xg-ktkcBziVlDuG0cM5q_BBWPghaSyPNMW0xozy9dPxsxGiy2k9BHx0ZbEYo1yQt0fbjPfiY5QoxUsa922Ni5mNW1UG_wri9DYvXLCdyA60WYgyZvtVvDQ_rqZzYYTJIHFkfir98CF-lHUXei57oh--Su9oUWHvxCyAuX16g" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="228" data-original-width="418" height="175" src="https://blogger.googleusercontent.com/img/a/AVvXsEh-3dCNPtnj16_oLsnBl0xg-ktkcBziVlDuG0cM5q_BBWPghaSyPNMW0xozy9dPxsxGiy2k9BHx0ZbEYo1yQt0fbjPfiY5QoxUsa922Ni5mNW1UG_wri9DYvXLCdyA60WYgyZvtVvDQ_rqZzYYTJIHFkfir98CF-lHUXei57oh--Su9oUWHvxCyAuX16g" width="320" /></a></div><div style="text-align: left;"><br /></div>Going to the table on the dashboard and clicking the Interaction tab revealed the following. If there is a partially configured interaction, you won't be able to save the dashboard. For example, the Click event was established, but no actions defined.</div><div style="text-align: left;"><br /></div><div style="text-align: left;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgumQLe7CLZ241JbvYP2NEcGNvoYjbLKw8eK2wAFSWaohMNBKUnQ6vkWhTqlTkFqfMuNqFq_sAfyAyPr7qnMlZ3UTHE20vwEGjEP1oKHbvBC2GygomIN_iJ8BHu1jwBTXGCG0K4KxL3mZeV2jv73FXC-5y_JSXXyghB-xrWb_Ys5mLQm89IfVa-bsWifA" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="500" data-original-width="600" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEgumQLe7CLZ241JbvYP2NEcGNvoYjbLKw8eK2wAFSWaohMNBKUnQ6vkWhTqlTkFqfMuNqFq_sAfyAyPr7qnMlZ3UTHE20vwEGjEP1oKHbvBC2GygomIN_iJ8BHu1jwBTXGCG0K4KxL3mZeV2jv73FXC-5y_JSXXyghB-xrWb_Ys5mLQm89IfVa-bsWifA" width="288" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">Simply removing the Interaction by using the x on the right allowed the dashboard to be saved.</div><br /><br /></div><br /></div><p></p>Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.com1tag:blogger.com,1999:blog-4507029395557219557.post-43404359083800373402022-01-17T10:25:00.003-05:002022-01-17T10:25:40.612-05:00Salesforce Multi-Factor Authentication with LastPass Business<p>With the Salesforce requirement to use MFA, LastPass Business can be used to generated Time-based One-time Passwords. The following video walks through the steps on how to configure this setup.</p><p> </p><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="358" src="https://www.youtube.com/embed/Wfd75kl8r4I" width="470" youtube-src-id="Wfd75kl8r4I"></iframe></div><br /><p></p>Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.com0tag:blogger.com,1999:blog-4507029395557219557.post-38992236649203433662020-12-29T18:58:00.002-05:002020-12-29T18:58:22.166-05:00Obscure Data Sync Error<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjp0v-6pmM3xovRzoGVxBJCJFxqu1nfQdUejPX7CRJjCwf_0sOpm_-SnK_FysT6ORHRvH6uyyu33u8ha8Ay6AciNdeJ3KQuRSkFWX-3Y8aAA1ZPpqzA3pjXRb9zIa8hdug_zPhlgMSL4Gn/s512/error-icon-25245.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="Error Icon" border="0" data-original-height="512" data-original-width="512" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjp0v-6pmM3xovRzoGVxBJCJFxqu1nfQdUejPX7CRJjCwf_0sOpm_-SnK_FysT6ORHRvH6uyyu33u8ha8Ay6AciNdeJ3KQuRSkFWX-3Y8aAA1ZPpqzA3pjXRb9zIa8hdug_zPhlgMSL4Gn/w200-h200/error-icon-25245.png" title="Error Icon" width="200"></a></div><br> Here's another entry for the obscure, random error file. It's one of those situations where there's not any other articles out there that match the error message that occurred in Tableau CRM (formerly Einstein Analytics). <p></p><p>So here's the background and resolution for when your data sync jobs start randomly failing with an "Something went wrong while executing the remoteSync" error.</p><p><br></p><span></span><a href="http://blog.canntechnology.com/2020/12/obscure-data-sync-error.html#more">Read more »</a>Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.com0tag:blogger.com,1999:blog-4507029395557219557.post-11128901849300852662020-04-07T21:09:00.001-04:002020-04-07T21:09:40.042-04:00Automatically Uploading COVID-19 Dataset to Einstein Analtyics<div dir="ltr" style="text-align: left;" trbidi="on">
My <a href="http://blog.canntechnology.com/2020/03/examining-covid-19-with-einstein.html">Examining COVID-19 with Einstein Analytics</a> templated app relies on a csv file that updates each day. The following steps can be used to automate the process.<br>
<br>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi97puJdDPywXqFM1Sj9iu3B-TiC5XSSnmPGMKnlAswfGAY8qneMdFKXAXGKCmEgLVxWfHREh0FYxiNIKRjVmBeoznqwkYPoGMGsKDvjHFLTI62fmvz6b08M5lC2O2uZdH227pUVjbH2f7f/s1600/Screen+Shot+2020-04-07+at+9.08.32+PM.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="496" data-original-width="1600" height="198" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi97puJdDPywXqFM1Sj9iu3B-TiC5XSSnmPGMKnlAswfGAY8qneMdFKXAXGKCmEgLVxWfHREh0FYxiNIKRjVmBeoznqwkYPoGMGsKDvjHFLTI62fmvz6b08M5lC2O2uZdH227pUVjbH2f7f/s640/Screen+Shot+2020-04-07+at+9.08.32+PM.png" width="640"></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br></div>
<br>
</div><a href="http://blog.canntechnology.com/2020/04/automatically-uploading-covid-19.html#more">Read more »</a>Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.com0tag:blogger.com,1999:blog-4507029395557219557.post-86271367436514785292020-03-17T13:30:00.002-04:002020-04-12T12:46:07.003-04:00Examining COVID-19 with Einstein Analytics<div dir="ltr" style="text-align: left;" trbidi="on">
There are many visualizations of the COVID-19 outbreak, including <a href="https://www.tableau.com/covid-19-coronavirus-data-resources">Tableau resources</a> and an <a href="https://coronavirus.jhu.edu/map.html">online dashboard</a> from John Hopkins Center for Systems Science and Engineering (CSSE). I hadn't found a source for the Salesforce Analytics enthusiast out there. So I decided to build my own and share it with the community.<br />
<br />
<span id="goog_802258177"></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfb9Jv8BMTlbbakE9SzyW_yyKdiNGLvIG90XQmSLAHm3e6B-QNLTzQRKDXQFWVICOOudh4oxShDAloXOXe_-mR1dvQ8UI1ttZmebOPJrhS4PPTbYLMkyKRmakQqhBdalAttgWm5v8-KOcf/s1600/Global.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="917" data-original-width="1600" height="366" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfb9Jv8BMTlbbakE9SzyW_yyKdiNGLvIG90XQmSLAHm3e6B-QNLTzQRKDXQFWVICOOudh4oxShDAloXOXe_-mR1dvQ8UI1ttZmebOPJrhS4PPTbYLMkyKRmakQqhBdalAttgWm5v8-KOcf/s640/Global.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<h2 style="clear: both; text-align: left;">
Data Source</h2>
<div class="separator" style="clear: both; text-align: left;">
I started with 2019 Novel Coronavirus COVID-19 (2019-nCoV) Data Repository by Johns Hopkins CSSE, which is available as a github <a href="https://github.com/CSSEGISandData/COVID-19">project</a>.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The repository includes time series files that report confirmed, deaths and recovered by country and state/province. There were a few challenges with the data format, as each new day of data is a separate column. Einstein Analytics prefers data in denormalized format, with the date as a row of data.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
In addition, some of the columns had missing data, such as as the state/province not applying in certain country. When displaying data on maps, Einstein Analytics is particular about the name of the country or region. There were a few places the required adjustments. Sorry Czechia, I had to change you to Czech Republic.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Next, the granularity of data changed over time. For example, in the United States data was reported at the county level (King County, WA) before switching to be at the state level (Washington) about a week ago.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
I decided to give Python a try to modify the data before uploading. While I am not an expert, it was pretty easy to do replacements with pandas DataFrame replace and then melt to change the daily data into rows.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid7Ug5ZxM4TzGN8BBVQFqU8KGuChiMdcBNuPcx8NTJ2CzHePZfxReFKLtXy673Ao7uP6-FpMRY7i6Zt1m-eEcZWzvUQrOOkfyAu8kbYzouL2aJ3IJi8IQrkySR4uMEKQOEVQd32aXNCK_u/s1600/python.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="886" data-original-width="1600" height="354" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEid7Ug5ZxM4TzGN8BBVQFqU8KGuChiMdcBNuPcx8NTJ2CzHePZfxReFKLtXy673Ao7uP6-FpMRY7i6Zt1m-eEcZWzvUQrOOkfyAu8kbYzouL2aJ3IJi8IQrkySR4uMEKQOEVQd32aXNCK_u/s640/python.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<h2 style="clear: both;">
Einstein Analytics</h2>
<div>
With data ready to analyze, it was time to upload the csv file. Next, there are a few metrics that I wanted to calculate with a dataflow, such as the first date of a confirmed case in a country or state as well as the number of days since the first confirmed case. Using a compute relative and compute expression in the dataflow helped meet this need. </div>
<div>
<br /></div>
<div>
With the data ready, it was pretty easy to create a dashboard of insights. Like most analytics projects, this was an iterative process. The dashboard that started with one map and one chart, now has three tabs showing similar data at the global, US and Europe levels. </div>
<div>
<br /></div>
<div>
There is also the ability to switch between confirmed cases, deaths and recovered patients. The dashboard currently shows the following visuals:</div>
<div>
<ul style="text-align: left;">
<li>Map of metrics</li>
<li>Growth over time</li>
<li>Time series prediction of the next 30 days</li>
<li>Country or state ordered by metrics</li>
<li>Comparison over time by country or state based on the first confirmed case</li>
</ul>
<div>
<br /></div>
<div>
A special note on the time series prediction. This can vary widely based on the available data points. There are confidence intervals based on the forward projection. Be sure to use this information with a critical eye and I sincerely hope some of the projections here are grossly inflated.</div>
<div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSF9FUbxHIQOQtddqkwGnOiyA7mZ5lRsDXLA78kqooaN6TjvVlSdAaB-WmRKPF6p2GIEekQ-ZIDXVq4-jPjGc-tJIEOwcn7-0zlIEQA4c0d9xXpbu-uSn6O0Amtf23wbcRG3t0o4NsGZil/s1600/Timeseries.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="536" data-original-width="1588" height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSF9FUbxHIQOQtddqkwGnOiyA7mZ5lRsDXLA78kqooaN6TjvVlSdAaB-WmRKPF6p2GIEekQ-ZIDXVq4-jPjGc-tJIEOwcn7-0zlIEQA4c0d9xXpbu-uSn6O0Amtf23wbcRG3t0o4NsGZil/s640/Timeseries.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
</div>
</div>
<h2 style="text-align: left;">
Installation</h2>
Finally, I packaged the Analytics Template into a managed package. Once you install the package, you can create a new App in Einstein Analytics.<br />
<ul style="text-align: left;">
<li>Navigate to Einstein Analytics</li>
<li>Create App from Template</li>
<li>Select COVID-19 app</li>
<li>There are no options to select, simply provide a name</li>
<li>Once the template setup completes, you are ready to go</li>
</ul>
<div>
The app will install a dataset from the csv file and use a dataflow to enhance the metrics. You can then view the associated COVID-19 dashboard.<br />
<br /></div>
<div>
<div style="text-align: left;">
<b>
Prerequisites</b></div>
<div>
<br />
The following should be enabled before installing the package.</div>
<div>
<ul style="text-align: left;">
<li>Einstein Analytics enabled (Setup | Feature Settings | Analytics | Getting Started)</li>
<li>Enable Analytics Templates (Setup | Feature Settings | Analytics | Settings)</li>
<li>Manage Templated App System Permission</li>
<ul>
<li>Create a Permission Set and assign to your user</li>
</ul>
</ul>
</div>
<br /></div>
<div>
Install the managed package from the following links. Each day's data is represented as a new version.</div>
<br />
<ul style="text-align: left;">
<li><a href="https://login.salesforce.com/packaging/installPackage.apexp?p0=04tB0000000B2nt">4.10</a></li>
<ul>
<li>Includes latest data</li>
</ul>
<li><a href="https://login.salesforce.com/packaging/installPackage.apexp?p0=04tB0000000B2nZ">4.7</a></li>
<ul>
<li>data update</li>
</ul>
<li><a href="https://login.salesforce.com/packaging/installPackage.apexp?p0=04tB0000000B2f4">4.4</a></li>
<ul>
<li>changed new by country to be growth rate (new/prior)</li>
<li>added new by state for US</li>
<li>data update</li>
</ul>
<li><a href="https://login.salesforce.com/packaging/installPackage.apexp?p0=4tB0000000B2am">3.32</a> (April Fools Day)</li>
<ul>
<li>data update</li>
</ul>
<li><a href="https://login.salesforce.com/packaging/installPackage.apexp?p0=04tB0000000B2ac">3.31</a></li>
<ul>
<li>added new by country to global</li>
<li>data update</li>
</ul>
<li><a href="https://login.salesforce.com/packaging/installPackage.apexp?p0=04tB0000000B2aS">3.30</a></li>
<ul>
<li>data update</li>
</ul>
<li><a href="https://login.salesforce.com/packaging/installPackage.apexp?p0=04tB0000000Q4xO">3.28</a></li>
<ul>
<li>used the daily data to rebuild the dataset!</li>
<li>fixed date rollover with GMT and blank maps</li>
<li>data update through 3/28</li>
</ul>
<li>John Hopkins deprecated the data file and has created new formats. Will need to rework the data acquisition layer when I have time available.</li>
<li><a href="https://login.salesforce.com/packaging/installPackage.apexp?p0=04tB0000000Q4xE">3.23</a></li>
<ul>
<li>added ability to change duration metric</li>
<li>data update</li>
</ul>
<li><a href="http://packaging/installPackage.apexp?p0=04tB0000000Q4x9">3.20</a></li>
<ul>
<li>data update</li>
</ul>
<li><a href="https://login.salesforce.com/packaging/installPackage.apexp?p0=04tB0000000Q4wp">3.19</a> </li>
<ul>
<li>includes new case measure</li>
<li>updated dashboard visuals</li>
<li>corrected confirmed by state 1st case </li>
<li>data update</li>
<li>note: source data does show decrease for Washington from the prior day</li>
</ul>
<li><a href="https://login.salesforce.com/packaging/installPackage.apexp?p0=04tB0000000Q4wf">3.18</a> </li>
<ul>
<li>correct South Korea and includes Confirmed New Cases measure</li>
<li>data update</li>
</ul>
<li><a href="https://login.salesforce.com/packaging/installPackage.apexp?p0=04tB0000000Q4wa">3.17</a> </li>
<ul>
<li>initial version</li>
</ul>
</ul>
<div>
<br />
<b>Upgrading</b><br />
<br />
If you've already installed a package, the steps to upgrade are the following<br />
<br />
<ul style="text-align: left;">
<li>Install the latest managed package. You will be prompted to upgrade while preserving data</li>
<li>Within your Einstein Analytics app, there will be an option to update</li>
<li>Click New version is available and decide to create a new app or update the existing one</li>
<li>This will update the latest analytics assets</li>
</ul>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJKPNwD7AaDUYo5NdU9vp7dcPLPoZHbcGjBs9nDL0RX3e_7Uzt7O9v5Ky7bg-kylMpBhSrEWkm7ik2CxoEmCfCiD8QtINqvF9slWgVnB6PwFxIAwDC1rUy8ph1hcbWELZ16GvEK8G_oblq/s1600/update.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="234" data-original-width="902" height="103" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJKPNwD7AaDUYo5NdU9vp7dcPLPoZHbcGjBs9nDL0RX3e_7Uzt7O9v5Ky7bg-kylMpBhSrEWkm7ik2CxoEmCfCiD8QtINqvF9slWgVnB6PwFxIAwDC1rUy8ph1hcbWELZ16GvEK8G_oblq/s400/update.png" width="400" /></a></div>
<div>
<br /></div>
<div>
<b>Data updates</b></div>
<div>
<b><br /></b></div>
<div>
The app template update does not update the Covid Raw Data set with the latest version of the csv. You can either create a new app to get the latest or update the data manually. </div>
<div>
<br /></div>
<div>
Data files and associated schema .json file is available on my github <a href="https://github.com/carlbrundage/covid-19-ea-data">repository</a>.</div>
<div>
<ul style="text-align: left;">
<li>Click on Covid Raw Data and select Edit</li>
<li>Use the Replace Data option</li>
<li>Specify the covid.csv</li>
<li>Specify the covid.json Data Schema File</li>
<li>Click upload</li>
</ul>
<div>
<br /></div>
<div>
After the file is loaded, be sure to execute the dataflow to update the Covid Enhanced dataset. Read more about automating the process in <a href="http://blog.canntechnology.com/2020/04/automatically-uploading-covid-19.html">this post</a>.</div>
</div>
<div>
<br /></div>
<h2 style="text-align: left;">
Feedback</h2>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Give it a try and let me know what you think. Feedback is welcome and appreciated - leave a message in the comments.<br />
<br />
<h2 style="text-align: left;">
Visualization Evolution</h2>
<div>
A quick run down of changes to the dashboard</div>
<div>
<br /></div>
<div>
<div>
3.17 Dashboard</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4Hxx6KmbuRLNDjJ8cZChpbbiKoO7QywUKiE9djPvxYTrLp4lLSrjihKD5hj5710VBtnsHFgu7wdZI1o2IS6MiJxBzwcrPqKARYx3FENIk0yzOkBbqUCVVA8dXKgqFkjvgrqwyum3oxgq-/s1600/Global.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="917" data-original-width="1600" height="366" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4Hxx6KmbuRLNDjJ8cZChpbbiKoO7QywUKiE9djPvxYTrLp4lLSrjihKD5hj5710VBtnsHFgu7wdZI1o2IS6MiJxBzwcrPqKARYx3FENIk0yzOkBbqUCVVA8dXKgqFkjvgrqwyum3oxgq-/s640/Global.png" width="640" /></a></div>
<div>
<br /></div>
</div>
<div>
3.19 Dashboard</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGMRbeYreb40Bpt_feE4_fbHd9zw224y5o-uIautYRRwC1MgCCHvUkc39a7cmxAPKQxvHEK-B7cAflZuVsGCMWT6xthk10_lMBHsL6zUYCyvAsQ2j5lsYd6yws2ViA-hZu1Kv8k7HKF70t/s1600/COVID_19.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1374" data-original-width="1600" height="547" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGMRbeYreb40Bpt_feE4_fbHd9zw224y5o-uIautYRRwC1MgCCHvUkc39a7cmxAPKQxvHEK-B7cAflZuVsGCMWT6xthk10_lMBHsL6zUYCyvAsQ2j5lsYd6yws2ViA-hZu1Kv8k7HKF70t/s640/COVID_19.png" width="640" /></a></div>
<div>
<br /></div>
3.31 Dashboard<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLuquuymAXFvWH71DfvVJXO6CO0aZ1wGb2hN4qI_fj_bPdtDxcEcU8qW0GAWXyTuAd1RiYY9m-hFXykSlNprAMRTwfOp3387ejwkMWzXk6RuQ9x-f79R9QMMaQAZu2wh_j1KoP8lHAHuR5/s1600/COVID_19_Visualized+%25281%2529.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1243" data-original-width="1600" height="496" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLuquuymAXFvWH71DfvVJXO6CO0aZ1wGb2hN4qI_fj_bPdtDxcEcU8qW0GAWXyTuAd1RiYY9m-hFXykSlNprAMRTwfOp3387ejwkMWzXk6RuQ9x-f79R9QMMaQAZu2wh_j1KoP8lHAHuR5/s640/COVID_19_Visualized+%25281%2529.png" width="640" /></a></div>
<br /></div>
</div>
<div>
<br /></div>
</div>
Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.com10tag:blogger.com,1999:blog-4507029395557219557.post-27702804229753789552019-08-06T17:08:00.001-04:002019-08-06T17:08:58.102-04:00Salesforce Analytics Explained - Standard Deviation<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMV7qXXa7V0naFxiYoHBHXan3D22qNe-aTSHGYSdzv0iSkLfWExpLA_ysYmQZi2kZJwZw5HMk3yGbpgLtPDH81VM4q9A7c-el35tMWltc_XSsqHrIfZ4xntLfa5xVuLWcIaNXX0WPHEuKN/s1600/stddev.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="288" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMV7qXXa7V0naFxiYoHBHXan3D22qNe-aTSHGYSdzv0iSkLfWExpLA_ysYmQZi2kZJwZw5HMk3yGbpgLtPDH81VM4q9A7c-el35tMWltc_XSsqHrIfZ4xntLfa5xVuLWcIaNXX0WPHEuKN/s320/stddev.PNG" width="320"></a></div>
While working with aggregation in Analytics, sum usually takes a staring role. You might have not known, but there are many other aggregate functions that produce interesting results.<br>
<br>
For example, min, max, first, last, average and stddev are available to help slice and dice your data. The full list of <a href="https://developer.salesforce.com/docs/atlas.en-us.bi_dev_guide_saql.meta/bi_dev_guide_saql/bi_saql_functions_aggregate.htm">aggregate functions</a> is available in the help documents. <br>
<br>
The trick to access these other options in the user interface is scrolling down in the Measure selection box. Once you scroll, a world of other features become available.<br>
<br>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8u6atxfWOQqEGhewT9drWtW_wQ3V9uDd5afcR2_vTKuk4OpY4u2IeTL__knE2IxYFFVCGKLkD1Jv-3oIdhsivV9xqCHnSVU87WFKtt4OdjF1UxySjvupOx10Ytrxqyjv_wp6I3FHOIGdt/s1600/Screen+Shot+2019-08-06+at+2.41.20+PM.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="502" data-original-width="739" height="217" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8u6atxfWOQqEGhewT9drWtW_wQ3V9uDd5afcR2_vTKuk4OpY4u2IeTL__knE2IxYFFVCGKLkD1Jv-3oIdhsivV9xqCHnSVU87WFKtt4OdjF1UxySjvupOx10Ytrxqyjv_wp6I3FHOIGdt/s320/Screen+Shot+2019-08-06+at+2.41.20+PM.png" width="320"></a></div>
For our example, we will use the average and standard deviation (stddev) operations. First, these aggregate functions will be used in a compare table to build a chart of averages with lines breaking down the values for one and two standard deviation from the average. <br>
<br>
As a bonus, a binding statement will enable switching the chart between one and two standard deviations. All of this can be done without writing a single SAQL statement.<br>
<br>
<br>
</div><a href="http://blog.canntechnology.com/2019/08/salesforce-analytics-explained-standard.html#more">Read more »</a>Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.com0tag:blogger.com,1999:blog-4507029395557219557.post-90600230576655913162018-10-16T09:47:00.000-04:002018-10-16T09:49:31.763-04:005 Steps to Killer Einstein Analytics Dashboards<div dir="ltr" style="text-align: left;" trbidi="on">
Building great dashboards in Einstein Analytics is a combination of art and science. You can build pretty visualizations. If a user can’t take action from the dashboard, it won’t be used. If you throw tons of data at users and they can’t draw insight from it, the dashboard will be ignored.<br>
<br>
Dashboards need to be a visual representation of the user’s business goals, with insights that are actionable. Both the art and the science are required to create a meaningful dashboard that engage users. Here are 5 steps to building killer Einstein Analytics dashboards that users will love.<br>
<br>
<br>
</div><a href="http://blog.canntechnology.com/2018/10/5-steps-to-killer-einstein-analytics_16.html#more">Read more »</a>Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.com1tag:blogger.com,1999:blog-4507029395557219557.post-72623382940557900212018-03-19T09:48:00.000-04:002018-03-19T09:48:43.022-04:00Adding Subtotals to Einstein Analytics Table<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: left;">
Tables in Einstein Analytics are quite flexible. They can be very useful for calculating columns and manipulating data. One feature they lack is the ability to show subtotals. Here's a video walkthrough of how you can add subtotals to a pivot table with SAQL.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/vkuQ5PIDiIQ/0.jpg" src="https://www.youtube.com/embed/vkuQ5PIDiIQ?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
<br /></div>
Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.com6tag:blogger.com,1999:blog-4507029395557219557.post-20306384927944669472017-08-01T08:00:00.000-04:002017-08-13T16:50:47.188-04:00Analytics Explained - Compare Table Unleashed<div dir="ltr" style="text-align: left;" trbidi="on">
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKkiERs3IdvLL0t-z_xRS8Np-aZ_srpMnsF_wmw2NBncrppmAY1dG4FOMA3hyphenhyphenKAQN3QDbgzshf2EPP8RRtnmAp8PGmiibaK-89ifKCXwu3x4gVSBPsX4cREQObFh3k7IafLr_PapIg5jXh/s1600/Screen+Shot+2017-07-31+at+7.50.03+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="1497" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKkiERs3IdvLL0t-z_xRS8Np-aZ_srpMnsF_wmw2NBncrppmAY1dG4FOMA3hyphenhyphenKAQN3QDbgzshf2EPP8RRtnmAp8PGmiibaK-89ifKCXwu3x4gVSBPsX4cREQObFh3k7IafLr_PapIg5jXh/s320/Screen+Shot+2017-07-31+at+7.50.03+PM.png" width="299"></a></div>
The compare table, only good for showing boring rows of data, right? Definitely not the case! The compare table has more to offer than it first appears.<br>
<br>
I've created an unmanaged package that explores how to unlock the full power of the compare table, no SAQL coding required. Learn how drive better insights in Einstein Analytics through the following: <br>
<br>
- Building killer dashboards without writing code<br>
<br>
- Creating advanced compare table charts, such as timeline charts with separate lines by year<br>
<br>
- Tips and tricks for creating formula columns and using functions<br>
<br>
- Leveraging advanced functions for rankings, period over period changes and running totals<br>
<br>
- Strategies to handle null values and turn 'No Results Found' into zeros<br>
<div>
</div>
<br>
<br>
</div></div><a href="http://blog.canntechnology.com/2017/08/analytics-explained-compare-table.html#more">Read more »</a>Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.com0tag:blogger.com,1999:blog-4507029395557219557.post-28238988370330444282017-04-24T12:05:00.001-04:002017-04-24T12:05:35.714-04:00Summer 17– Hottest Analytics Cloud Features<div dir="ltr" style="text-align: left;" trbidi="on">
<a href="https://lh3.googleusercontent.com/-BbaiaJtQtQ8/WP4TYLUOcHI/AAAAAAAAAso/y5snZP8veC8PgMUW-sggMINhyVBfMqiWgCHM/s1600-h/s17%255B9%255D"><img align="left" alt="s17" border="0" height="57" src="https://lh3.googleusercontent.com/-oXLBKHg5rlA/WP4TYR8U9XI/AAAAAAAAAss/N6vHMndfmK0xlSSJKQtRhp0tPzNOf9TKQCHM/s17_thumb%255B7%255D?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; float: left; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="s17" width="79"></a>As the weather heats up, thoughts turn toward Summer. After reviewing the <a href="https://releasenotes.docs.salesforce.com/en-us/summer17/release-notes/salesforce_release_notes.htm">release notes</a> and working in a <a href="https://www.salesforce.com/form/signup/prerelease-summer-17.jsp">pre-release org</a>, here are the hottest features coming in the Analytics Cloud Summer 17 release.<br>
<br>
</div><a href="http://blog.canntechnology.com/2017/04/summer-17-hottest-analytics-cloud.html#more">Read more »</a>Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.com0tag:blogger.com,1999:blog-4507029395557219557.post-26339012852579222062017-04-12T21:12:00.000-04:002017-04-13T16:23:31.757-04:00Salesforce Wave Explained - Replication<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOa7hmMMCmRHB8qbNfp6wOkC47t3Pn91bambvZx6i-s7cAlx8tDZRiX_ntDA1kRw1eg06FH-B0yrORJopKU7MeCqvrZN0jRhkenh-eUj7TojD9-dPcp2r-wgSNhbWcoTSO2VWfadScubfI/s1600/Screen+Shot+2017-03-22+at+9.02.21+PM.png" imageanchor="1" style="clear: left; display: inline; float: left; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" height="131" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOa7hmMMCmRHB8qbNfp6wOkC47t3Pn91bambvZx6i-s7cAlx8tDZRiX_ntDA1kRw1eg06FH-B0yrORJopKU7MeCqvrZN0jRhkenh-eUj7TojD9-dPcp2r-wgSNhbWcoTSO2VWfadScubfI/s320/Screen+Shot+2017-03-22+at+9.02.21+PM.png" width="320"></a><br>
Salesforce Analytics Cloud includes a replication feature that will pre-populate Wave with Salesforce data. Replicated data can greatly improve dataflow execution times. <br>
<br>
Enabling replication also consolidates multiple digest statements in dataflows into a single extract. If you have used the Dataset builder and selected the same object more than once, your dataflow will digest that object multiple times.<br>
<br>
Simply check the option and away you go....well almost. There are a few considerations to take into account when using replicated data. Here's what to keep in mind as well as a list of my Tips & Tricks.<br>
<br>
</div></div><a href="http://blog.canntechnology.com/2017/04/salesforce-wave-explained-replication.html#more">Read more »</a>Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.com1tag:blogger.com,1999:blog-4507029395557219557.post-59159807219166152122017-03-21T08:50:00.000-04:002017-03-21T08:50:12.774-04:00Salesforce Wave Explained - Independent Chart Comparison<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<img border="0" height="280" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2hPGguPGdvnIJkTd8HoO9KniTMbIBizOoWxhjVAlbcYog0lEVQf_n1dAaRO42ou8-7R_jov4diOeb5-Q_0eP9ahd0zAFhH4z70afpOiEh7PnzXJUiGf6xXQTFMySXd2TtqM9x0Jr_8xFo/s640/Screen+Shot+2017-03-18+at+1.29.59+PM.png" style="text-align: left;" width="640"><span style="text-align: left;"> </span></div>
<br>
<br>
<div class="separator" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: left;">
A client recently requested the ability to look at two charts on the same dashboard in <a href="https://www.salesforce.com/products/analytics-cloud/overview/">Salesforce Analytics Cloud</a>, each with its own set of date ranges. For example, being able to look at average sales amount for the current year in one chart and the prior year in another chart.</div>
<br>
While this may seem like a daunting request at first, it's actually quite simple to build this dashboard. In fact, it can be done without any SAQL and only a few lines of JSON. Here is how to build it.<br>
<br>
</div></div><a href="http://blog.canntechnology.com/2017/03/salesforce-wave-explained-independent.html#more">Read more »</a>Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.com0tag:blogger.com,1999:blog-4507029395557219557.post-25652186083999140492017-02-02T11:40:00.000-05:002017-05-17T15:31:01.734-04:00Salesforce Wave Explained - XMD 2.0 Migration<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7YjmANEE4ObyPNNeYf3FV4aqaq1sFrms5u0EXSh2LT7vwlVydkOJHicWJiYDWzTzLYn4c3GWJtjHcZgJv53P0ACueEVqiJuQa1sCNN1H8j8W0Btw_JKAHGS5U3IZeZ48UknoyusVpu15B/s1600/json.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7YjmANEE4ObyPNNeYf3FV4aqaq1sFrms5u0EXSh2LT7vwlVydkOJHicWJiYDWzTzLYn4c3GWJtjHcZgJv53P0ACueEVqiJuQa1sCNN1H8j8W0Btw_JKAHGS5U3IZeZ48UknoyusVpu15B/s200/json.png" width="200"></a></div>
<div style="text-align: left;">
The Winter 17 Salesforce release included a new format for Extended Metadata (XMD), which is used to customize the formatting of dashboard elements in <a href="https://www.salesforce.com/products/analytics-cloud/overview/">Wave Analytics</a>. The pre-Winter 17 version is known as XMD 1.1, while the new format is XMD 2.0.</div>
<div style="text-align: left;">
<br></div>
<div style="text-align: left;">
In addition to the format change, XMD became a Base Platform Object, rather than a JSON file on the dataset. You still use JSON to specify and upload the XMD. As a Base Platform Object, you can manipulate JSON through APIs, such as the <a href="https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/intro_what_is_rest_api.htm">REST API</a> through <a href="https://workbench.developerforce.com/login.php">workbench</a>. It also means the XMD format and contents are validated, allowing only correct JSON files to be uploaded.</div>
<div style="text-align: left;">
<br></div>
<div style="text-align: left;">
While there is an <a href="https://developer.salesforce.com/docs/atlas.en-us.bi_dev_guide_xmd.meta/bi_dev_guide_xmd/bi_xmd_intro.htm">XMD Overview</a> and <a href="https://developer.salesforce.com/docs/atlas.en-us.bi_dev_guide_xmd.meta/bi_dev_guide_xmd/bi_xmd_reference.htm">Reference</a> guide in the developer documentation, some of the examples still retained the 1.1 format. There is also a help document that discusses the transition from <a href="https://help.salesforce.com/articleView?id=XMD-1-1-to-2-0-Transition&type=1">1.1 to 2.0</a>, which give before and after pseudo code. </div>
<div style="text-align: left;">
<br></div>
<div style="text-align: left;">
What I did not find were before (1.1) and after (2.0) examples for transforming each section of an existing XMD 1.1 file. Here is my outline for turning XMD 1.1 into XMD 2.0, section by section, with before and after examples.</div>
<div style="text-align: left;">
</div>
</div><a href="http://blog.canntechnology.com/2017/02/salesforce-wave-explained-xmd-20.html#more">Read more »</a>Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.com8tag:blogger.com,1999:blog-4507029395557219557.post-35735558581524758212017-01-25T19:58:00.001-05:002017-01-25T19:58:15.844-05:00Analytics Cloud Solved - Failed to Register 1 Files<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg76D2dhWlb1b6bY43TRVrcmXBA26LsMQNVFcTjOy-er9LoNb9P3K2cHY7EpkGDsTsXdEoDOMv_t4-fsn2FoUfAXtNEALBnoPb2nEfhzqrO3hb79yPckk95ZowdjAcOMVekt0RaPzEuMySJ/s1600/beach-1851101_1920.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg76D2dhWlb1b6bY43TRVrcmXBA26LsMQNVFcTjOy-er9LoNb9P3K2cHY7EpkGDsTsXdEoDOMv_t4-fsn2FoUfAXtNEALBnoPb2nEfhzqrO3hb79yPckk95ZowdjAcOMVekt0RaPzEuMySJ/s200/beach-1851101_1920.jpg" width="200"></a></div>
<div style="text-align: left;">
<span style="color: #17324d; font-family: salesforce sans, helvetica neue, helvetica, arial, sans-serif;"><span style="background-color: white;">Recently, I was working to update datasets in <a href="https://www.salesforce.com/products/analytics-cloud/overview/">Salesforce Analytics Cloud</a>. Some of my fields in the dataset were changing to support new functionality. </span></span></div>
<div style="text-align: left;">
<span style="color: #17324d; font-family: salesforce sans, helvetica neue, helvetica, arial, sans-serif;"><span style="background-color: white;"><br></span></span></div>
<div style="text-align: left;">
<span style="color: #17324d; font-family: salesforce sans, helvetica neue, helvetica, arial, sans-serif;"><span style="background-color: white;">As part of the changes, some of the attributes and measures in data set were removed and new fields were added. While working with Wave is usually smooth sailing, this time I encountered rough waters.</span></span></div>
<div style="text-align: left;">
</div>
</div><a href="http://blog.canntechnology.com/2017/01/analytics-cloud-solved-failed-to.html#more">Read more »</a>Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.com2tag:blogger.com,1999:blog-4507029395557219557.post-29014832163143936972016-11-07T21:20:00.002-05:002016-11-08T06:50:51.510-05:00Salesforce Wave Explained - External Data Upsert, Append and Delete<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ8cerNxNsjveLOT55kyfG62TXgfmM1KWewTsztUPZ8pNRMXL9_ceNW1J7EGRzvt8tEN0xum5qy-61LHpDyl6BAyydku7UtVB71nkWbDSz42X1i5xTdVdrzaFlXYFaj67_BiWlNAF8wRsa/s1600/Screen+Shot+2016-11-07+at+7.56.09+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ8cerNxNsjveLOT55kyfG62TXgfmM1KWewTsztUPZ8pNRMXL9_ceNW1J7EGRzvt8tEN0xum5qy-61LHpDyl6BAyydku7UtVB71nkWbDSz42X1i5xTdVdrzaFlXYFaj67_BiWlNAF8wRsa/s200/Screen+Shot+2016-11-07+at+7.56.09+PM.png" width="200"></a></div>
Most of us are familiar with the <a href="https://help.salesforce.com/articleView?id=bi_dataset_create.htm&type=0&language=en_US">Create New Dataset</a> capabilities in <a href="https://www.salesforce.com/products/analytics-cloud/overview/">Salesforce Wave Analytics</a>. It's a quick and easy method to import a csv (comma separated values) file into Analytics Cloud. Behind the scenes, the <a href="https://developer.salesforce.com/docs/atlas.en-us.bi_dev_guide_ext_data.meta/bi_dev_guide_ext_data/bi_ext_data_overview.htm">External Data API</a> is used to load the dataset. <br>
<br>
If you have only used the Wave User Interface, you may have though Overwrite was the only available operation. Each time to specify a dataset or update an existing data set with Wave, it overwrites the entire dataset with the new values. <br>
<br>
There's a lot more to the External Data API, including the ability to append, upsert and delete data. Let's dig deeper into the capabilities of the External Data API and how to do more than just overwriting data.<br>
<br>
<br>
</div><a href="http://blog.canntechnology.com/2016/11/salesforce-wave-explained-external-data.html#more">Read more »</a>Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.com4tag:blogger.com,1999:blog-4507029395557219557.post-31201103972954232982016-08-16T19:18:00.000-04:002016-08-16T19:18:35.324-04:00Solving Change Set Error: Is Not a Valid Override for Action View<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjk1CIC628VYL9H8clmGTkUF59SP_WKT9vVOHjqLx3itIyCcMupb4MDo8HySAVnJWyp0tt0rjhYkRNLZDAbMQKcL2GnpFlnaKrwTfdghfwx7EgV6ybQ10XIkZ8EQ38ouY7ntNu7obh5f1UW/s1600/Screen+Shot+2016-08-16+at+6.21.19+PM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="184" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjk1CIC628VYL9H8clmGTkUF59SP_WKT9vVOHjqLx3itIyCcMupb4MDo8HySAVnJWyp0tt0rjhYkRNLZDAbMQKcL2GnpFlnaKrwTfdghfwx7EgV6ybQ10XIkZ8EQ38ouY7ntNu7obh5f1UW/s200/Screen+Shot+2016-08-16+at+6.21.19+PM.png" width="200"></a></div>
Recently, I was promoting changes from a Sandbox org to a Production environment. While my change set had a lot of items, they were all rather basic - custom objects, custom fields, tabs, page layouts and list views. <br>
<br>
When validating my changes in the Production org, I encountered a rather unexpected error - Building_Record_Page does not exist or is not a valid override for action View. In my case, Building was the name of one of my custom objects.<br>
<br>
While I thought this was a straight forward item to resolve, my initial hypothesis on the source of the error was incorrect. Here's my journey to find the root cause and resolve the issue.<br>
<br>
</div><a href="http://blog.canntechnology.com/2016/08/solving-change-set-error-is-not-valid.html#more">Read more »</a>Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.com37tag:blogger.com,1999:blog-4507029395557219557.post-11757561699689367122016-06-27T08:00:00.000-04:002016-06-27T08:00:12.989-04:00Salesforce Wave Explained - Cogroup<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2SVmO4vQvJdBJBWay0hLhsdvsmiwCez6tf1ReRu-SszwVIXH6GHNkiKN0ps3Dz0jrn0VxgCxES61LfZOALDTepSGH-Ud27KPC603WHDXatEg-FoIA1p271x1yL0G46mu-w45UDu2-seIF/s1600/analytics-cloud-solutions-overview-iphoneiwatch-top-495x661.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2SVmO4vQvJdBJBWay0hLhsdvsmiwCez6tf1ReRu-SszwVIXH6GHNkiKN0ps3Dz0jrn0VxgCxES61LfZOALDTepSGH-Ud27KPC603WHDXatEg-FoIA1p271x1yL0G46mu-w45UDu2-seIF/s200/analytics-cloud-solutions-overview-iphoneiwatch-top-495x661.jpg" width="149"></a></div>
Lately, I have received a few questions around ways to combine data in <a href="http://www.salesforce.com/analytics-cloud/overview/">Salesforce Wave</a>. Previous posts have covered <a href="http://blog.canntechnology.com/2015/05/how-to-combine-salesforce-and-external.html">combining internal and external data</a> with data flow transformations. If combining data while loading is not an option, there are other ways to get the results you need. While the <b>group</b> statement is a staple of SAQL, its sibling <b>cogroup</b> has a staring role when combining multiple input streams. Let's take a closer look at <a href="http://blog.canntechnology.com/2015/05/how-to-combine-salesforce-and-external.html">cogroup</a> and how we use it to combine two datasets.<br>
<br>
<br>
</div><a href="http://blog.canntechnology.com/2016/06/salesforce-wave-explained-cogroup.html#more">Read more »</a>Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.com9Allentown, PA, USA40.6084305 -75.49018330000001240.5119705 -75.651544800000011 40.7048905 -75.328821800000014tag:blogger.com,1999:blog-4507029395557219557.post-65853020710723405122016-05-22T18:43:00.001-04:002016-05-22T18:43:35.190-04:00App Launch - Your ISV Business Plan<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu9af1i0aWblb3azPgi-fEnkQOBS41hSPigXzJzJfEY4Tw9Elnbw4lRbgDlT6ml2dhoYa6T3x094-ZBQTX-gD5aWS6taqd4bfWovf3LI75cbJzL0Ykb3BtveCvWiH8EC1tYnXoOhZCCns9/s1600/trailhead_module_isv_business_planning.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu9af1i0aWblb3azPgi-fEnkQOBS41hSPigXzJzJfEY4Tw9Elnbw4lRbgDlT6ml2dhoYa6T3x094-ZBQTX-gD5aWS6taqd4bfWovf3LI75cbJzL0Ykb3BtveCvWiH8EC1tYnXoOhZCCns9/s1600/trailhead_module_isv_business_planning.png"></a></div>
Presently, I am in the midst of another app launch to the Salesforce <a href="https://appexchange.salesforce.com/">App Exchange</a>. As usually the case, experience has been a good teacher in the dos and don'ts of building out both the business and technical side at an ISV.<br>
<br>
With the latest launch of new Trailhead content, there are additional tools to help you chart your way to success. I have gone through the I<a href="https://appexchange.salesforce.com/">SV Business Planning</a> trail and it covers a lot of key points that can help you out on your journey. Here's my review of the new content.<br>
<br>
</div><a href="http://blog.canntechnology.com/2016/05/app-launch-your-isv-business-plan.html#more">Read more »</a>Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.com0tag:blogger.com,1999:blog-4507029395557219557.post-41675678872422219572016-05-13T08:53:00.001-04:002017-03-18T13:02:18.205-04:00Crashing Process Builder<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA_iEKVt3XmleELYiFduIgc1zlp9a0mueTh6583imtC_9xF9B-kI__YU5DS-Z5GG0M8B7QgCf51KogMjL7j37yoloPikV9-a0NC12hUafE6ZrgzvK2gel4GEgWkZIuYHfdKJpjg86x7fQP/s1600/Screen+Shot+2016-05-13+at+8.29.33+AM.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="238" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA_iEKVt3XmleELYiFduIgc1zlp9a0mueTh6583imtC_9xF9B-kI__YU5DS-Z5GG0M8B7QgCf51KogMjL7j37yoloPikV9-a0NC12hUafE6ZrgzvK2gel4GEgWkZIuYHfdKJpjg86x7fQP/s320/Screen+Shot+2016-05-13+at+8.29.33+AM.png" width="320"></a></div>
I have been doing a quite a bit of work lately with <a href="https://developer.salesforce.com/trailhead/en/business_process_automation/process_builder">Lightning Process Builder</a>. It has been very helpful in automating various business processes.<br>
<br>
I had the need to kick things up a notch a dive into Invocable Methods as an immediate action in my flow. There are some great posts out there on <a href="http://bobbuzzard.blogspot.com/2015/02/lightning-process-builder-and-invocable.html">Lightning Process Builder and Invocable Methods</a>, if you want to learn more.<br>
<br>
One of the features with the <a href="https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_annotation_InvocableMethod.htm">InvocableMethod annotation</a> is the ability to add a label and description to your provide more context when in Process Builder.<br>
<br>
</div></div><a href="http://blog.canntechnology.com/2016/05/crashing-process-builder.html#more">Read more »</a>Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.com0tag:blogger.com,1999:blog-4507029395557219557.post-64854595109935452682016-04-24T21:13:00.002-04:002017-03-20T20:46:57.749-04:00Summer 16 - Top Nine New Features<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUKXHM_DwhHXDZKUIvkyF1ISV2DtIn6bTPWC_99mgaBuj-YHt7kKFCthKK1qvfazfpA4mGToVS6JaZlMNWqDvNCHDTOlnjuXcYVocALM-dKG3fTGDCXS8AOmzl7ToN9iqeJTKsS2sCgGJw/s1600/2016_summer.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUKXHM_DwhHXDZKUIvkyF1ISV2DtIn6bTPWC_99mgaBuj-YHt7kKFCthKK1qvfazfpA4mGToVS6JaZlMNWqDvNCHDTOlnjuXcYVocALM-dKG3fTGDCXS8AOmzl7ToN9iqeJTKsS2sCgGJw/s1600/2016_summer.png"></a></div>
Raindrops on roses, whiskers on kittens and the Summer 16 release -- these are a few of my favorite things. With the <a href="https://releasenotes.docs.salesforce.com/en-us/summer16/release-notes/salesforce_release_notes.htm">Summer 16 Release Notes</a> preview arriving last Friday, we are officially in upgrade season. Be sure to check out the full <a href="https://www.salesforce.com/blog/2016/04/salesforce-lightning-summer-16.html">schedule of key dates</a> in the release process. Of particular importance is the <a href="https://www.salesforce.com/blog/2016/04/salesforce-summer-16-sandbox-preview-instructions-1.html">Preview Sandbox</a> cut off date of April 29. After perusing the almost 400 page release document and jumping into my pre-release org, here are my top nine new features.<br>
<br>
<br>
</div><a href="http://blog.canntechnology.com/2016/04/summer-16-top-nine-new-features.html#more">Read more »</a>Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.com0tag:blogger.com,1999:blog-4507029395557219557.post-50550471557567866962016-04-07T09:17:00.000-04:002016-04-07T12:28:09.123-04:00Where's Astro?<div dir="ltr" style="text-align: left;" trbidi="on">
<br>
<div style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">
</div>
<br>
<img alt="Astro is missing! Last seen April 1, 2016" class="aligncenter wp-image-143621" src="http://res.cloudinary.com/hzxejch6p/image/upload/v1459453625/2016-03-860x250-trailhead-wheresastro-blog_banner_guvmgz.png" height="185" width="640"><br>
<br>
Do you like adventure and the chance to win prizes? Then <a href="https://developer.salesforce.com/trailhead/">Trailhead</a> needs your help! Astro is missing, as of April 1st. Of course, at my house this seems to be a regular occurrence. See if you can find Astro in the below photo (both big and little Astro are hiding among their friends).<br>
<br>
</div><a href="http://blog.canntechnology.com/2016/04/wheres-astro.html#more">Read more »</a>Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.com0tag:blogger.com,1999:blog-4507029395557219557.post-10452379261949454732016-02-23T20:34:00.001-05:002016-02-23T20:34:29.706-05:00What Sets Salesforce Apart<p><a href="https://lh3.googleusercontent.com/-iFW4vGE9wzU/Vs0IoZ8HT6I/AAAAAAAAAYc/XcOifp5jXvM/s1600-h/trailhead_trail_salesforce_advantage%25255B3%25255D.png"><img title="trailhead_trail_salesforce_advantage" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; float: left; padding-top: 0px; padding-left: 0px; margin: 0px 10px 0px 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="trailhead_trail_salesforce_advantage" src="https://lh3.googleusercontent.com/-wEVZmGHbdBo/Vs0IpO6Du4I/AAAAAAAAAYg/Vzt4Pk6pi-U/trailhead_trail_salesforce_advantage_thumb%25255B1%25255D.png?imgmax=800" width="244" align="left" height="244"></a></p> <p>As <a href="http://trailhead.salesforce.com">Trailhead’s</a> content continues to evolve, it’s only a matter of time before it becomes the first stop to learn about <a href="http://www.salesforce.com/">Salesforce</a>. The recent release of new trails and modules continues the expansion from its technical roots to a wider focus. </p> <p>For instance, lets take a look at the Navigate the Salesforce Advantage trail. This trail helps explain who Salesforce is (usefully if you have ever tried to explain this to your family), the basics and benefits of the platform, as well as the power of the ecosystem. While there are four modules in the trail, I am going to focus on two of them.</p> <a href="http://blog.canntechnology.com/2016/02/what-sets-salesforce-apart.html#more">Read more »</a>Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.com0tag:blogger.com,1999:blog-4507029395557219557.post-2538493311980858782016-02-23T19:04:00.003-05:002016-02-23T19:04:52.185-05:00Wave API and Wave Tools<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeGEYoTdzjiZUuIJwD3CHC9UMzzjcDrPQrHjs86dbG6_T5uCR4VWhHqyTXrsfT49iLL6hnPgSLihMVaw-zxU-Q0iTNHEpxi1VMKzmloi66GU-_VsAE9Bc5pG5JBawCGNhj5r0873fxyXyg/s1600/analytics-cloud-operational-reports-vs-wave_promo-495x495.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeGEYoTdzjiZUuIJwD3CHC9UMzzjcDrPQrHjs86dbG6_T5uCR4VWhHqyTXrsfT49iLL6hnPgSLihMVaw-zxU-Q0iTNHEpxi1VMKzmloi66GU-_VsAE9Bc5pG5JBawCGNhj5r0873fxyXyg/s200/analytics-cloud-operational-reports-vs-wave_promo-495x495.jpg" width="200"></a></div>
The Spring 16 release of the Analytics Cloud included the Wave REST API moving from <a href="https://releasenotes.docs.salesforce.com/en-us/spring16/release-notes/rn_bi_develop_api_ga.htm">pilot to GA</a>. This is good news for all of us. The endpoints are now available with API version 36 and new development will have the backwards compatibility we are used to with the rest of the platform. <br>
<br>
However, this means the internal API used in prior Wave versions is now private and for Salesforce use only. While the API remains available for the next 12 months, newly created dashboard assets are not available.<br>
<br>
<br>
</div><a href="http://blog.canntechnology.com/2016/02/wave-api-and-wave-tools.html#more">Read more »</a>Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.com2tag:blogger.com,1999:blog-4507029395557219557.post-28752905608716688372016-02-21T18:42:00.002-05:002016-02-22T21:26:01.126-05:00It’s March SaaSness Time<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVt8FO1AN2cfVFYt9RR4ayYzNxDUsdXWOdeByn11ONsR8SmSd_7D9am5gZmJVnGtDQ55f2rhkbHxT3NtS1gOeswSjosH69yEBthrw6hyphenhyphenwowwtspbrwy0BAQfrFA2QGPhA5utEFHDocOJvj/s1600/ligtning_bball.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVt8FO1AN2cfVFYt9RR4ayYzNxDUsdXWOdeByn11ONsR8SmSd_7D9am5gZmJVnGtDQ55f2rhkbHxT3NtS1gOeswSjosH69yEBthrw6hyphenhyphenwowwtspbrwy0BAQfrFA2QGPhA5utEFHDocOJvj/s200/ligtning_bball.gif" width="200"></a></div>
Are you ready for March madness! Together with my pals <a href="http://peterknolle.com/">Peter Knolle</a> and <a href="http://jessealtman.com/">Jesse Altman</a>, we have put our own spin on the tournament season. As part of the <a href="http://www.meetup.com/Lehigh-Valley-Salesforce-Developer-Group/">Lehigh Valley Salesforce Developers User Group</a> March meetup, we have put together our very own bracket of Salesforce features.<br>
<br>
</div><a href="http://blog.canntechnology.com/2016/02/its-march-saasness-time.html#more">Read more »</a>Carl Brundagehttp://www.blogger.com/profile/08109407363176265016noreply@blogger.com0