Meliorainsights.com
  • Home
  • Tableau CRM
  • Field Notes
  • Non-Profits
  • Our Clients
  • About
  • Home
  • Tableau CRM
  • Field Notes
  • Non-Profits
  • Our Clients
  • About
Search

Meliora Insights, LLC

​Data Analytics and Visualization | Tableau CRM (Einstein Analytics) Consulting
​meliora - 'for the pursuit of the better'


A blog series distilling quantitative concepts /use-cases in Tableau CRM (Einstein Analytics).

Run rate KPI and results bindings

3/19/2022

0 Comments

 
​Q_runrates_1
 
q = load "Fiscal_Calendar1";
q = group q by 'Fiscal_Year';
q = foreach q generate 'Fiscal_Year' as 'Fiscal_Year', count() as 'count';
q = order q by 'Fiscal_Year' asc;
q = limit q 2000;
 

 
Q_kpi_CurrentFiscal_1  < this query takes todays date and buckets it in correct FY bins
q = load \"Fiscal_Calendar1\";\nq = group q by ('Date', 'Fiscal_Year', 'Fiscal_Quarter', 
'Fiscal_Month_Number_Month', 'Fiscal_Month', 'Fiscal_Week');\n
 
q = foreach q generate (date_to_string(now(),\"MM/dd/yyyy\")) as 'Today', 
'Date' as 'Date', 'Fiscal_Year' as 'Fiscal_Year', 'Fiscal_Quarter' as 'Fiscal_Quarter',
 'Fiscal_Month_Number_Month' as 'Fiscal_Month_Number_Month', 'Fiscal_Month' as 'Fiscal_Month',
 'Fiscal_Week' as 'Fiscal_Week';\n
 
q = foreach q generate 'Today', 'Date' as 'Date', 'Fiscal_Year', 'Fiscal_Quarter', 
'Fiscal_Month_Number_Month', 'Fiscal_Month', 'Fiscal_Week';
 

 
\nq = filter q by 'Date' == 'Today';\
nq = foreach q generate 'Date', 'Fiscal_Year', 'Fiscal_Quarter', 
'Fiscal_Month_Number_Month', 'Fiscal_Month', 'Fiscal_Week',(case when 'Fiscal_Month' == \"October\" 
then \"September\" when 'Fiscal_Month' == \"November\" then \"October\" when 
'Fiscal_Month' == \"December\" then \"November\" when 'Fiscal_Month' == \"January\" 
then \"December\" end) as 'PrevMonth',(case when 'Fiscal_Quarter' == \"Q1\" then \"Q4\" 
when 'Fiscal_Quarter' == \"Q2\" then \"Q1\" when 'Fiscal_Quarter' == \"Q3\" then \"Q2\" when
 'Fiscal_Quarter' == \"Q4\" then \"Q3\"end) as 'PrevQtr',(case when ('Fiscal_Quarter' == 
\"Q1\" || 'Fiscal_Month' == \"July\")  then \"2021\" else \"2022\" end) as 'PrevFY';\n
 

 
q = foreach q generate 'Date', (case when \"{{cell(q_dynamicDate_1.selection,0,\"Valu\").asObject()}}\"
 == \"PrevMTD\" then 'PrevMonth' else  'Fiscal_Month' end) as 'Fiscal_Month',
(case when \"{{cell(q_dynamicDate_1.selection,0,\"Valu\").asObject()}}\" == 
\"PrevQTD\" then 'PrevQtr' else  'Fiscal_Quarter' end) as 'Fiscal_Quarter',
(case when (\"{{cell(q_dynamicDate_1.selection,0,\"Valu\").asObject()}}\" == \"PrevQTD\"   ||
 \"{{cell(q_dynamicDate_1.selection,0,\"Valu\").asObject()}}\" == \"PrevMTD\") then 'PrevFY' else
 'Fiscal_Year' end) as 'Fiscal_Year';",
 

 
 
Above binding is a pillbox/staticflex
 
 
 query so user either chooses the 2 prev qtr or month which then calculates proper monthqtr and year matching. else defaults to current.
Labels and chart titles also should have bindings


 
 
 
 Qtr or month12/2/2021 / December / q2 /  fy22
 
Q_kpi_DateBinding is a query that uses the dynamic date choice pillbox to determine which filter to turn  ‘off’ by inserting a “—” in the main query. Here is the query
 "q_kpi_dateBinding_1": {
                "broadcastFacet": true,
                "groups": [],
                "label": "q_kpi_dateBinding",
                "numbers": [],
                "query": "q = load \"Fiscal_Calendar1\";\nq = group q by all;\nq = foreach q generate  \"{{cell(q_dynamicDate_1.selection,0,\"Valu\").asObject()}}\" as 'Date Selected';\nq = foreach q generate 'Date Selected', (case when 'Date Selected' in [\"MTD\",\"PrevMTD\"] then \"\" else \"--\" end) as 'MTD_Binding', (case when 'Date Selected' in [\"QTD\",\"PrevQTD\"] then \"\" else \"--\" end) as 'QTD_Binding';",
 
And the query result when MTD is picked

When QTD is picked, query resolves to  QTD /  -- / null for Date Selected , MTD_Binding , QTD binding respectively
This q_kpi_date binding is then bound to main query ‘q_runrates. As you can see form the SAQL, the kpiDateBinding SITES BEFORE the filters. This embed either a “” or a “—”  in the q=filter q by…..
Embedding a”” keeps that filter ‘on”, embedding a “—” turn off that filter.
 
                "query": "q = load \"Fiscal_Calendar1\";\nq = filter q by 'Fiscal_Year' == 
\"FY22\";\n{{cell(q_kpi_dateBinding_1.result,0,\"QTD_Binding\").asObject()}}
q = filter q by 'Fiscal_Quarter' == \"{{cell(q_kpi_CurrentFiscal_1.result,0,\"Fiscal_Quarter\")
.asObject()}}\";\n{{cell(q_kpi_dateBinding_1.result,0,\"MTD_Binding\").asObject()}}
q = filter q  by 'Fiscal_Month'== \"{{cell(q_kpi_CurrentFiscal_1.result,0,\"Fiscal_Month\").
asObject()}}\";\nq = filter q by date('Date_Year', 'Date_Month', 'Date_Day') 
in [\"5 years ago\"..\"current day\"];\nq = group q by 'Fiscal_Year';\n
q=foreach q generate 'Fiscal_Year' as 'FY', sum('Shipping_Day_Num')- 1 as 'Days Passed'
;\ntotDays = load \"Fiscal_Calendar1\";\ntotDays= filter totDays by 'Fiscal_Year'== \"FY
22\";\n{{cell(q_kpi_dateBinding_1.result,0,\"QTD_Binding\").asObject()}}totDays = filter to
tDays  by 'Fiscal_Quarter' == \"{{cell(q_kpi_CurrentFiscal_1.result,0,\"Fiscal_Quarter\").as
Object()}}\";\n{{cell(q_kpi_dateBinding_1.result,0,\"MTD_Binding\").asObject()}}totDays = filt
er totDays by 'Fiscal_Month'== \"{{cell(q_kpi_CurrentFiscal_1.result,0,\"Fiscal_Month\").asObj
ect()}}\";\ntotDays = group totDays by 'Fiscal_Year';\ntotDays = foreach 'totDays' generate
 'Fiscal_Year' as 'FY', sum('Shipping_Day_Num') as 'Total Days';\nfo = load \"zds_AI_AcctHomeMgrv
