Skip to main content

#Analytics31 discussing

Hi everyone,

I’m working on a Tableau dashboard where users select a Mission ID using a filter dropdown.

Some Mission IDs are milestone-based, while others are not.

I have a field [Milestone Rank], and the condition for a milestone-based Mission ID is:

COUNTD([Milestone Rank]) > 0

I have a separate dashboard section containing several milestone-related charts. What I want is:

  •  If the selected Mission ID is milestone-based → show the milestone section. 
  •  If the selected Mission ID is not milestone-based → completely hide the milestone section. 
  •  When the section is hidden, I also want the empty space to collapse, rather than leaving a blank area. 
  •  The Mission ID list comes from the database, so new Mission IDs can be added over time. 
  •  Ideally, I want to keep the Mission ID as a filter dropdown, rather than requiring the user to manually change another Show/Hide parameter. 

I tried using Dynamic Zone Visibility, but Tableau does not show my Boolean calculated field as an available value for “Control visibility using value.”

I also tried a Boolean parameter for Show/Hide, but then the user has to manually change the parameter every time they select a different Mission ID, which isn't practical.

Is there a way to make Dynamic Zone Visibility respond automatically to the selected Mission ID while keeping the Mission ID as a filter?

If not, what would be the recommended Tableau approach for achieving:

Mission ID filter → detect whether milestone exists → automatically show/hide a dashboard zone → collapse the space when hidden?

Thanks! 

 

#Tableau Desktop & Web Authoring  #Reports & Dashboards  #Tableau Cloud  #Automation  #Analytics

4 answers
  1. Oct 22, 9:10 AM

    Chris's set idea is the right way, I built it on Superstore to make sure it really drives the zone (screenshots below). A few details that made it work:  

     

    Create a set on Mission ID (right-click the field > Create > Set) and use it in place of the Mission ID filter, so every sheet that was filtered by Mission ID now has the set on Filters showing IN. Then right-click the set > Show Set, and on the card's menu choose Single Value (dropdown). For your users it looks almost the same as the dropdown they have now, the only difference is there's no (All) option in single value mode.  

     

    Keep the set dropdown outside the container you hide. If it sits inside it, it disappears with the section and nobody can switch back.  

     

    The visibility field must be one value for the whole workbook, so the whole comparison goes inside the braces:  

     

    { FIXED : COUNTD(IF [Mission ID Set] THEN [Milestone Rank] END) > 0 }   

     

    Written as { ... } > 0 it won't show up in the list, that's the bit Chris mentioned. And because it's a FIXED, normal filters don't affect it. If another filter on the dashboard should count too (date, region...), right click it and Add to Context.  

     

    Put the milestone sheets in one tiled container, select the container, go to the Layout tab, tick Control visibility using value and pick the field. When it's False the container goes away and the tiled items around it take the space, so no blank area.  

     

    In my test the field is "does the selected state have any order with a 50% or bigger discount": Texas shows the section, California hides it. Same structure as yours, just swap in Mission ID and Milestone Rank.  

     

     

    Chris's set idea is the right way, I built it on Superstore to make sure it really drives the zone (screenshots below).

     

     

    dzv-set-california.png

     

     

0/9000

Hi everyone, 

I'm encountering an error while trying to create a new Analytics App using the built-in Sales Analytics Template in Salesforce Analytics Studio. 

Error Details: 

  • Error message: "Unable to create app based on template: [sfdc_internal__Sales_Analytics_Flex]"
  • Specific error: "Failed to parse the expression [${App.Datasets.case.FullyQualifiedName}]"

What I've already checked: 

  • I have a dataset created from the Case object
  •  The dataset is named "case" (lowercase)
  •  The dataset contains data and is accessible
  •  I have proper permissions to create Analytics apps

  

Environment:

 

  • Salesforce Analytics Studio
  • Using the standard Sales Analytics template (sfdc_internal__Sales_Analytics_Flex)

 

Question:

 Has anyone encountered this issue before? The template seems to be looking for a specific dataset reference that I believe I have set up correctly. What could be causing this parsing error, and are there any additional requirements or configurations I might be missing?  

