Tableau Filter from calculated field, but I want to exclude some - tableau-api

I am trying to add to my current calculated field.
It is a fairly simple LEFT(UPPER([STR]),2) that I am currently using. This populates a filter list. However, I want to either modify the formula or the list itself to only include [STR] items where underlying data is and for any that do not have data, they are left off the list until they have data to be selecting.
think of the STR as if it were states abbreviations. IF COUNT([Things]) = 0 then I don't want the state on my filter list, but if there is or if there later gets some Things added in that state I want it to show up.
I tried using IF COUNT([Things]) > 0 THEN LEFT(UPPER([STR]),2) END but that doesn't seem to work. I am also open to just using a condition for showing the filter if that can work, but I am not sure how to set that up.

Strangely I had tried this solution before. I choose Show only relevant values on the filter in the filters box, that made it show nothing at all. However, if you click the drop down arrow on the Show filter card and choose show only relevant values that works.

Related

Tableau | Display different sheets by selecting option(s) from one particular filter

Is there a way to display different sheets by clicking/selecting values/options from one particular filter?
for example, if I have this filter:
and I need to display a sheet named Departments when I select Commercial from the filter shown in the PtrScn.
However, When I click/select any other options like HR, Information ...etc, I want it to display the associated sheet with the filter "Filter by Sector"
Any hints would be highly appreciated!
NOTE: I use tableau 2019.1 and it does not show "Change Parameter" that might be needed to approach this as I noticed when I have been researching for two days now!
You should use a container (say vertical) where you wanna put your N worksheets one on top of the other one without changing vertical spacing: just let Tableau do its stuff!
Be sure to remove the worksheet titles.
Once you're done, you need to create a parameter in order to handle all the N possible choices, and according to that you need to create N Calculated fields with a condition like this one:
if [Param] = 'Profit' then 'ok' else 'ko' end
Each calculated field will be used as a condition (select just ok values) in your filter selection.
Since the parameter can accept just one value a time, you will have just one of your N worksheet displaying data.
And this is the trick based on the vertical conatiner: if you hide worksheet titles, you will see "something" just for the selected worksheet and Tableau automatically will handle all the vertical space in the container.
The result will look like the following:
Adding to Fabio's great answer, these resources about collapsing containers may be useful:
Sheet swapping using collapsing containers
Automatically resize items in a Tableau container (or make disappear in your case)

Tableau Desktop Filter Disable/Enable

Working on Tableau desktop[Making a visualization] have two filters one cascaded to another.Need a help when making multiple selections in one filter should disable another filter. If one selection is made in a filter then other filter should be enabled and shown.
Looking for answers
Tableau graph
You could solve this in a dashboard using the sheet/object swapping and popping technique as explained here. Basically how it works is having a dummy sheet which is empty on a certain condition but which will have values if not. The parameter will be placed below this sheet which results in it moving downwards/upwards whenever the condition changes. Together with a motionless opaque text field it becomes possible to hide the filter. I tested the solution underneath.
You will need a calculated field hide_names which results in True if the condition is filled. In your case:
if COUNTD([Manager]) > 1 then False else True end
Next create a dummy worksheet which you will fill with another calculated field which does almost nothing e.g. 'a'. This sheet will be used to 'pop out' the filter in your dashboard. To have this functionality you need to drag the newly created hide_names into filters and filter on the custom value False.
Now let's look at the dashboard.
First bring in the original sheet together with the relevant filters.
Right click the manager filter and select "all using this data source". This way your dummy sheet will also be aware of changes in the filter.
Then create a horizontal floating object in which you need to drag the names filter. On top of the names you need to drag the dummy sheet so if the sheet is active it will push down the second filter.
What you should have now is once you select more than one manager a sheet containing 'a' is shown and the second filter is pushed down. This is not ideal. You will need one or two more things depending on the actual lay-out of your dashboard.
You can make your dummy sheet entirely white by changing the format so all rows/columns/text display white, disabling the tooltip and removing headers and titles.
Create a new empty floating text object. Right click on it and select format text object. Select white shading for this object. This way it becomes opaque. Drag and change dimensions of this object so it hides the second filter whenever the dummy sheet is shown.
Once you have all of these elements you can sort of play with it to make it work. You can find a demo of a dashboard with similar but not exactly the same functionality here.

