Netice app revenue data infrastructure
Google Play Earnings to BigQuery
Netice structures Google Play monthly Earnings data for BigQuery through Finance Unified. This is a finance-period workflow, not the daily Google Play Estimated Sales pipeline. The default BigQuery table for this output is finance_unified, with source-aware rows, event types, native and report-currency fields, FX context, null-not-zero handling and finance-period boundaries.
What Google Play Earnings to BigQuery means in Netice
In Netice, Google Play Earnings to BigQuery means using Finance Unified to normalize monthly Google Play Earnings rows into a customer-owned BigQuery table. The default table is finance_unified. Rows are identified with source = 'GOOGLE_PLAY', platform = 'ANDROID', source_kind = 'FINANCE', and source_report = 'GOOGLE_PLAY_EARNINGS'.
This is not the same workflow as daily Google Play revenue to BigQuery. Daily Google Play app-sales analytics uses Google Play Estimated Sales and lands in a daily table such as app_sales_daily. Google Play Earnings is monthly finance reporting and belongs to Finance Unified. A correct warehouse model keeps those outputs separate.
This page is written for finance operations teams, analytics engineers and data platform owners who want to understand what the BigQuery finance table represents, which fields matter, how null values should be interpreted and why this output should not be treated as accounting close, audit proof, tax advice or final payout truth.
| Question | Daily Google Play analytics | Google Play Earnings to BigQuery |
|---|---|---|
| Netice source mode | google_apple_app_sales | finance_unified |
| Provider report family | Google Play Estimated Sales | Google Play monthly Earnings |
| Source kind | SALES | FINANCE |
| Default BigQuery table | app_sales_daily | finance_unified |
| Main date concept | revenue_date | fiscal_period and finance-period fields |
What this BigQuery table is not
finance_unified is not the daily Google Play Estimated Sales table. It is not raw Google Play report archiving. It is not accounting close, audited revenue, GAAP, IFRS, ASC 606, tax advice, bank reconciliation or a full finance system.
Finance Unified can provide a structured monthly platform-finance input where configured, but final accounting treatment, booked revenue, payout reconciliation and audit conclusions remain the customer’s own finance process.
Google Play Earnings source behavior
Google Play Earnings is a monthly finance report family. In Netice Finance Unified, Google Play Earnings rows are normalized as event-grain finance rows. The source report family is distinct from daily sales reports, and the normalized source report label is GOOGLE_PLAY_EARNINGS.
Google Play Earnings access is also different from destination access. Source access allows Netice to read the monthly Play Console Earnings report. BigQuery destination access allows Netice to write the managed finance_unified table. A valid source connection does not automatically grant BigQuery write permissions, and a valid BigQuery destination does not prove Google Play Earnings access.
| Source concept | Value or behavior | Public interpretation |
|---|---|---|
| Source mode | finance_unified | Monthly platform finance workflow. |
| Source kind | FINANCE | Finance rows, not daily app-sales rows. |
| Source report | GOOGLE_PLAY_EARNINGS | Google Play monthly Earnings report family. |
| Platform/source | ANDROID / GOOGLE_PLAY | Android Google Play finance data. |
| Availability timing | Finance months become available according to provider reporting behavior. | Not a Google SLA or exact public guarantee. |
The finance_unified BigQuery table
The default Finance Unified BigQuery table is finance_unified. Public examples use a synthetic fully qualified table such as example_project.example_dataset.finance_unified. Real projects, datasets, tables, staging buckets, job IDs, task IDs, source paths and customer identifiers should stay out of public examples.
Finance Unified is an event-grain schema. It is not one row per app per month. Google Play Earnings rows can represent sales, refunds, platform fees, fee reversals, tax and adjustments where those event types are present in the source. The event type is part of the meaning of the row and should remain visible in downstream SQL.
| Field group | Representative fields | Why it matters |
|---|---|---|
| Source identity | platform, source, source_kind, source_report, source_schema_version | Keeps Google Play Earnings separate from daily Estimated Sales. |
| Source lineage | source_file_name, source_file_uri, source_row_number, source_row_hash, raw_metadata | Supports traceability without exposing raw provider files or rows in documentation or summaries. |
| Finance period | fiscal_period, calendar_period, period_start, period_end, period_calendar_type | Frames the row as monthly finance data, not daily revenue_date analytics. |
| Date basis | transaction_date, settlement_date, effective_revenue_date, effective_revenue_date_basis | Preserves finance date semantics. |
| Event taxonomy | event_type, event_category, event_subtype, refund_type, commission_disclosed | Prevents fee, tax and adjustment rows from being treated as ordinary sales. |
| Amounts and currency | native_currency, native_net_proceeds, native_customer_charge, report_currency, report_net_proceeds, report_customer_charge, fx_rate | Keeps native platform amounts separate from report-currency presentation fields. |
| Finality and ingestion | is_final, ingested_at, source_available_at | Supports finance-period status context; not audit or accounting-close proof. |
Google Earnings event taxonomy
Google Play Earnings rows should be analyzed as finance ledger events. A sale row is different from a platform fee row. A tax row is different from a refund. Adjustments are not automatically the same thing as customer purchases. Finance queries that hide event_type can produce misleading totals.
Netice Finance Unified keeps event types such as SALE, REFUND, PLATFORM_FEE, PLATFORM_FEE_REVERSAL, TAX and ADJUSTMENT visible when they are present in the Google Play Earnings source data. This article does not claim support for additional event families beyond the product’s Finance Unified taxonomy.
| Finance event type | Typical interpretation | Important caveat |
|---|---|---|
SALE | Revenue event. | Can populate customer-charge context where source provides it. |
REFUND | Reversal/refund event. | Do not mix with daily Estimated Sales corrections without context. |
PLATFORM_FEE | Google/platform fee deduction event. | Not a customer charge row; customer-charge fields can be null. |
PLATFORM_FEE_REVERSAL | Reversal of platform fee. | Keep separate from sale/refund rows. |
TAX | Tax ledger row where source provides it. | Not the same as daily estimated tax method fields. |
ADJUSTMENT | Finance adjustment row. | Can be positive or negative depending on source semantics. |
Currency, FX and null-not-zero behavior
Finance Unified keeps source-native amounts and report-currency presentation fields separate. Native values remain native. Report-currency fields such as report_net_proceeds and report_customer_charge are populated where the conversion is available and valid.
Same-currency rows can use fx_rate = 1. Missing cross-currency FX should not silently become rate 1, and unknown finance values should not become zero. This is the null-not-zero policy: null means unknown, unsupported, unavailable, not disclosed, or not applicable; zero means known zero.
| Situation | Correct Finance Unified behavior | Unsafe shortcut |
|---|---|---|
| Native currency equals report currency. | Use fx_rate = 1. | Treat same-currency rows as missing FX. |
| Cross-currency FX is missing. | Keep report-currency fields null or surface quality issues. | Default missing FX to 1. |
| Finance amount is unknown. | Keep null. | Convert unknown to 0. |
| Finance amount is real zero. | Keep zero. | Treat zero as missing. |
| Fee/tax row has no customer charge. | Keep native_customer_charge null. | Fill customer charge with zero and hide row semantics. |
Google Earnings limitations to preserve
Google Play Earnings should not be expanded beyond what the source and Finance Unified workflow provide. Google Play Earnings should not be described as chargeback coverage, and Google finance rows should not be used to infer daily units when the finance schema leaves quantity null.
| Topic | How to interpret it | Boundary |
|---|---|---|
| Chargebacks | Google Play Earnings is not a chargeback source in this workflow. | Do not claim chargeback coverage. |
| Quantity | Google Earnings finance rows can have null quantity. | Do not infer units from finance rows. |
| Fee/tax rows | Customer-charge fields can be null. | Null is expected and does not mean zero customer charge. |
| Finality | is_final is a derived finance-period status field. | Not provider-guaranteed accounting finality. |
BigQuery write and refresh behavior
Finance Unified BigQuery behavior should be described at the product-contract level. Netice writes a managed finance table for the configured customer-owned BigQuery destination. Replacement and refresh behavior is finance-period/source based, not daily revenue-date based.
For Google Play Earnings, the managed BigQuery table is refreshed by finance-period and source context such as platform, source_kind, source, source_report and fiscal_period. Public documentation should not expose internal BigQuery SQL, staging object names, job IDs, target hashes, logs or operational runbooks.
| Write concept | Finance Unified behavior | Boundary |
|---|---|---|
| Default table | finance_unified | Not app_sales_daily. |
| Replacement scope | Finance period and source context. | Not daily revenue_date windows. |
| Managed destination | Customer-owned BigQuery table configured for the task. | Do not expose customer project, dataset or table names. |
| Verification | Destination writes are reported through safe task status and summaries. | No SLA, warranty or audit claim. |
| Period status | Supports finality/stability context. | Not accounting-close proof. |
Setup, access and secret handling
Google Play Earnings source access and BigQuery destination access are separate. Google Play Earnings access lets Netice read the monthly finance source. BigQuery destination access lets Netice write the managed table to a customer-owned warehouse.
Netice encrypts customer secret material and handles credentials through secret management. Saved source and destination connections reduce repeated credential entry, but saved credential values are write-only after saving and are not shown back in the product interface. Public documentation should not include service-account JSON, private keys, service-account emails, report bucket IDs, package names, app IDs, payment profile details, source files, source rows, task IDs, run IDs, logs, credentials, secret references or customer data.
| Access category | Controls | Does not control |
|---|---|---|
| Google Play Earnings source access | Reading monthly Google Play Earnings. | Writing to BigQuery. |
| BigQuery destination access | Writing finance_unified to a BigQuery dataset/table. | Reading Google Play source reports. |
| Report currency setting | Presentation fields such as report_net_proceeds. | Replacing source-native amounts or accounting policy. |
| Safe diagnostics | Reason categories, counts, statuses and hashes. | Raw provider rows, credentials or report contents. |
Safe synthetic examples
The examples below are synthetic and simplified. They show table and query shape only. They are not real Google Play rows, not accounting examples and not proof of payout reconciliation.
Safe BigQuery target
Project: example_project
Dataset: example_dataset
Table: finance_unified
Fully qualified table: example_project.example_dataset.finance_unified
Source mode: finance_unified
Provider selected: Google Play Earnings
Source report label: GOOGLE_PLAY_EARNINGS
Schema version: finance_unified_v3_event_grain
Safe finance-period query
SELECT
fiscal_period,
event_type,
native_currency,
report_currency,
SUM(native_net_proceeds) AS native_net_proceeds,
SUM(report_net_proceeds) AS report_net_proceeds
FROM `example_project.example_dataset.finance_unified`
WHERE source = 'GOOGLE_PLAY'
AND source_kind = 'FINANCE'
AND source_report = 'GOOGLE_PLAY_EARNINGS'
AND fiscal_period BETWEEN DATE '2026-02-01' AND DATE '2026-04-01'
GROUP BY fiscal_period, event_type, native_currency, report_currency
ORDER BY fiscal_period, event_type, native_currency;
Safe null coverage query
SELECT
fiscal_period,
event_type,
COUNT(*) AS rows_total,
COUNTIF(report_net_proceeds IS NULL) AS rows_missing_report_net,
COUNTIF(report_net_proceeds = 0) AS rows_known_zero_report_net,
COUNTIF(native_customer_charge IS NULL) AS rows_without_customer_charge
FROM `example_project.example_dataset.finance_unified`
WHERE source = 'GOOGLE_PLAY'
AND source_kind = 'FINANCE'
AND source_report = 'GOOGLE_PLAY_EARNINGS'
AND fiscal_period = DATE '2026-02-01'
GROUP BY fiscal_period, event_type
ORDER BY event_type;
The null coverage query intentionally keeps null and zero separate. Do not rewrite it into a finance-close query that hides unknown values with blanket COALESCE.
FAQ
What is Google Play Earnings to BigQuery in Netice?
It is the Finance Unified workflow for writing monthly Google Play Earnings rows into a customer-owned BigQuery table, normally finance_unified.
Is Google Play Earnings the same as Google Play Estimated Sales?
No. Estimated Sales is daily app-sales analytics. Google Play Earnings is monthly finance reporting and belongs to Finance Unified.
What BigQuery table does Finance Unified use by default?
The default BigQuery table is finance_unified.
What is source_report = 'GOOGLE_PLAY_EARNINGS'?
It is the Finance Unified source-report label for Google Play monthly Earnings rows.
Why are Google Earnings rows event-grain?
Google Earnings can contain sales, refunds, platform fees, fee reversals, tax and adjustments. Keeping event type visible prevents those rows from being flattened into misleading totals.
Does Google Earnings include chargebacks?
This workflow should not be described as chargeback coverage. Do not infer chargebacks from Google Play Earnings rows.
Why can quantity be null for Google Earnings?
Google Earnings finance rows can leave quantity null. Do not infer units from finance rows.
Why are customer-charge fields null on fee and tax rows?
Fee and tax rows are ledger component rows, not customer charge events. Null customer-charge fields can be correct and should not be filled with fake zeros.
What does is_final mean in Finance Unified?
is_final is a derived Finance Unified finality/status field. It is not provider-guaranteed audit truth, accounting close, GAAP, IFRS, ASC 606, tax advice or bank reconciliation.
Does Netice encrypt Google Play credential material?
Yes. Netice encrypts customer secret material and handles credentials through secret management. Saved credential values are write-only after saving and are not shown back in the product interface.
Can I use this table for accounting close or bank reconciliation?
This table can support monthly platform finance review where configured, but it is not a complete accounting system, audit proof, tax system or bank reconciliation product.
Related guides
Keep Google Play Earnings separate from daily app-sales analytics
Netice Finance Unified helps teams structure Google Play monthly Earnings in BigQuery while preserving source report, event type, finance period, native/report currency and null-not-zero boundaries.