Word count: 2,186 Reading time: 11 minutes
Quick Start
@reporter.net_income // Get a metric
@reporter.net_income[scenario=budget] // Compare to budget
@reporter.net_income[period=M::LTM] // Last twelve months
Finding Your Configuration (1 minute)
Your Global Object
1. Visit deliverable tracker and look for name above companies
- "Reporters" → use `@reporter`
- "Companies" → use `@company`
- "Entities" → use `@entity`
Your Metric Names and Scenarios
1. Left sidebar → REPORTERS → "Metrics"
2. Open METRIC GROUPS
3. Browse categories (BALANCE SHEET, etc.), browse scenarios (actuals, budget, etc)
4. Use these exact names in your queries
[Your specific scenarios and metrics will be configured during setup]
Core Concepts (2 minutes)
Basic Structure
@reporter.metric_name[modifiers]
Modifiers
Modifiers add specificity to pointers using key-value pairs enclosed in square brackets []
. They help you target specific dimensions of your data.
Period Modifiers: Represent the periodicity of a metric (e.g.,
q
,y
,ltm
,ntm
,ytd
,fq
,fy
,qtd
,fqtd
).Syntax:
period={source_period}::{target_period}
Example:
@entity.example-1[period=m::ltm]
resamples monthly data to Last Twelve Months (LTM).Note: Resampled periods can be any valid period type. Prefer fiscal periods over calendar ones if ambiguous.
Scenario Modifiers: Represent different versions of a metric, such as estimates or origination cases.
Example:
@entity.example-1[period=m, scenario=actual]
Smart Defaults
@reporter.net_income
// Same as
@reporter.net_income[scenario=actuals, period=M]
Real-World Examples (3 minutes)
Accessing LX
Go to any Dashboard, Formula, Mapping, or excel calculation to see the LX
Scenario Comparisons
// Compare actual to budget
@reporter.net_income - @reporter.net_income[scenario=budget]
// Variance with scaling (shows in thousands)
scale(
@reporter.net_income[period=M::fytd] -
@reporter.net_income[scenario=budget, period=M::fytd],
1000
)
Growth Calculations
// Year over year growth
(@reporter.net_income[period=M::LTM] /
@reporter.net_income-close) - 1
Asset Coverage
(@reporter.accounts_receivable[scenario=actuals, period=M] * .85 +
coalesce(@reporter.inventory[scenario=actuals, period=M], 0) * .5) /
coalesce(@reporter.total_syndicated_outstanding[],
@reporter.total_debt_outstanding[scenario=actuals, period=M])
Making Numbers Look Right (1 minute)
Scaling
scale(@reporter.net_income, 1000) // Display in thousands
Available Formats
- Currency ($)
- Percent (%)
- Decimal places (0-2 typical)
- Thousands separator
Handling Missing Data (1 minute)
Use coalesce ONLY when you need fallback behavior:
// If adjusted EBITDA missing, use regular EBITDA
coalesce(
@reporter.adjusted_ebitda,
@reporter.ebitda
)
Complete Syntax Reference
Basic Period Types
@reporter.revenue[period=M] // Monthly (base period)
@reporter.revenue[period=M::LTM] // Last Twelve Months
@reporter.revenue[period=M::YTD] // Year to Date
@reporter.revenue[period=M::FYTD] // Fiscal Year to Date
@reporter.revenue[period=M::CQ] // Current Quarter
@reporter.revenue[period=M::CY] // Current Year
@reporter.revenue[period=M::FQ] // Fiscal Quarter
@reporter.revenue[period=M::FY] // Fiscal Year
@reporter.revenue[period=M::FH] // Fiscal Half
@reporter.revenue[period=M::CW] // Current Week
Time Shifting
0CM // Current month
-1CM // Prior month
-1CY // Prior year
*Note this is used in the "effective date" field in dashboards, not directly in LX formulas
Rolling Calculations
rolling_sum(@reporter.revenue, 3) // Sum of last 3 periods
rolling_average(@reporter.revenue, 12) // Average of last 12 periods
rolling_min(@reporter.revenue, 6) // Minimum over last 6 periods
rolling_max(@reporter.revenue, 6) // Maximum over last 6 periods
Period Comparisons
prior_period(@reporter.revenue) // Previous period value
prior_period_delta(@reporter.revenue) // Change from previous period
prior_period_percent_change(@reporter.revenue) // % change from previous period
Aggregations
sum(@reporter.revenue) // Total sum
average(@reporter.revenue) // Average
min(@reporter.revenue) // Minimum value
max(@reporter.revenue) // Maximum value
Special Aggregations
aggregate_mode(@reporter.revenue) // Most frequent value
aggregate_median(@reporter.revenue) // Median value
aggregate_weighted_average(@reporter.revenue) // Weighted average
Time-Based Sums
year_to_date_sum(@reporter.revenue) // YTD sum
quarter_to_date_sum(@reporter.revenue) // QTD sum
Conditionals
when(@reporter.revenue > 0, true, false) // Conditional value
if(@reporter.revenue > 0, 'Positive', 'Negative')
Data Handling
coalesce(@reporter.revenue, @reporter.sales, 0) // Use first non-null value
scale(@reporter.revenue, 1000) // Scale values
absolute(@reporter.revenue) // Absolute value
Logical Operations
@reporter.revenue > 100 // Greater than
@reporter.revenue >= 100 // Greater than or equal
@reporter.revenue < 100 // Less than
@reporter.revenue <= 100 // Less than or equal
@reporter.revenue = 100 // Equal to
@reporter.revenue != 100 // Not equal to
Multiple Conditions
and(@reporter.revenue > 0, @reporter.profit > 0) // Both true
or(@reporter.revenue > 0, @reporter.profit > 0) // Either true
not(@reporter.revenue < 0) // Inverse condition
Complex Example
scale( // Display in 1000s
when( // If/then logic
@reporter.revenue[period=M::LTM] > // Is LTM revenue
rolling_average( // greater than
@reporter.revenue[scenario=budget], // the rolling average
12 // of last 12 months
), // of budget
prior_period_percent_change( // If YES: show % change
@reporter.revenue // from prior period
),
coalesce(@reporter.revenue, 0) // If NO: show revenue or 0
),
1000 // Scale to thousands
)
This complex example reads as: "If LTM revenue is beating our 12-month budgeted average, show the growth rate. Otherwise, show current revenue. Display everything in thousands."
Common Mistakes to Avoid
1. Wrong Time Period Syntax
// WRONG
@reporter.revenue::LTM
// RIGHT
@reporter.revenue[period=M::LTM]
2. Unnecessary coalesce
// WRONG (scenarios don't need fallbacks)
coalesce(@reporter.revenue[scenario=budget])
// RIGHT
@reporter.revenue[scenario=budget]
3. Missing Base Period
// WRONG
@reporter.revenue[period=LTM]
// RIGHT
@reporter.revenue[period=M::LTM]
Need Help?
1. Check Your Configuration
- Homepage → Recently visited (for global object)
- Left sidebar → METRIC GROUPS (for metric names)
- Check your configured scenarios
2. Build Step by Step
- Start with basic metrics
- Add time periods
- Add scenarios
- Add calculations
3. Contact Support@lumonic.com
- Metric configuration questions
- Scenario setup help
- Custom calculation support
- Additional training needs