Meliorainsights.com
  • Home
  • Tableau CRM
  • Blog
  • Non-Profits
  • Our Clients
  • About
  • Trading Studio

​Meliora Insights, LLC

​Data Cloud | CRM Analytics  (TCRM / Einstein Analytics) Consulting
​meliora - 'for the pursuit of the better'


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

Picture

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.

    Archives

    June 2025
    April 2025
    January 2025
    November 2024
    August 2024
    April 2024
    March 2024
    February 2024
    January 2024
    December 2023
    June 2023
    May 2023
    April 2023
    March 2023
    February 2023
    December 2022
    October 2022
    September 2022
    July 2022
    April 2022
    March 2022
    January 2022
    November 2021
    June 2021
    April 2021
    March 2021

Site powered by Weebly. Managed by Hostwinds
  • Home
  • Tableau CRM
  • Blog
  • Non-Profits
  • Our Clients
  • About
  • Trading Studio