Tableau add formula to dashboard action filter?

I've got a workbook I'm building using public data https://public.tableau.com/profile/alee4645#!/vizhome/JSAClaimantsWardtimeseries/Dashboard1
The basics are working as I want, you see the map, you click on one of the coloured areas and a time series chart appears below the map showing the change over time for that area.
I want to add a couple of comparisons to this data, for example I want the time series chart to show a line for the whole coloured area (Somerset) so people can see how one part of it compares to the overall average.
I have the figures as separate rows in the data but of course when the action filter is triggered they get filtered out along with everything else.
If I edit the action filter in the filter shelf for sheet 2, it has the condition tab and I was hoping I could add [ward code] = "E10000027" (the comparison data I want to use) to the formula box so it would also keep the relevant rows of data, but that stops the chart working altogether.
I could achieve it by getting people to choose an area from a parameter drop down but I'd rather let them click on the map so they don't need to know the name of the area they are interested in.
Can this be done?

Set the latest date value to the Quick Filter in TABLEAU

There is a live worksheet called Person with columns - Names & Birthdays. Need to create a quick filter with a default value pointing to the latest birthday.
For example: If there are 3 Records as follows,
Names Birthdays
A 8/9/1993
S 6/5/1994
Z 8/15/2000
The filter should hold the default value 8/15/2000 in it with other values unchecked in the drop down list.
I believe I see what you are asking. When you add your filter click the little drop down arrow in the filter --> edit filter-->select the tab labeled "Top"--> by field radio button==>Top from the first drop down-->enter 1 in the next field which will say by after it-->select birthday from the next drop down--then maximum. This will change the view to show only the most recent birthdate. Hope this helps.
Tableau currently doesn't give you dynamic control over quick filter defaults. For dates. They generally start out with the settings that were published.
Here are a few easy suggestions that are similar to, but not exactly, what you want. At the end, there is a way to do exactly what you want at the cost of more effort.
For continuous date fields, you can set the filter to show Relative Dates and the filter allows the user to easily set a range of dates showing the last N days, weeks or months relative to an anchor date. The anchor date defaults to the current date.
For discrete date fields, you can display a top filter as tia97 recommended, and show an integer valued parameter control to allow the user to pick N to see the latest N birthdays. (i.e. the N youngest people)
You could try other variations using parameters, calculated fields and quick filters, but it might be simpler to just show the list of birthdates and let people choose.
Finally, if you are publishing this workbook to Tableau Server, you can use the Javascript API to control the filtering user experience yourself. You can embed the Tableau visualization in a web page, surrounded by custom HTML, CSS and Javascript that you define. Build whatever controls you want for user interaction, and then send JavaScript commands to Tableau to direct the filter actions. More effort, but you get a lot more control over the UX.
Generally, I'd use the builtin features in Tableau Desktop as far as they go to get most of your desired UX quickly and easily, and then save the JavaScript API work for final polish on only your most public visualizations that really need it.

building a form with dynamic fields in progress 4gl

I am trying to display a list of open indents with check boxes before them each line. Based on the selection a report will be generated next with further details.
Table: xxind_mstr (xxind_nbr, xxind_shipto, xxind_askedby, xxind_date).
Is there any way that I can bring the records from xxind_mstr and place them in the FORM with check boxes ?
Note: This only works if dynamic. Never hardcode this approach.
Name each check box with the value of ROWID(xxind_mstr).
This way on the post you can read back through the each xxind_mstr getting the value of the the rowid.
Rod
I'd like some more info, just to know if I'm not talking rubbish here. You want to display the records in xxind_mstr as checkboxes, then upon selection of the report setup, fire the report respecting the checkboxes flagged? If so, then I'd use a browse pre-built with a temp-table containing the xxind_mstr records, and a "flagged" field, this being a logical view-as checkbox, and when they run the report, do a
FOR EACH ttxxind_mstr WHERE flagged = true, and you should have what you want.