NETICE DOCUMENTATION
Nulls, zeros and estimates in app revenue data
Reviewed
A missing amount, a genuine zero and an assumed zero mean different things in Netice. Platform Finance preserves unknown or inapplicable numeric values as null. Daily App Sales has a different contract: its analytical amounts can be derived or replaced with zero under an explicit method label. A blanket “all missing Netice values stay null” rule would be incorrect.
Read the amount together with its output family, currency and method. A null daily net_local can mean Apple proceeds belong to another currency. A zero estimated_tax with an ASSUMED_ZERO label does not mean the provider reported zero tax. No output row for a day does not establish that the business made no sales.
Four states to keep separate
| State | Example | Interpretation |
|---|---|---|
| Source amount is zero | A valid numeric zero in a finance amount | A reported value, distinct from an empty field. |
| Unknown or inapplicable | Google finance quantity; customer charge on a fee event |
Leave null. The source/event does not supply that fact. |
| Daily estimate or assumption | estimated_tax = 0 with GOOGLE_TAX_UNAVAILABLE_ASSUMED_ZERO |
An analytical fallback. Retain its method label. |
| Source window unavailable | A requested report has not been published | Coverage is incomplete. An absent report is not evidence of zero sales. |
Finance nulls preserve the question the source can answer
Google Earnings has separate charge, fee, tax and adjustment lines. On a fee line, native_net_proceeds contributes the signed deduction, while native_customer_charge is null because it is not a customer charge. Replacing that null with zero might make a chart easier to draw, but it erases the difference between “not this kind of event” and “a charge of zero.”
Google finance quantity also remains null: ledger rows do not provide a comparable unit count. Apple finance can have quantity, but does not disclose separate fee and tax events in this output. Do not infer missing facts by subtracting amounts and relabelling the result as a provider-disclosed component.
Missing currency conversion is another distinct state. Finance never uses 1 as an invented cross-currency rate. If configured report-currency proceeds are missing while native proceeds exist, publication is blocked to prevent an incomplete total.
Daily assumptions are visible in method fields
Daily App Sales is designed for analytical estimates. Netice can derive a missing component from other components, estimate a fee, calculate a residual tax amount, or substitute zero when a value is unavailable. Labels such as APPLE_TAX_UNAVAILABLE_ASSUMED_ZERO and GOOGLE_NET_UNAVAILABLE_ASSUMED_ZERO identify the zero-assumption cases.
Keep net_method, fee_method and tax_method in your model. Gross derivation detail is available as gross_method inside meta_json. These fields make a non-null estimate interpretable; they do not make every estimate suitable for financial close.
Apple mixed-currency rows require one more check. A null net_local can mean that proceeds are in a different currency from native_currency. Read apple_proceeds_native with apple_proceeds_currency before diagnosing missing proceeds. The currency reference provides a worked example.
Make assumptions visible in SQL
This BigQuery example counts daily tax zero assumptions separately from other methods. It uses a fictional table path.
SELECT
source,
report_currency,
tax_method,
COUNT(*) AS row_count,
COUNTIF(estimated_tax IS NULL) AS null_tax_rows,
COUNTIF(estimated_tax = 0) AS zero_tax_rows,
SUM(estimated_tax) AS estimated_tax_total
FROM `example-project.analytics.app_sales_daily`
WHERE revenue_date >= DATE '2026-08-01'
AND revenue_date < DATE '2026-09-01'
GROUP BY source, report_currency, tax_method
ORDER BY source, tax_method;
Grouping by tax_method keeps assumed-zero rows distinct from source-reported zero tax and residual calculations. Do not use the count of non-null amounts as proof that the source supplied all those amounts.
For Finance, pair SUM(report_net_proceeds) with COUNTIF(report_net_proceeds IS NULL) when inspecting a slice. SQL sums skip null values, so a plausible total alone cannot explain coverage. Avoid applying COALESCE(amount, 0) in a reusable base model before consumers can inspect why the amount is null.
A missing day is a coverage question first
Check the selected source, requested window, source availability and destination write result before filling missing dates in a chart. A calendar table can display an empty day, but the application should label whether the day has no reported sales or has not yet been delivered. Reruns cannot create a report the provider has not published.
Use refresh, rerun and backfill guidance for coverage, or return to the Daily App Sales and Platform Finance dictionaries for field-specific interpretation.