Tableau mixing aggregate and non-aggregate IF - tableau-api

I am trying to add a calculated field in my Data Source connection.
If column 'Order Status' is not equal to 'Shipped' then give the sum of the 'Carton Count' else return 0.
This is what I tried and not sure why it won't let me use this.
IF([Order Status]) != 'Shipped'
THEN SUM([Carton Count])
ELSE 0
END

Tableau doesn't work in a traditional way where we aggregate the the measures in a formula, tableau doesn't allow you to aggregate in a calculated field instead you take measures as it is and use aggreagation at sheet level.
So your formula will be like:
IF([Order Status]) != 'Shipped'
THEN [Carton Count]
ELSE 0
END
When you drag this field on to sheet then aggregation is applied automatically

Related

Convert sql statemet to tableau calculated field

Sql :
sum(case when invoicestatus in ('a','b','c') THEN amount ELSE 0 END)
Tableau parameter : pivoicestatus = 'a','b','c'
Tableau calculated field:?
I want to use pinvoicestatus (parameter) instead of hardcoding the value inside Tableau calculated field
Tableau Calculated Field:
IF [pivoicestatus]='a'
THEN amount
ELSE IF [pivoicestatus]='b'
THEN amount
ELSE IF [pivoicestatus]='c'
THEN amount
ELSE 0
END

Type Mismatch: Date vs Boolean in tableau

I want to display the max date when two of the other conditions meet:
I am not sure what is the best way to to it is Tableau calculated field
{
CASE [Due Date] WHEN ([Data Type] = "REAL" and [Source] = "MMA")
THEN
{fixed :max([Due Date])}
ELSE "" END
}
Try defining a calculated field called, say Real_MMA_Due_Date that has a value only under the conditions you want and is null otherwise.
IF [Data Type] = "REAL" and [Source] = "MMA" THEN [Due Date] END
Then you can display Max(Real_MMA_Due_Date) or Min() as needed. Max() ignores nulls, so it will only consider values that pass your IF condition.
That's a flexible approach since it decouples the choice of aggregation function from the IF conditions, allowing you to use the field in multiple ways.
If instead, you need the MAX() embedded in the calculation for some reason, then wrap MAX() around the whole IF statement as in MAX(IF ... END)

IIF or IF statement in Tableau

I am trying to write a IIF statement in Tableau to check if a condition passes. If it fails the condition, I want it to show "No values" rather than filtering out the row.
Given below is the IIF statement I am using:
IIF(([Average monthly count] > [Today]),[Average monthly count],"No values in the range")
As mentioned in comments, in Tableau isn't possible to return two different data types in IF or IIF statements, so if you really need to pass a string like "no values in range", you must return a string in true case. This can be done using the function STR as follows:
IIF(([Average monthly count] > [Today]),STR([Average monthly count]),"No values in the range")
Another option may be just return NULL in false case.
IIF(([Average monthly count] > [Today]),[Average monthly count],NULL)

Tableau Column Difference - as a dimension

I am looking for difference of two columns in Tableau. I have the formula with me.
IF ATTR([Valuation Profile]) = "Base" THEN
LOOKUP(ZN(SUM([Value])), 1) > - ZN(LOOKUP(SUM([Value]),0)) END
But I get it as a separate column in the columns sections. How do I get that in the rows section? Basically how to get the difference as a dimension?
Please see attached images of what I want and what I have. Apparently, I cannot upload my excel sheet and tableau worksheet here. So I have upload just the screenshots.
What I have - vs - What I want
Tableau Workbook
First off, there is no way that you can generate additional rows for your data in Tableau!
In your case however you could use a workaround and do the following:
Create a calculated field for BASE and one for CSA. The formula should
be IF [Valuation Profile] = 'BASE' THEN [Value] END and IF
[Valuation Profile] = 'CSA' THEN [Value] END respectively
Afterwards you can drag Measure Names onto your rows shelf and
replace the SUM([Value]) with your two newly created calculated fields
that should give you all three measures in different rows in your table
Reference: https://community.tableau.com/message/627171#627171
Use LOD expression to calculate the individual values first.
Create calculated fields 'BASE', 'CSA' and 'CSA-BASE' as below.
BASE:
{FIXED [Book Name]: SUM( if [Valuation Profile] = 'BASE' then Value else 0 end ) }
CSA:
{FIXED [Book Name]: SUM( if [Valuation Profile] = 'CSA' then Value else 0 end ) }
CSA-BASE
[CSA]-[BASE]
Solution

Crystal reports sum

I need the sum of two database fields. I use this formula field :
{dbfield1}+{dbfield2}
and if dbfield1 and dbfield2 are != from null in database the sum is showing, but if the dbfield1 or dbfield2 are missing(no data) the formula field is not showing.
how can I manage this in Crystal report?
Two options :
Either use the Convert Database Fields to Null option under Report Options, which will convert the numeric field nulls to zero and make your sum work, or
Use the IsNull function in your formula :
If IsNull({dbfield1}) And IsNull({dbfield2}) Then
0
Else If IsNull({dbfield1}) Then
{dbfield2}
Else If IsNull({dbfield2}) Then
{dbfield1}
Else
{dbfield1}+{dbfield2}