Application Error when creating Analytics App from Sales Analytics Template - Dataset reference issue

 

 

3 answers
  1. Jun 26, 2025, 10:59 AM

    Good news, @Thìn Nguyễn

    ! 

    After checking with product management, I got the update that this was a known issue and the bugfix will be available next week. You should be able to use the template in one week from today.

0/9000
6 answers
0/9000

Hi! I’m trying to embed a Tableau Cloud dashboard in Salesforce so that users can view the dashboard without having to authenticate separately with Tableau. 

 

From what I understand, using Tableau Embedding + Tableau View requires SSO configuration with a dedicated user account, which I don’t currently have available. 

 

Is there a way to configure authentication using an external application or Tableau Connected App so that users can access the embedded Tableau dashboard without having to reauthenticate with Tableau Cloud? 

 

Any guidance on the recommended approach would be greatly appreciated. Thank you!  

 

#CRM Analytics #Tableau Cloud #Salesforce Admin #Analytics

3 answers
  1. Oct 8, 2:34 PM

    Diego, that OAuth 2.0 trust connected app is the path I'd point Kathy to for the standard Tableau LWC. Once Tableau Embedding is set up in Salesforce and Enable Single Sign-On is on, the component handles the handshake. She doesn't need a separate token service for that route.

    Kathy, the trusted URL and the site ID get the viz onto the page. Each person still needs their own Tableau Cloud user with access to the workbook. The connected app doesn't create those users.

0/9000

Hi, I’m working on a data visualization assignment using a Gaming and Mental Health dataset. My dashboard compares gaming addiction risk level with average daily gaming hours, average sleep hours, and average social isolation score.

Does the dashboard story flow clearly from gaming behavior to sleep and social isolation? Are the chart titles, color use, and takeaway statement easy to understand? Any suggestions for improving layout or readability? 

 

#Tableau Desktop & Web Authoring  #Analytics

1 comment
  1. Oct 6, 7:58 PM

    I also have the same question about the overall flow of the dashboard. I think connecting gaming addiction risk with average daily gaming hours first and then moving into sleep hours and social isolation makes sense because it gives the viewer a natural progression from gaming behavior to possible related outcomes. I would mainly make sure each chart has a title that clearly tells the viewer what they are looking at rather than using short or generic labels. The takeaway statement should also be easy to understand on its own, so someone who has not seen the dataset before can quickly understand the main pattern without having to interpret every chart first. 

     

    For the layout, I would try to keep the most important comparison visually prominent and make the other charts support that main story rather than competing for attention. Using the same color meaning throughout the dashboard would probably make it easier to compare the different risk levels, while too many colors could make the story harder to follow. I’d also check spacing, font sizes, axis labels, and whether any chart has unnecessary elements that could be removed. Overall, the story sounds clear, but I’d be interested in seeing how other people would arrange the charts so the connection between gaming behavior, sleep, and social isolation is immediately noticeable. A similar approach can be useful when looking at Free Fire beta, where keeping important information and comparisons visually clear can make it easier to understand what is changing between different versions or gameplay elements. Perfectly stated here  ffbeta.io

0/9000

Hello,

 

I want to see who is watching which record in Salesforce. Therefore I have Analytics Studio. I want to run my dataflow LightningUriEvent (which is from SF) but it always give me an error: "Something went wrong while executing the Sync_LightningUriEvent node: [error category: USER]: MALFORMED_QUERY: ;Id > '0bh000000000000' ORDER BY Id ASC LIMIT 1 OFFSET 249999; ^;ERROR at Row:1:Column:72;field 'Id' can not be sorted in a query call [error category: USER] [error code: 213] (02K9X0000033g0zUAA_03C9X000003DS9dUAG)"

What can I do about it? I didn't change anything. I just used this dataflow in a recipe with another object.

7 answers
0/9000

We are evaluating Agentforce Analytics in Agentforce Studio and would like to understand the licensing requirements. Is a Data Cloud license