4\";\nfo = filter fo by 'Fiscal_Year__c' == \"2022\";\n{{cell(q_kpi_dateBinding_1.result,0,\"QTD
_Binding\").asObject()}}fo = filter fo by 'FiscalCdr2All.Fiscal_Quarter' == 
\"{{cell(q_kpi_CurrentFiscal_1.result,0,\"Fiscal_Quarter\").asObject()}}\";\n
{{cell(q_kpi_dateBinding_1.result,0,\"MTD_Binding\").asObject()}}
fo = filter fo by 'FiscalCdr2All.Fiscal_Month'== \"{{cell(q_kpi_CurrentFiscal_1.result,0,
\"Fiscal_Month\").asObject()}}\";\nfo = group fo by all;\n
fo = foreach fo generate sum('{{column(q_RevenueGP_1.selection,[\"Valu3\"]).asObject()}}') as 
'Forecast', sum('{{column(q_RevenueGP_1.selection,[\"Valu1\"]).asObject()}}') as 'Quota',
 sum('{{column(q_RevenueGP_1.selection,[\"Valu2\"]).asObject()}}') as 'Actuals';\n
results=union q,totDays,fo;\nresults = group results by all;\nresults = 
foreach results generate coalesce(sum('Quota'),0) as 'Quota',coalesce(sum('Forecast'),0) as
 'Forecast', coalesce(sum('Actuals'),0) as 'Actuals', sum('Total Days') as 'Total Days', 
sum('Days Passed') as 'Days Passed';\nresults = foreach results generate 'Actuals', 'Forecast',
 'Quota', 'Days Passed' as 'Days Passed', 'Total Days' as 'Total Days','Actuals' / 'Days Passed' as 'A'
,'Quota' / 'Total Days' as 'B';\nresults = foreach results generate 'Actuals', 'Forecast', 'Quota', 
'Days Passed' as 'Days Passed', 'Total Days' as 'Total Days','A' as 'A','B' as'B','A' /
  'B' as 'Run Rate','Quota' - 'Actuals' as 'To Quota';\nresults = foreach results generate 'Actuals',
 'Forecast', 'Quota', 'Days Passed' as 'Days Passed', 'Total Days' as 'Total Days','Run Rate',('Quota'
 * 'Run Rate') as 'RR Dollars';"
 
 
 
 
0 Comments



Leave a Reply.

Site powered by Weebly. Managed by Hostwinds
  • Home
  • Tableau CRM
  • Field Notes
  • Non-Profits
  • Our Clients
  • About