analytics/test/plausible_web/controllers/api
Vini Brasil e4d4f7d954
Revenue tracking: Ingestion and breakdown queries (#2957)
* Add revenue fields to ClickHouse events

This commit adds 4 fields to the ClickHouse events_v2 table:

* `revenue_source_amount` and `revenue_source_currency` store revenue in
  the original currency sent during ingestion

* `revenue_reporting_amount` and `revenue_reporting_currency` store
  revenue in a common currency to perform calculations, and this
  currency is defined by the user when setting up the goal

The type of amount fields is `Nullable(Decimal64(3))`. That covers all
fiat currencies and allows us to store huge amounts. Even though
ClickHouse does not suggest using `Nullable`, this is a good use case,
because otherwise additional work would have to be done to
differentiate missing values from real zeroes.

I ran a benchmark with the data pattern we expect in production, where
we have more missing values than real decimals. I created 100 million
records where 90% of decimals are missing. The difference between the
tables in storage is just 0.4Mb.

* Add revenue parameter to Events API

This commit adds support for sending revenue data in ingestion using the
`revenue` parameter - aliased to `$`.

* Add revenue parameter to mix send_pageview

* Add average and total revenue to breakdown queries
2023-06-12 18:29:17 +01:00
..
external_stats_controller Support with_imported=true in Stats API aggregate (#2919) 2023-05-18 12:05:24 +02:00
stats_controller Revenue tracking: Ingestion and breakdown queries (#2957) 2023-06-12 18:29:17 +01:00
external_controller_test.exs Revenue tracking: Ingestion and breakdown queries (#2957) 2023-06-12 18:29:17 +01:00
external_sites_controller_test.exs Clean up after V2 migration (#2868) 2023-04-24 12:17:57 +02:00
internal_controller_test.exs Conditionally support switching between v1 and v2 clickhouse schemas (#2780) 2023-03-27 13:52:42 +02:00
paddle_controller_test.exs Run tests in async mode where applicable (#2542) 2022-12-26 10:20:29 -03:00