With tableau I am able to act on some data tables to get to a text table that I would like to treat as a table from scratch to do further aggregation. You will see from my example what I actually want to do, but acting on a text table as if it were a brand new table seems to be one solution if possible. I am open to other solutions to the same problem if you have any.
Say I have two tables.
Table A
Date | Purchases
'2014-05-02' | 5
'2014-05-03' | 6
Table B
Date Bucket | Bake Rate
0-1 Month | .20
2-3 Month | .50
First I created a calculated field for Table A to put each line item date into the corresponding date bucket by figuring out how much time has passed from a certain date and called it Date Bucket. Then I made a relationship between Date Bucket in Table B and the newly formed dimension in Table A also called Date Bucket. From Here I could essentially join on date bucket and for each line item get a Bake Rate from table B.
Then I divide each purchase by the corresponding bake rate as determined by how Age Bucket.
So I ended up with a text table like the following.
Date | Age Bucket | Purchases | Baked Purchases
'2014-05-02' | 0-1 Month | 5 | 25
'2014-05-03' | 0-1 Month | 6 | 30
Ideally, from here I'd like to be able to get the sum of the baked purchases and aggregate by whatever other dimensions I have. For example here, get the sum of baked purchases by month.
Any Ideas?!
Related
I am trying to create a stock portfolio tracker.
Table 1 has all transactions in this format: Date | Irrelevant | Amount Bought (+) or Sold (-).
Table 2 has all Dates for every Day from the Date of the first purchase until the current Date.
Table 1 Table 2
I am trying to get a Formula that calculates the total amount of shares bought/sold on a given day. Table 2 should then look like this:
Goal (A) Goal (B) Goal (C)
I have tried some array formulas but cant figure out how SUM all Amounts for a specific Date.
This is what I currently have:
=ArrayFormula(INDEX(Transactions!$B$12:D, MATCH (TRUE,EXACT(Transactions!$B$12:B, B7),0)))
I am thankful for any help!
I believe this isn't really a proper question for stackoverflow, but try `=SUMIF(Transactions!$B$12:$B, B25, Transactions!$D$12:$D)' and just drag it down (or Ctrl+D).
I am new to Tableau visualization and need some help.
I have a set of shipping lanes which have whole numbers values based on the duration for the shipment.
Ex:
| Lane Name | 0 Day | 1 Day | 2 Day | 3 Day | 4 Day |
| SFO-LAX | 0 | 30 | 60 | 10 | 0 |
| JFK-LAX | 0 | 10 | 20 | 50 | 80 |
For each Lane Name, I want to return the column header based on the max value.
i.e. for SFO-LAX I would return '2 Day', for JFK-LAX I would return '4 Day', etc.
I then want to set this as a filter to only show 2 Day and 3 Day results in my Tableau data set.
Can someone help?
Two steps to this.
The first step is pretty easy, pivot your data. Read the Tableau help to learn how to PIVOT your data for analysis - i.e. make it look to Tableau as a longer 3 column data set with Lane, Duration, Value as the 3 columns. Tableau's PIVOT feature will let you view your data in that format (which makes analysis much easier) without actually changing the format of your data files.
The second step is a bit trickier than you'd expect at first glance, and there are a few ways to accomplish it. The Tableau features that can be used for this are LOD calcs, table calcs, filters and possibly sets. These are some of the more powerful but complicated parts of Tableau, so worth your time to learn about, but expect to take a while to spin up on them.
The easiest solution is probably to use one of the RANK() function - start as a quick table calc. Set your partitioning and addressing as desired so that the ranks are computed for the blocks of data that you desire - say partitioning on Lane and addressing or computing by Duration. Then when you are happy with the ranks you see, move the rank calculation to the filter shelf and only display data where rank = 1.
This is a quick solution once you get the hang of it, but it can get slow for very large data sets since the rank calculations are done on the client side, requiring fetching all the data that you end up not displaying. If performance becomes an issue, you might want to look at other solutions to do more of the calculations server side - possibly using LOD calcs or analytic aka windowing queries invoked from custom SQL
I'm trying to create classifications based on date that are overlapped between each other.
Taking "Sample - EU SuperStore" as a reference, I want to do the the following:
Show measures as rows, for example Sum of Profit and sum of Sales
Create two columns: 2016 and Q1 2016.
Output Example:
+-------------+---------+---------+
| Measures | 2016 | Q1 2016 |
+-------------+---------+---------+
| sum(Profit) | 49,544 | 3,811 |
| sum(Sales) | 484,247 | 74,448 |
+-------------+---------+---------+
Is there a way to achieve this without changing the underlying data model?
I've tried using parameters but at the moment of putting to parameters together they are consider as the same column with different "hierarchies". See image below (Parameters are called 1 and 2)
If your periods of interest only overlap because one of them is a total of some of the others, you may be able to just use turn on the totals and sub totals of interest from the menu.
Otherwise, you can define calculated fields that select your values of interest for some records, and null for other records. Some people call those conditional fields or conditional calculations. Since aggregation functions like SUM(), MAX() ignore null values, you can then use those fields as measures to get the effect you want.
For instance, if you create a calculated field called [Sales During Promotion] as
If [Date] >= #2/15/2020# and [Date] <= #3/15/2020# then [Sales] end
Then SUM([Sales During Promotion]) will be the sum of all sales that fell within the specified period.
The last trick to understand the calculated field above is to know that the default behavior if there is no else branch specified is to return null.
I am VERY new to Access - I was sort of thrust into designing a database for a research project I'm involved in. So, please bear with me because I know next to nothing :) The problem I am having is thus:
My database is for a medical research project, and is very time and date dependent, by which I mean I need to capture the date and time for each piece of data so that we end up with a sort of timeline of events for each subject.
As is, I have something like the following for each piece of data: (Each in it's own field)
ArrivalDate
ArrivalTime
HeartRateDate
HeartRateTime
HeartRateData
TemperatureDate
TemperatureTime
TemperatureData
BloodPressureDate
BloodPressureTime
BloodPressureData
There are around 200 similar pieces of data that I need to collect for each patient. To avoid having to re-enter the same data over and over, and also to reduce the potential for error, I would like to have all of the date fields in a given patient record default to the first one that is entered, in this case "Arrival Date". However, I also need each date field to be editable without affecting the others. The reason for this is that in the event that a patient's visit occurs over the span of a few days we can accurately record that.
I have tried messing around with the default value setting, as well as setting the control source to reference the "Arrival Date" field, but then of course any changes to one field affect them all. I am not even sure that what I am trying to do is possible but I will appreciate any help and/or suggestions!
Thank you in advance
Having all this data in separate columns of a big table isn't going to work. You don't measure things like temperature or blood pressure only once per patient, do you?
This is a classic one-to-many relation.
You should have a separate Measurements table, looking e.g. like this:
+--------+-----------+---------------+------------------+-----------+
| MeasID | PatientID | MeasType | MeasDateTime | MeasValue |
+--------+-----------+---------------+------------------+-----------+
| 1 | 1 | Temperature | 2017-05-17 14:30 | 38.2 |
| 2 | 1 | BloodPressure | 2017-05-17 14:30 | 130/90 |
| 3 | 1 | Temperature | 2017-05-17 18:00 | 38.5 |
| 4 | 2 | Temperature | etc. | |
+--------+-----------+---------------+------------------+-----------+
As Barmar wrote, there is no reason to have separate columns for date and time.
In the form where measurements are entered, you can use the BeforeInsert event to set MeasDateTime to the current time, with the Now() function.
So the user never has to enter it manually, but they can edit it if the measurement was at a different time than entering the data.
using SSRS 2008 R2 here.
I've been able to get a similar layout to work with a regular tablix, where I get each group header to fall on top of each other in the same column by adding a row within that group, however I need to use a Matrix because of a dynamic column (month below). When I try to add another row, it only adds a row where the monthly data starts, not in the headers. So the headers stay in their each column. In trying to keep the example as easy as possible, I'm trying to do something like this (Store theme).
STORE NAME | MONTHS
STATE | SALES
TOWN(S) | SALES
which woudl look something like this in a Matrix
WALMART JAN FEB MARCH etc....
TEXAS | 3000 2000 6000
HOUSTON | 1000 500 2500
AUSTIN | 2000 1500 3500
I've only been able to produce something like this where each group is a seperate column:
STORE | STATE | CITY | JAN | FEB | MAR |
WALMART | TEXAS | HOUSTON | 1000 | 500 | 2500 |
| AUSTIN | 2000 | 1500 | 3500 |
Again, I've been able to get a regular Tablix formatted like this, but a Matrix I'm struggling with. Can anyone help me on how to do this? Thank you in advance!!
It is possible using a tablix/matrix and adding some special grouping settings.
Add a tablix with the City field in Row Groups pane:
Right click the City group, select Add Group / Parent Group. Choose State and set Add a Group Header
Delete the left most column (State column added in the previous step).
Note the group is still present.
Right click the STATE group and add a Parent Group as step 2. In this case choose STORENAME
Again delete the left most column (Store Name column added in the previous step)
You will get the following tablix.
Delete the first row
Set the Fields using the Row Group hierarchy order. STORENAME/STATE/CITY
Right click the first cell in the next column and add a group / Column Group / Parent Group. Choose MONTH in group by.
Delete the first row.
Set SUM(Fields!Sales.Value) in the next cells in the same column.
After these steps you will get a tablix like this in design window.
It should produce:
Let me know if this helps.