required to use Agentforce Analytics, or can it be used with standard Agentforce licenses? If Data Cloud is required, which specific Data Cloud permissions, editions, or features are needed? 

 

#Agentforce  #AgentforceBuilder  #Analytics

4 answers
  1. Sep 30, 9:20 AM

    There is a request from an internal team at the organization to send a report extract from Salesforce to a shared network drive within the organization for a bot to pickup. Is there a way to automate this within Salesforce? 

0/9000

Is anyone else in this group using Revenue Insights?  We are just implementing it.  It's a very cool template - but not very customizable.  

6 answers
  1. Jun 11, 6:45 AM

    We’re seeing the same experience. Revenue Insights is a strong out‑of‑the‑box template with great prebuilt dashboards and KPIs, but it’s not very flexible for direct customization.

    The best approach is to use it as a foundation—keep the standard dashboards and build custom reports/dashboards in CRM Analytics for your specific needs. Most deeper customization happens in the underlying data layer rather than the template itself.

0/9000
1 answer
  1. Sep 21, 8:47 PM

    Hi Suraj,

    To write a unit test for a @future (callout=true) method, you need to mock the HTTP callout (using HttpCalloutMock) and enclose the execution between Test.startTest() and Test.stopTest(). Salesforce runs all asynchronous methods (like future methods) called within startTest() and stopTest() synchronously right when Test.stopTest() executes. 

     

    Here is an example test class structure to cover your method:

    1.Create a Mock Callout Class:

    Mock Implementation. 

    Create a mock class that implements HttpCalloutMock to return a fake JSON response simulating your patchCall output (ensuring it contains 'state' => 'Success' and a valid JSON structure with an id field).

    2.Prepare Test Data and Context:

    Test Setup. 

    In your test method, insert a test Bid_Review_Request__c record so that the update brUpdate; statement can successfully find and update a record in the database.

    3.Wrap in Start/Stop Test:

    Execution and Assertion. 

    Assign your mock, wrap the future method call inside Test.startTest() and Test.stopTest(), and assert that the record was updated successfully.

    Apex 

     

    @isTest

    private class NewProjectHandlerTopUpTest {

    // 1. Mock class for HTTP callouts

    public class MockHttpResponseGenerator implements HttpCalloutMock {

    public HTTPResponse respond(HTTPRequest req) {

    HttpResponse res = new HttpResponse();

    res.setHeader('Content-Type', 'application/json');

    res.setStatusCode(200);

    // Construct JSON response matching the parser requirements

    res.setBody('{"state": "Success", "resBody": "{\\"id\\": \\"12345\\"}"}');

    return res;

    }

    }

    @isTest

    static void testNewProjectHandlerTopUp() {

    // Create test record to satisfy update operation

    Bid_Review_Request__c testReq = new Bid_Review_Request__c(

    Name = 'Test Project'

    // Add required fields for Bid_Review_Request__c here

    );

    insert testReq;

    Map<String, String> recordMap = new Map<String, String>{

    'ID' => testReq.Id,

    'Name' => 'Test Project'

    };

    // Set mock callout

    Test.setMock(HttpCalloutMock.class, new MockHttpResponseGenerator());

    Test.startTest();

    // Calling the future method

    YourClassName.newProjectHandlerTopUp(recordMap, '{"test":"json"}', 'destination', 'WBS123');

    Test.stopTest(); // Future method executes here

    // Assertions to verify the record was updated

    Bid_Review_Request__c updatedReq = [SELECT WBS_Project__c FROM Bid_Review_Request__c WHERE Id = :testReq.Id];

    System.assertEquals('12345', updatedReq.WBS_Project__c, 'The WBS Project code should be updated successfully.');

    }

    }

    (Note: Replace YourClassName with the actual name of the Apex class containing your future method).

0/9000

I saw this in the Ohana Slack Group. Is there any truth to this, I certainly hope not? 

 

 

CRMA End of Life?

 

 

22 answers
  1. May 22, 2025, 5:01 PM

    Salesforce has not and is not considering to set CRM Analytics to End-of-Life.

    Yes, there are rumors in the market - they are simply wrong.

0/9000