Agregare și rapoarte consolidate
Agregare și raportare consolidată
Agregarea este transformarea înregistrărilor detaliate în indicatori sumari pentru secțiunile și perioadele necesare. Consolidare - combinarea agregatelor din diferite surse/persoane juridice/produse într-un singur raport cu ajustări (valută, politică contabilă, eliminare). Mai jos este o abordare sistematică: de la proiectarea ferestrelor magazinelor la raportarea operațională.
1) Sarcini și tipuri de consolidare
Operare/Produs: DA/WAU/MAU, conversii, venituri pe țară/canal/platformă.
Financiar (ex. și de reglementare): P&L, Cash Flow, Bilanț, GGR/Net Gaming Venituri, taxe, rapoarte de persoane juridice.
Risc/conformitate: antifraudă, indicatori RG, SLA/disponibilitate, derivă date/model.
Strategic: KPI consolidat prin holding, portofoliu de brand, regiuni.
2) Arhitectura stratului de agregare
Straturi de date: „prime” → „staging” → „core” (fapte/dimensiuni) → „marte” (agregate pentru rapoarte).
Strat semantic: definiții metrice, calendar, valute, reguli de rollup.
Cereale și cereale-timp: 'eveniment', 'user _ day', 'txn',' brand _ country _ day '→ alte rollups până la săptămână/lună/trimestru.
Identități: chei stabile (user/brand/legal_entity), tabele de cartografiere).
3) Rollups și ierarhii
Ierarhiile de dimensiuni sunt Game Category Provider, Channel Campaign Creative, City Region Country Cluster.
Reguli de sinteză: aditiv (sumă), semi-aditiv (instantaneu - medie/ultima pentru perioada), non-aditiv (coeficienți/procente).
Deduplicarea - utilizatori unici și evenimente de cereale; evitați numărarea dublă la fuzionarea surselor.
4) Multicurrency, fusuri orare, calendar
Timp: magazin 'event _ time _ utc' și felii locale; calendarul de sărbători/zile lucrătoare.
Valută: Păstrați suma „brută” + „base _ ccy” la cursul de schimb de la data tranzacției (sau cursul mediu de schimb al perioadei cu o avertizare).
Normalizare: Afișați unitățile/moneda/data cursului de schimb explicit.
sql
WITH fx AS (
SELECT date, from_ccy, to_ccy, rate
FROM dim_fx_rates
WHERE to_ccy = 'EUR'
),
tx AS (
SELECT t. txn_id, t. amount, t. ccy, t. brand, t. country, t. event_date
FROM fact_tx
)
SELECT brand, country, DATE_TRUNC('month', event_date) AS month,
SUM(amount COALESCE(fx. rate, 1)) AS revenue_eur
FROM tx
LEFT JOIN fx
ON fx. date = tx. event_date AND fx. from_ccy = tx. ccy
GROUP BY 1,2,3;
5) Consolidarea pe surse/persoane juridice
Cartografierea graficelor de conturi: o singură CoA (Chart of Accounts) + cartografiere din planurile locale.
Politici contabile: IFRS/GAAP/reguli fiscale → nivel de transformare (de exemplu, venituri brute/nete, recunoașterea bonusurilor/comisioanelor).
Eliminarea cifrei de afaceri intra-grup: excluderea tranzacțiilor dintre persoanele juridice ale exploatației.
Metode de consolidare: metoda integrală, proporțională, a capitalului propriu.
Acționari minoritari: alocarea dobânzilor fără control (ICN).
sql
WITH interco AS (
SELECT a. txn_id
FROM fact_tx a
JOIN dim_counterparty b ON a. counterparty_id = b. id
WHERE a. legal_entity IN (SELECT id FROM dim_legal WHERE group_id = 1)
AND b. legal_entity IN (SELECT id FROM dim_legal WHERE group_id = 1)
)
SELECT
FROM agg_pl_month
WHERE txn_id NOT IN (SELECT txn_id FROM interco);
6) Calitatea și reconcilierea
Reconcilieri sursă: suma pe sursă = suma din vitrină (cu toleranța la cursul de schimb/timp).
Invarianți: 'DA ≤ MAU', sumă peste zile = total lunar (pentru metrici aditivi).
Controlul integralității: cota de NULL, cota de duplicate, întârzierea în prospețime.
Raport de discrepanță - Lista discrepanțelor și etapele de remediere.
7) Performanță și SLO
SLO de prospețime: unități operaționale - lag ≤ 15 min; în timpul zilei - până la ora 06:00 ora locală; lunar - până la T + 1/T + 3.
Optimizare: pre-agregări, recalculări incrementale, partiționare (după dată/marcă/țară), memorie cache pentru felii populare.
Limitări UI: ≤ 12 categorii pe program; paginarea tabelelor; leneş-încărcare.
8) Gestionați definițiile și versiunile
Dicționar de valori: cod, definiție, formulă, sursă, unități, proprietari, guardrails.
Versioning: 'METRIC _ vN'; orice modificări → noua versiune + rambursare și changelog.
Strat semantic: o sursă de adevăr pentru BI/experimente/expedieri.
9) Securitate și acces
RLS/CLS: acces după rol (țară/marcă/persoană juridică), mascare PII.
Audit: cine a încărcat raportul; controlul exportului (termene limită, jetoane).
Minimizare: emite agregate mai degrabă decât date PII brute.
10) agregate tipice și vizualizări
Produs: pâlnii (step-bars), cohorte (heatmap), retenție D7/D30, ARPU/ARPPU, GGR/Net.
Finanțe: P&L pe ierarhii, factori de cascadă (pod), structura veniturilor pe regiuni, dinamica G & A.
Operațiuni/ML: SLA, latență p95/p99, PR- AUC/Recall@FPR≤x%, PSI-heatmap drift.
11) Pașaportul raportului consolidat (model)
Cod/Versiune: 'CONSOL _ PNL _ v3'
Scop: management P&L pe grup de brand, monedă multicurrency → monedă de bază EUR
Acoperire: toate persoanele juridice ale grupului; metodă - consolidare completă; NCI - Evidențiat
Sursă/strat: 'mart _ fin _ pnl _ v3' (bazat pe 'fact _ tx _ v2', 'dim _ legal', 'dim _ fx _ rates')
Granularitate: lună (rollup din zi)
Eliminări: „intercompanie = adevărat” - cifra de afaceri intragrup exclusă
SLO: T + 1 06:00 blocare; disponibilitate ≥ 99. 9%
Reconcilieri - raport contabil 'BK _ PNL _ T + 1', varianta ≤ 0. 3%
Proprietari: Finance Analytics, Platforma de date
Guardrails: masa FX nu mai veche de 24 de ore; tranzacții de acoperire ≥ 99. 5%
12) Greșeli frecvente și cum să le evitați
Schimbări de formulă silențioasă: întotdeauna prin versiuni și changelog.
Numărare dublă: arcuri duplicate/joynes - chei de control și cereale.
Amestecarea fusurilor orare: calendar centralizat și stocare UTC.
Procente incorecte: Numărător agregat/numitor, nu „media mediilor”.
Ratele „brute”: data/sursa FX explicită, politica de rotunjire coerentă.
Nici o eliminare: Inter-companie cifre de afaceri skew rapoarte.
Prospețime opacă: Afișați întotdeauna „actualizat N minute în urmă”.
13) Pseudo-SQL: agregat lunar incremental
sql
-- Recalculate only affected days/months
WITH changed_days AS (
SELECT DISTINCT DATE(event_time_utc) AS d
FROM fact_tx_delta -- new/modified per day
),
daily AS (
SELECT
DATE(event_time_utc) AS d,
brand, country,
SUM(net_revenue_eur) AS net_eur
FROM fact_tx
WHERE DATE(event_time_utc) IN (SELECT d FROM changed_days)
GROUP BY 1,2,3
)
MERGE INTO agg_month_brand_country m
USING (
SELECT DATE_TRUNC('month', d) AS month, brand, country, SUM(net_eur) AS net_eur
FROM daily
GROUP BY 1,2,3
) s
ON (m. month = s. month AND m. brand = s. brand AND m. country = s. country)
WHEN MATCHED THEN UPDATE SET m. net_eur = s. net_eur, m. updated_at = NOW()
WHEN NOT MATCHED THEN INSERT (month, brand, country, net_eur, updated_at)
VALUES (s. month, s. brand, s. country, s. net_eur, NOW());
14) Procese și funcționare
1. Design: obiective/audiențe, metrici, ierarhii, valută/fusuri orare.
2. Date: contracte sursă, scheme, teste de calitate.
3. Construirea ferestrelor: obiecte semantice, reguli de rulare, eliminări.
4. Reconcilieri: rapoarte automate de variație, bilete de corecție.
5. Lansare: versiune, documentație, instruire utilizator.
6. Monitorizare: prospețime, completitudine, duplicate, timp de răspuns, incidente.
7. Revizuire: verificarea trimestrială a definițiilor, mapărilor, politicilor FX.
15) Lista de verificare a declarației pre-consolidate
- Definiții metrice și ierarhice documentate în strat semantic
- Conversia valutară și fusurile orare sunt configurate; arată unitățile și data cursului
- Revoluții intra-grup/eliminări NCI implementate (dacă este cazul)
- Invarianții și reconcilierile cu sursele de referință se efectuează în toleranțe
- Recalculări incrementale și partiționare activată
- SLO-urile de prospețime/disponibilitate sunt stabilite; sunt afișate stările de actualizare
- Mascarea RLS/CLS și PII sunt configurate; audit de export activat
- Versiunea/changelog și proprietarii specificate; au incidente runbook
Total
Agregarea și consolidarea nu este doar „GROUP BY”, ci un sistem holistic: definiții coerente, rollup-uri corecte, multi-valută și calendar, eliminări și reconcilieri, observabilitate și SLO. Urmând arhitectura descrisă, transformați datele eterogene în seifuri fiabile pentru managementul produselor, financiar și al riscurilor.