From b43e7af34837c5f3ce1f7830b2f82122960b2280 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Fri, 7 Jun 2024 15:46:27 +0200 Subject: [PATCH 01/49] refactor: Update metrics to fetch counts at request time --- posthog/api/app_metrics.py | 1 + 1 file changed, 1 insertion(+) diff --git a/posthog/api/app_metrics.py b/posthog/api/app_metrics.py index 6fe56947b42c7..2cebd8460310c 100644 --- a/posthog/api/app_metrics.py +++ b/posthog/api/app_metrics.py @@ -8,6 +8,7 @@ from rest_framework.decorators import action from posthog.api.routing import TeamAndOrgViewSetMixin +from posthog.batch_exports.models import fetch_batch_export_run_count from posthog.models import BatchExportRun from posthog.models.plugin import PluginConfig from posthog.queries.app_metrics.app_metrics import ( From 590f74f7f7d96cf032522b39e68697e70fde95b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Fri, 7 Jun 2024 16:07:07 +0200 Subject: [PATCH 02/49] fix: Move import to method --- posthog/api/app_metrics.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/posthog/api/app_metrics.py b/posthog/api/app_metrics.py index 2cebd8460310c..0e9c15f81e88c 100644 --- a/posthog/api/app_metrics.py +++ b/posthog/api/app_metrics.py @@ -8,7 +8,6 @@ from rest_framework.decorators import action from posthog.api.routing import TeamAndOrgViewSetMixin -from posthog.batch_exports.models import fetch_batch_export_run_count from posthog.models import BatchExportRun from posthog.models.plugin import PluginConfig from posthog.queries.app_metrics.app_metrics import ( @@ -86,6 +85,8 @@ def get_batch_export_runs_app_metrics_queryset(self, batch_export_id: str): Raises: ValueError: If provided 'batch_export_id' is not a valid UUID. """ + from posthog.batch_exports.models import fetch_batch_export_run_count + batch_export_uuid = uuid.UUID(batch_export_id) after = self.request.GET.get("date_from", "-30d") From 53c71b64c7ee01b2635f654e88fa6a265fb9ecc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Mon, 10 Jun 2024 14:45:12 +0200 Subject: [PATCH 03/49] fix: Add function --- posthog/api/app_metrics.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/posthog/api/app_metrics.py b/posthog/api/app_metrics.py index 0e9c15f81e88c..3a0855b9939e5 100644 --- a/posthog/api/app_metrics.py +++ b/posthog/api/app_metrics.py @@ -24,6 +24,7 @@ AppMetricsRequestSerializer, ) from posthog.utils import relative_date_parse +from posthog.batch_exports.models import fetch_batch_export_run_count class AppMetricsViewSet(TeamAndOrgViewSetMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet): @@ -85,8 +86,6 @@ def get_batch_export_runs_app_metrics_queryset(self, batch_export_id: str): Raises: ValueError: If provided 'batch_export_id' is not a valid UUID. """ - from posthog.batch_exports.models import fetch_batch_export_run_count - batch_export_uuid = uuid.UUID(batch_export_id) after = self.request.GET.get("date_from", "-30d") From ea1d33f857cab64e4f66df8247bb2f5de24c7310 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Wed, 12 Jun 2024 14:28:08 +0200 Subject: [PATCH 04/49] feat: Custom schemas for batch exports --- frontend/src/queries/schema.ts | 5 +++++ .../PipelineBatchExportConfiguration.tsx | 3 +++ .../pipelineBatchExportConfigurationLogic.tsx | 19 +++++++++++++++++++ 3 files changed, 27 insertions(+) diff --git a/frontend/src/queries/schema.ts b/frontend/src/queries/schema.ts index f38f33267c18b..e937329344acb 100644 --- a/frontend/src/queries/schema.ts +++ b/frontend/src/queries/schema.ts @@ -1463,6 +1463,11 @@ export interface DatabaseSchemaPostHogTable extends DatabaseSchemaTableCommon { type: 'posthog' } +export interface DatabaseSchemaBatchExportTable extends DatabaseSchemaTableCommon { + type: 'batch_export' + query: HogQLQuery +} + export interface DatabaseSchemaDataWarehouseTable extends DatabaseSchemaTableCommon { type: 'data_warehouse' format: string diff --git a/frontend/src/scenes/pipeline/PipelineBatchExportConfiguration.tsx b/frontend/src/scenes/pipeline/PipelineBatchExportConfiguration.tsx index 71a19fd16fbf1..8ec3cad580de9 100644 --- a/frontend/src/scenes/pipeline/PipelineBatchExportConfiguration.tsx +++ b/frontend/src/scenes/pipeline/PipelineBatchExportConfiguration.tsx @@ -13,6 +13,8 @@ import { BatchExportGeneralEditFields, BatchExportsEditFields } from 'scenes/bat import { BatchExportConfigurationForm } from 'scenes/batch_exports/batchExportEditLogic' import { DatabaseTable } from 'scenes/data-management/database/DatabaseTable' +import { HogQLQueryEditor } from '~/queries/nodes/HogQLQuery/HogQLQueryEditor' +import { HogQLQuery, NodeKind } from '~/queries/schema' import { BATCH_EXPORT_SERVICE_NAMES, BatchExportService } from '~/types' import { pipelineBatchExportConfigurationLogic } from './pipelineBatchExportConfigurationLogic' @@ -28,6 +30,7 @@ export function PipelineBatchExportConfiguration({ service, id }: { service?: st tables, savedConfiguration, isConfigurationSubmitting, + isEditingModel, batchExportConfigLoading, configurationChanged, batchExportConfig, diff --git a/frontend/src/scenes/pipeline/pipelineBatchExportConfigurationLogic.tsx b/frontend/src/scenes/pipeline/pipelineBatchExportConfigurationLogic.tsx index 1bea2e71448af..51532e798422c 100644 --- a/frontend/src/scenes/pipeline/pipelineBatchExportConfigurationLogic.tsx +++ b/frontend/src/scenes/pipeline/pipelineBatchExportConfigurationLogic.tsx @@ -382,6 +382,25 @@ export const pipelineBatchExportConfigurationLogic = kea { + const customModelName = model.name + (model.name.includes('-custom') ? '' : '-custom') + const modelFound = values.tables.find((table) => table.name === customModelName) + + if (typeof modelFound === 'undefined') { + const customModel: DatabaseSchemaBatchExportTable = { + type: 'batch_export', + id: model.id + ' (Custom)', + name: model.name + '-custom', + query: query, + fields: {}, + } + actions.appendTable(customModel) + actions.setSelectedModel(customModel) + } else { + modelFound.query = query + actions.setSelectedModel(modelFound) + } + }, setConfigurationValue: async ({ name, value }) => { if (name[0] === 'json_config_file' && value) { try { From 81e929c597e4ed6ff2b9f4d6c2d6a0df986d01d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Wed, 12 Jun 2024 15:37:02 +0200 Subject: [PATCH 05/49] feat: Frontend support for model field --- frontend/src/queries/schema.ts | 1 - .../PipelineBatchExportConfiguration.tsx | 3 --- .../pipelineBatchExportConfigurationLogic.tsx | 19 ------------------- 3 files changed, 23 deletions(-) diff --git a/frontend/src/queries/schema.ts b/frontend/src/queries/schema.ts index e937329344acb..3f0a96f09e288 100644 --- a/frontend/src/queries/schema.ts +++ b/frontend/src/queries/schema.ts @@ -1465,7 +1465,6 @@ export interface DatabaseSchemaPostHogTable extends DatabaseSchemaTableCommon { export interface DatabaseSchemaBatchExportTable extends DatabaseSchemaTableCommon { type: 'batch_export' - query: HogQLQuery } export interface DatabaseSchemaDataWarehouseTable extends DatabaseSchemaTableCommon { diff --git a/frontend/src/scenes/pipeline/PipelineBatchExportConfiguration.tsx b/frontend/src/scenes/pipeline/PipelineBatchExportConfiguration.tsx index 8ec3cad580de9..71a19fd16fbf1 100644 --- a/frontend/src/scenes/pipeline/PipelineBatchExportConfiguration.tsx +++ b/frontend/src/scenes/pipeline/PipelineBatchExportConfiguration.tsx @@ -13,8 +13,6 @@ import { BatchExportGeneralEditFields, BatchExportsEditFields } from 'scenes/bat import { BatchExportConfigurationForm } from 'scenes/batch_exports/batchExportEditLogic' import { DatabaseTable } from 'scenes/data-management/database/DatabaseTable' -import { HogQLQueryEditor } from '~/queries/nodes/HogQLQuery/HogQLQueryEditor' -import { HogQLQuery, NodeKind } from '~/queries/schema' import { BATCH_EXPORT_SERVICE_NAMES, BatchExportService } from '~/types' import { pipelineBatchExportConfigurationLogic } from './pipelineBatchExportConfigurationLogic' @@ -30,7 +28,6 @@ export function PipelineBatchExportConfiguration({ service, id }: { service?: st tables, savedConfiguration, isConfigurationSubmitting, - isEditingModel, batchExportConfigLoading, configurationChanged, batchExportConfig, diff --git a/frontend/src/scenes/pipeline/pipelineBatchExportConfigurationLogic.tsx b/frontend/src/scenes/pipeline/pipelineBatchExportConfigurationLogic.tsx index 51532e798422c..1bea2e71448af 100644 --- a/frontend/src/scenes/pipeline/pipelineBatchExportConfigurationLogic.tsx +++ b/frontend/src/scenes/pipeline/pipelineBatchExportConfigurationLogic.tsx @@ -382,25 +382,6 @@ export const pipelineBatchExportConfigurationLogic = kea { - const customModelName = model.name + (model.name.includes('-custom') ? '' : '-custom') - const modelFound = values.tables.find((table) => table.name === customModelName) - - if (typeof modelFound === 'undefined') { - const customModel: DatabaseSchemaBatchExportTable = { - type: 'batch_export', - id: model.id + ' (Custom)', - name: model.name + '-custom', - query: query, - fields: {}, - } - actions.appendTable(customModel) - actions.setSelectedModel(customModel) - } else { - modelFound.query = query - actions.setSelectedModel(modelFound) - } - }, setConfigurationValue: async ({ name, value }) => { if (name[0] === 'json_config_file' && value) { try { From 054a8269532aabf143bfeaf0eaeaddabcca35f8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Wed, 12 Jun 2024 15:40:55 +0200 Subject: [PATCH 06/49] fix: Clean-up --- frontend/src/queries/schema.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/frontend/src/queries/schema.ts b/frontend/src/queries/schema.ts index 3f0a96f09e288..f38f33267c18b 100644 --- a/frontend/src/queries/schema.ts +++ b/frontend/src/queries/schema.ts @@ -1463,10 +1463,6 @@ export interface DatabaseSchemaPostHogTable extends DatabaseSchemaTableCommon { type: 'posthog' } -export interface DatabaseSchemaBatchExportTable extends DatabaseSchemaTableCommon { - type: 'batch_export' -} - export interface DatabaseSchemaDataWarehouseTable extends DatabaseSchemaTableCommon { type: 'data_warehouse' format: string From 11b47d36d50fff7f7408e44f36100115de6a2c1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Wed, 12 Jun 2024 15:53:48 +0200 Subject: [PATCH 07/49] fix: Add missing migration --- posthog/migrations/0426_batchexport_model.py | 22 ++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 posthog/migrations/0426_batchexport_model.py diff --git a/posthog/migrations/0426_batchexport_model.py b/posthog/migrations/0426_batchexport_model.py new file mode 100644 index 0000000000000..68f8fd2c72916 --- /dev/null +++ b/posthog/migrations/0426_batchexport_model.py @@ -0,0 +1,22 @@ +# Generated by Django 4.2.11 on 2024-06-12 12:48 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("posthog", "0425_hogfunction"), + ] + + operations = [ + migrations.AddField( + model_name="batchexport", + name="model", + field=models.CharField( + choices=[("events", "Events"), ("persons", "Persons")], + default="events", + help_text="Which model this BatchExport is exporting.", + max_length=64, + ), + ), + ] From 106a72542be1c329452a50c9280db70f41552069 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Wed, 12 Jun 2024 16:43:48 +0200 Subject: [PATCH 08/49] fix: Make new field nullable --- posthog/migrations/0426_batchexport_model.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/posthog/migrations/0426_batchexport_model.py b/posthog/migrations/0426_batchexport_model.py index 68f8fd2c72916..37cee94f5ab43 100644 --- a/posthog/migrations/0426_batchexport_model.py +++ b/posthog/migrations/0426_batchexport_model.py @@ -1,4 +1,4 @@ -# Generated by Django 4.2.11 on 2024-06-12 12:48 +# Generated by Django 4.2.11 on 2024-06-12 14:43 from django.db import migrations, models @@ -13,10 +13,12 @@ class Migration(migrations.Migration): model_name="batchexport", name="model", field=models.CharField( + blank=True, choices=[("events", "Events"), ("persons", "Persons")], default="events", help_text="Which model this BatchExport is exporting.", max_length=64, + null=True, ), ), ] From 8b19079977e702bd3894d3a50a83b13fffa99d35 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Jun 2024 15:33:26 +0000 Subject: [PATCH 09/49] Update UI snapshots for `chromium` (1) --- ...funnel-historical-trends-insight--dark.png | Bin 14543 -> 12643 bytes ...unnel-historical-trends-insight--light.png | Bin 14301 -> 12357 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--dark.png b/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--dark.png index f427261f0c8010f06b2182d23f21ea35f32b3b67..a820c399ecbf23f0a477f1d6c54d82101a2b8272 100644 GIT binary patch literal 12643 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 F{{zP_KF9z7 diff --git a/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--light.png b/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--light.png index fa79b1b313e1daf2ac05ee5cadcd1a1f37c26b24..1276a2564f958e5581ebd905eed12aa2877600ef 100644 GIT binary patch literal 12357 zcmeHtc~nz(*KW{OYaM9o`|1k_v>zy~ObP-rC01)`M4*a-fDn~Q#)!;A2(49X70@8_ z5UmVFNSJ3x5UL0vM418vh{_~mfRKbFB>DDnz2Cie-GA;M-(Bneadj=i!IPYv-~R3W z?B{v*x%0EV&CbtNKS!ZZJF!3ga2AEylmI`=pKXEv*~fI=?_02n&}DpSCxy6kbf>MxhX zn2(&a3U4kbNG(k64c&#YW!gtE^3Q(p^SRYc2akXL?H_+!56KwjV!R^mCG0qKP!f&S zRMzZSs1c5kYcR&`0fXZKcFbSdGtQe(#}4~*c}ghM^7vP9mp8xs@4oo;WvRK+CNx}o#}D! zrMcg(_Uo%PG2M>(xwOD`zG{;B++}%WlrIwSlUkIp zqhFyC&d+Z=NUV%niTNS{xl=B+-9q^jR6^t+jc~i4O>gMoxXhpe0|T$MZAG=lKC;WM zrCcxgCtK+g)VKFg|Ce48lpoI{g+= zK5ebKe_mJVGnD2rhn`aAL!ywSh#l$HbM3dba9=|urE?fiI@#ZCwL zp+wf$x<+z_;124O1m*HO#&waRKK`Bk<7aP&55Us+q=}WCXy_v!-OcqN?ah2g5u*C+R$XYQP#-uOfo-! zla8>@Iy;M~Rzl7qO}f;;qe)5HclR3FONEOij6Hf6?(Z}kJ%p`t=TGNr55;gcOy`(om1kh1mK&!qgq z!UJ&d>T{*2v2gZOaZz3uQU||m-a0)V%VQ#!&WRZDn;ow5B~9k1*q|`(&yEq?`PR%TvvTu{5}`q^R@VFxNFJUY)WHe%q_HfAs> z+9z)9=xqIEGbAI~N;DeE{51f=izRI=;)wx5@thugTvNV$``p3Q1-e4ciy|k-O==-| zMe=%*Xxeq&**$gJ?gL(2g2;Ul9X{K;U%J$U52nk6r*kb#91BllPn&V%H^yz!XJ7|y> zTOlmSpFfep-oN?=v;ItZFiK4(6|rm$TOM-d!a8$7zau+J%;|Wb?Mo&^n2ub1VxnOi z5G@za@Y}W=ruLX}H|8n2aXanGF=(vjrW*doFaV*@#{SFs_je4k@|HdAmV++||jrg!=86P{>c5MvGbU3WfE_A73#tFlF_4tHA^KzSZXS*^cC(k;zu%hCy^Tm*p z8c}b4>CUw@Yl#tb{r;ua^~nb|rkp|jx=~U#o@Q=HTfcHkSu@XpFy}ZNR5xbi*PA~Y zGfx?Kl7v)P53F}>Y0Oe5=USUY;jm(T3vmVU{_FQtt zNd?!Qsda6foYI(8tsZYTr=yL8knZ%(z_tkEo(ON zd~vUs=Dv_*x%Bdz+xvPKWJz=}6Tb?J)yC4`h#IL>?~(iIXoY9T+9Jn{AQielF6GqW z$)9fDa}I--M2XEpOow6r`76mpD`n^&r!;-T8R?ofTpEEbDR{3Z{SUYLYi})D9*1>3 z{0>VZ%h!q;)_QGIyy=JadC2!RNAs`4mrt(sIk4iTi|PAq)4b;Tivwi!j94hs>k65u z2uF`sv5Hz&9TUwKk?l!7x7Xb&9V~gxp(L+2t-t76KNSV@j9Vpv&)P=1an)ybDLjhe zCf?_X-*p@~;^x8c=DUO~1<$U_?i3GSnebt#&Wxqpn#Eu_Z`s;GO-^{?yE{6Si?y6- zjDnAG3okWnUOtXwa!%}010<|hyqr(gVc7p;)H~hX$iM$D|Ban0M%vtsX|t-SG`9nc zq;(USWk~x@Gi}B$6w)zb7i*j=7q~Z|tbE7>Veu`GWDV;|7Fz1np&og9e9sfZiR&V+%sM{>>D~7(&61n+Fx8!!gye#k=ee>QqRQ1Bw8k5BRK9W-w+QZ?=`rX z0k|9|tRgd4Iy4n|xucb}gC$xCJg=eh%b7<*t^_wsr3J#zfT$t}kX6?mT9k;D;(*R{ zsq%rEVdIF_4pu8a2>47>PN_=*;0xWwDj2}Zk4+te?E|LQRUa~eG~4D0ImJI4K{VK< z-YQ?#KG-Vk2OwZsi!S=~lw>>qk#ow_d#WY})h)ta zvT4Gaa8`*h+gKY_< z*1!8BPRij@zmfi%B6XqR4U}svOetBZ1+g_J%%1R z+F}`xh$E0ChVd(RbE4ke$+V0N4sM(++yU7E!LmD(^y#!mhf74Mm>k1X?%>AKln>N+Fk}Xm8bwyN0aAYVFmDfeRL^FSSDX zOtYCDOJ4W8=Xd)kZgu-&-an?SJ~xXME}YIf^4*OsJD+-_d534^wIkFF5ZWBDvhvv$ zHEl+&tf`UUnj0BPRzm+Ytv957J6C)qp7=VgxJ)zMieCmhLuUOM8e!YP*L?XWk*klL z!hN~kMkbAz`Zcv1a$~+*FD8za&E_YDC${QY_Ok!srxsZL{VkxjyX}vDvw7>T?i*aeYPC$dEWWWV5(?*YLnXQl)$t@5ouxetXR~voq8BPUrb}=#e^pggqv+MiFxb?_ z(pgdn7OC|@n`8~xuO(M>0FR1@BAj^pn*NbkVd;+dm{P%ypP)(yDRp+8?6RxzV|{2f zYqCOq=0xM@wJ3ji1g^^4gkTEm*2#|_iF9;X{<+G##u}YsdLljpklXnLrPGioX4KGx zK^;lzRX`heXjnz1;#uMjjQossMkr*YndRk)(yE>=W#W3fc4tW$EeqkeM1_I?i3qg` zrOzK`1*Y?pGx`^5Gt1Vx_tM<5C0bPM*z#i#H$FX`e^z1AYB{*Pti%Za+R~7vAioUL zn1bZcwrx6-(4_{N%D3WGj$Hj&;Ki6Pqoa53#LEUq&?KO5awVbRz#Fm9N%?%T!b-~~ zsoTzM>>-fs8Dx7%z%VpE1VDShc{0l*&E2hOq0+W;!Fm}$$xR@{DJ1NH!%MZCVDWn! zj4Pr0ftHO=+i%-4O#+uFf0$pqdD)BfY|X=?{v{NnsO2}nTK5q*RvM)Ei ze^Druyx~}0i^%8Y{cltbU-{wI4i%DbUi5s;0&qEBNG7B;9B|0XA&ADzFw$Wbl4ROg z(b8Cn;d4{>8$uxm&&q=qGH7F%Y`IjAG*ImI_m6M;{Qdiv$dyBZ1?VuwONi@lZzFpu zmayr0+L@+7t`WoD>1(rnI(4Jh85S5b-hmG)6jQ(UdV%Q53#@gy9mnHl;m`#W^M<~! zU9@_ahH&{2?^}Hs2g^>MmbG(FbCNyMvUWPl_E1+QI(%0rI|rVGc4!jg4CouHk={5& zN+L=Jm`>+z2dfA4jVVJUoFmZM5nX8hCSh|gko?hW?K@|IDQXbbUgt!PM`s?oe0-!P zAiadz_%!DAtfReoLE{)*wum2KBvFc!)Gen$;Sjd$+Lr-T3a&{krY$ssjsV*vd&?o5GN}>bXC=bd~evZ}Ity5g0q!!?L2)5iQ+7#Z)@Zo_az_fL|k9-lQv^2UcfldZF4 z15_4K&R0RlMIl@icxxe1As@!mWtA&06ph`?iVlrz(A5@^TtZ~!g4aF0?L!Xnt0~yZ zwy7~BexW_)I@qk--|NRBI8#V!Bb?_n8Ep;ntTRDrb0s%kYQjO3YF`b`Sn&S+Mv@vj`%jUCewK7ke}1n3H!E)09!g zLN|4lTzdE?jfS?46?P+?{fSL-PP}Ax7Bsm5)Si`a$P>v7L>W9jal7_XfPSB<&M!wd zAzp~)?9c^S6!wHPhu|F)EPWo~QXh5dpt53~q?5|tGsDCY_0?$@le;u&**c>#{e~K@ z-a06<-oo!fPO_CX{w6pN4WTpBOf#+?8ig=whC!2_je7XG>7HE90;_wlzu#-^{cDOU zk@Eb@W2kkMYxUJL8aY-^B;rB0aED|jH>NoJ?ca)1QZpRYphPX==iUbA%E`oYdkiAY z)3UPq!-mntVzzBVijG51Kv_%eNCyuJRxov*WF9&_nNHvEK46#i5Yj_w^OngB&!lK) zsvSqw2KDLJsMf8&&jT8kzxd>9)UnI|hnGvbjiT{beid1!hi_haA+`QT+F_k}&Cs^F zb=6-YxiS2@gr@NM!393>wZMw!d(1bM+l_%eRtIq+Qbq2#eX$D_nHXX`LWi`Hj=qy= z^jH`p7dXBxF7XI^jX(rW?>+hQ0Z(*o{r&~~rt;2PYQY)Mrl&weGVZAuUq{LbSRl)U zeGyEgpqgOtX^>1qNTt;Jp_8}$AZGeE%#29!3A=a`3rO;Y3q{*)a;m%-Ya{zI4gS9}UNdO8z%FJejnuFT13 zfH*~Nb-}Y-Ix!78oD&Bqx@cMOJXx^;J`PlKsGzneFXm|~c@ef~ zdb0hHj&AG*@~ttkDL1$8onEM7_1It}uOaWW+HdV-fXc{o#t~|Ug-&L|DNX*LcMZDk z=;UQU(po{ScuY0-WSQvV#9hut*WR?QEesoL{dn)CVuPh`@^XaN3QWQlM{0U&0@z&z=^m~v zi{cq_*?2tDgbjf|huv!yCX1a~i&KSO4k!#cR(#9gw1dCZ;Bujn^Y*PXPq! zf>JNup^1*W*@2K*Z`cdUI1NOO69zr?&=D?JU=+WxJ{L6cBC!PhqWp6ELHDKz3PPPd zX3^DN9M6s<%D5@0fl~!%i}!(*Fu;++>YL6MpF0SVqayce1TKqHG|jCoCnH69BByl0 zycrZ>Nu8Pb+uwFStrN@*lt@-)(4vMp3w;&oYH|Yzm2-^|i>_c(;k;pwbk(_#EC+!= z2Ab;FiRi+SfNZ7|pw+2y{P|v7bDO8KCb}8mTFsemfPBz=;-2x~)g@O?qT6aSjgaIT zisLQ;j+X!}t8esRQ{8oMY*h|^O)H({S2Tv$G3H1-m%cGf}z63sF8f$BasH$QI->|@Rp5{5QcsjWM9+a%f^A(Lf&GUgp~ zaXAZ{qL6VFcBFmb{bw@GLw%MYN7v@rhG4tA1n1bzN;owzI5-U+Xh0tHg18w=uFDjE z<=tJwLb&+`&_2fC7VHDEjV0L{G~^G*@TZx!MfSPZ;WnnAVtSA*)9zG`U%r9tC$rYg z**RS&FX}%)YcY0NF5K51C~HaU`LDFM)}hpt;myDW0rRg$B8EQ5Uf@TLq?-`XPG(eu zh3Lj%;=%rLnXSLM@`30x~uW21LA|1h*fH2G-^C{?%hFNh{gP2w{r|;2`Zw z+^#9Vzt6#5w6O?9Lv*c*k=IW& z;4DRtAH%2W=rVm!-{zC|Pmr{M`S@0jDtFqM4r>EycbpOx?B~c|+Mr45k)wxQgvo3u z%*v~;{{-ciKOBEL=jdT9BKJ!Lp-2$0DF>ziUd{-na?%dzOy}pD`ys})*D#|CP$nD@ zEKACxV-Op6IvYR!uELPF+^)=e^Xvw9B?O3vP`mT;ZS^#{Oj-m6He$mg0%8VGi%Mm$ z?b8HJ32Nxr+}zyL%V%*oGQ#GVwXxu;z8d?xxH6cdUUT z>M&^O*)&aH@@3S%`pf4B8IeOhdDfO7Nr$g9^!YapR5$~h~RA4SY;T8&-DZ6DU!6WfGKAm zwAf|YSil(vKNUd~aE>+)d!^Wsv~Bi<{D2TItChcZBZc7smaTRt*z`5M9j@bMw3S4? z3+0yz7#>k?Zz6$46s)`zzb*8NeHwA}e9+8|BRVB~aAc1_?p-N#Am<@2YG-9t890BF z2+avNB0PYn-(z((ufMyCC4m;Hj&TF<@9JMm~Ji&EZ#v=;CTdXRBT4pA;Hi5mr1_#04nNUL52 z-FO%&=ahVj(cfLwVI1i~mBWw88o8kO%O#tyfTV~94~ajS;^4&n%o@7VdHJp8W`-d> zE|rmFKAnM>w8P+hI5*`UnEpE_?q4%r;57{-&#=h!wp9?s2D=ZOeu?O35U|srwHWS^ zW2u_5_cp`e%JDlL;wztf;&!Xyn?rn9dAXU!zE1eqmFIgyK_L}VsZ@#W@xB-qMiCd@ zQkWi?od(&~{qIt*3s@us=~Ju~?u}uch@}oj)Ooy{d>-Z67bE&=d2R!2mY+z7YXT_T zgS-O_PrsW2#Aw$3P|5I#0>qzo4UsVxT7s}Ja$JmB9x zNROh&%PJve(;!l?*``5H@j0yP^lfG>z7t4=+SxG=c8v4})dg`(VTR=-jQ)+ze$ED`x>u+wPXd}cDQ8*C7BII}wv10mwydd)(gyTm5rJalY z!VCr|A4YT&GX(`%2A!+O2n}XYJ!x*inZVgiu?Q19$F_vN-P;l?YL-jpk>o`LlmE-S z@Ie=31gDA-{_ip4>9kCeY+bGJkZoMaVBJ|aw`?GIPIZxB+7&=C1=Kh!+e6f%2F^Qs z(`6^7zx*c(rOZd31rXXIUJW>3$mGvILcRI`X!J-b_yI`iB7OPM_cvCvxf_Lz&9ika z0CQ6awFKt=JHi`51N?|I>lAy7?_h8dP$lx)p>AduvUv>;hM`Rar+^GCIyhXuCjh;JdDbs%Pes;zDGVC7kdLWrkB z$fQtsp~#!_ z*3{DhECslUImjsC#O+;nAmIAwLdb^Z4=qv^fB3Y`3e3oa_Jh!^G)|4KzB zEeN=5Q473}jC-M{AU3dIs|<9DqxDy{BFocp(W{wxC6w6If*jVbh?WZ|Ugnlyu~v;+Cs_L=EPK4`$9#8CyJvvYIen?P|M_ zSM==0R$rh8ALevGWPD!#c@i0ev~>_GkeFEENezI=?q$2|C01|Ol|BNBc@!jDM!5eYvc;YTF={}2f?!gsZfj5O-G zyK*g_D4{N;rWsHif`Y~@@V>d5%i$4Gm(}Ta;ToTzP`toS(sMsf?Y~cXcI-r4(^5Vt zpD5ol{S0!Fy4i)9#p>gzh*Jl5W}4xJ7Rp;t38}FqH3#9@a1&%4;g|S*i*Td_9{RSO zNe+W)zj|+>9cOSz4|S{pzL-VYf4Az=v;XCp@;wPycnrKv&$apxo+kDITf;S=3WYlP z6t2(|vDjNNv1Rtv<+0=q6Tbn}C#XxZ8H@k!WAgv=IeRhP`K{+e@wLvIDENmxY5xQD I_@!U}6Vnj=vH$=8 literal 14301 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 rZu Date: Wed, 12 Jun 2024 15:44:03 +0000 Subject: [PATCH 10/49] Update UI snapshots for `chromium` (1) --- ...funnel-historical-trends-insight--dark.png | Bin 12643 -> 14543 bytes ...unnel-historical-trends-insight--light.png | Bin 12357 -> 14301 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--dark.png b/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--dark.png index a820c399ecbf23f0a477f1d6c54d82101a2b8272..f427261f0c8010f06b2182d23f21ea35f32b3b67 100644 GIT binary patch literal 14543 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 F{{zP_KF9z7 literal 12643 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 I_@!U}6Vnj=vH$=8 From ae9870c2273f3f8ad749734b04cd63a06ddc52df Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Jun 2024 16:06:07 +0000 Subject: [PATCH 11/49] Update UI snapshots for `chromium` (1) --- ...funnel-historical-trends-insight--dark.png | Bin 14543 -> 12643 bytes ...unnel-historical-trends-insight--light.png | Bin 14301 -> 12357 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--dark.png b/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--dark.png index f427261f0c8010f06b2182d23f21ea35f32b3b67..a820c399ecbf23f0a477f1d6c54d82101a2b8272 100644 GIT binary patch literal 12643 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 F{{zP_KF9z7 diff --git a/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--light.png b/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--light.png index fa79b1b313e1daf2ac05ee5cadcd1a1f37c26b24..1276a2564f958e5581ebd905eed12aa2877600ef 100644 GIT binary patch literal 12357 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 I_@!U}6Vnj=vH$=8 literal 14301 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 rZu Date: Wed, 12 Jun 2024 16:17:55 +0000 Subject: [PATCH 12/49] Update UI snapshots for `chromium` (1) --- ...funnel-historical-trends-insight--dark.png | Bin 12643 -> 14543 bytes ...unnel-historical-trends-insight--light.png | Bin 12357 -> 14301 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--dark.png b/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--dark.png index a820c399ecbf23f0a477f1d6c54d82101a2b8272..f427261f0c8010f06b2182d23f21ea35f32b3b67 100644 GIT binary patch literal 14543 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 F{{zP_KF9z7 literal 12643 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 I_@!U}6Vnj=vH$=8 From af52af9059c020466544a6d9edd22f6c8f18790c Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Jun 2024 16:28:39 +0000 Subject: [PATCH 13/49] Update UI snapshots for `chromium` (1) --- ...funnel-historical-trends-insight--dark.png | Bin 14543 -> 12643 bytes ...unnel-historical-trends-insight--light.png | Bin 14301 -> 12357 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--dark.png b/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--dark.png index f427261f0c8010f06b2182d23f21ea35f32b3b67..a820c399ecbf23f0a477f1d6c54d82101a2b8272 100644 GIT binary patch literal 12643 zcmeHuSy)qNyLQl4S_k;twpwJWW%`tvHHnA;EJaB)hzHw19jf>TM&IfZxICg5(NA1 zn+w+|qG{~?0N$TlAMigf{Cf6?$)!(!zp?-6!#790?zX@BFE9HwAG=ul5#v%Bvm4>% zZIky!)Os&uQE+8S&xA}zEF5xvow_i(!A}`^>hIhj%18d>ZL-7u>Bez+)D9p z+;So4?g5>)2}vE>3j)2rX#&y!?Kk@0p8TgN2auCZJ`;_|{H3M9nDO(Wdq7pcx3ugG zj}8oMEZUv-_aBPujc)=8hsz_$6@69ZFi}HH%#|xw=-=-JeO6vkacX2_Bu2eNLqajO z%sVEJ=h%C(#kbg{^wFaeLkMrSaJ>GtA?UOn@Jtu*+Ae-)!~TMazAHK|k4L`>YKj?h z2?z)%ut7!FAN&M#|$KV<7*$$xh1Edkmsk;;;i?0nSwOl z8wqdSDdHcw$@VK6tv*^XDyi;fM0VE3oNK%yRLI{}2w9DvSOjdQL2lqOp(_jDQ(G5H zL)Vv(M&?6sqHJU;wKqP4iTG2XzIj(y8c1*1nXtFFx3Fc`m0HK>VW-hpDsGEml3C(B zN(k;1zGI-6tG90E80W*U1`BdxOplCA5~mfHvlrZesQ)`=h-*|Ct`U%DJ^XpY;frG8HjfcjFPr;yu%42Q(RI2 zjI6?b7Z7s6B#0|j-d!#*GlaEbGW^c5Db99A5h>1`2)u_?yS!(ZW1UjCqqy21kRLtt z=S{M)uGSZn;QHvGQuM-GcfUgNcbHyam2V)lFudy}c3uW6X_eEs@| zu9*KefV3deA9<|5eU`=@+IXE2Is58PFC>#cTIMG{+mP_KO#0Pibk;PqhzjBKtbXu| z9$w(sU4Q#R$ecu=WW1m#`EQ@X$jfxrNm$)To<}{u5OOLjKk84}L_|HlYWn-8A)|!TEbbU4OU3`jNEVC5Y z>rG>qBvs8TE{j8D*pP;&JrL;(Yf5dJ&9P^adfDhQZ?IWf?go}ui|V`YLFc_XvU)ak zS%sLKW52(!If9a8c5~P(+3Bq5dn=Xw+Dx^N#V#LDn)B$_{Y8?w;`6}CCO=}U*%(%q zsgIh^=j&bEeRqs?52{@JwQX~BvVW(=V)E?gHJCKLhsbMM4 zxS*Hrvxyi%81Z#(FNE;nnsN8XB!-iJnQ!Pyt$jW{y!GXfo>U3!n9^$vMf(bfZE! zLE<}ySsrcdUfviZsfsf8ZS7%q+&~^#Y#Q#`51&z`nljcN-GV>C zc|Z8Nb}-7r!J$5Bn8TtNk3SRd!!1`g`v(N%c4)gg6~)z^Yr%*Lug%T$J-e7SzoV;~ zxf1Lu+E`4DF4G@+f)cnXg!K#obyu>zYF0ORLpdH(<`wP!z&`+#~857iRnYm{JalxBqMdVFmCQV@L z+jD*vN&lMbXgdG#d)>sl-2^H0fyHW2$9hG1L9VN~&3sqPN^IgLO!BDARVQ2Nl~H`- z>!TjFSKgcAX77~crA**r92bUKZRstH$*7y|?YbWis@DjLz&W(zNw&)yOSymE)Qm3C zP@rU7de3~fxJ|HTeP!WZzyEZFi?+Ly5JFJ34YkL-bm^yt7ik(C&tnVQB4ZI8{x6!x z6y+P=RN1}giJd#a?UVRR`zLFNCqn5^bM1EY&ru7|cbHaxFVwwS^ zge4PAxq_FP##1UO*p-3|I(7;nh72(kl+I%j$=zp<-7p^se_@9hy*%|CY?m-ql&&W# zfFLn04T*4^TVlxo6@t&^wb?|+84xyDi(FF2Yvuq@o}4lP9}0VP;DV<1gmL_2Q}>Hs zbXkI^jRIXSO}%GuchXyB2DJzQSiWv4wvtc9i`gdm;n``1MEmNH=AM*g`YsiY{ifIj z-E&6wP}c*SNOLgXK7idg>V34OwEpDshOnM(20N2MB-DET%oPLiQ84nvW2S(SQi^GH ziaaAf8H!=G3~mIN`Sy?8gtLi$8$Aspy4>Gu=U!B#s!-j>*gu$h7Z{!a+&^KZWlk)k z8D(7=t;H<9bM7?6Caa4sWuyKGYT<;Y2`swrLAKd#Xn`T^`nM*^2)(uQR&5L9wzW4D zq#kxACM|U_9sUDZ*vK(}kz18GY^KvX61Sb*NoHtljfN&7#yYYte48lW{#0jc)d;t= zh#=p(v_Vc+QOvE{pRIFm9g|vt{a<>8SL-i~fUPj&Nj!EL}Zfbxf+ z5R=p?3CJHjP8p4Y5lsMj$4Vs^uu!}aPAOg4!Agyb39K->;bk}bB!7sdx;-AfTy4A3 z53cWigZg#p^+|IQ+&V7e9C8(UdjxHe}t&s8zNu)67{&@#LR2Lf{tFoKoC-~DR{of%)jXB0SW_}S%%Z?*?p$B0AoLhgf*T)t5b)qgt zT|wh)jQz{J`|H{LpSG0JhujV*N17f=@x>bM`%U{63XdWq$Tmh=Y>XnBN3}@{D6Mw6 z7D6|Wr)Z_N1=01~T=dO+Yo;{XfUWJLjNG%PW{1hAZx4?IMCEGflZ~OyYrhQ-56{>2 z9wU`s@bBN1O#`XyjHkd>>dnm}$|b{ng}HmTxM0}&YDX6TnGur$6iGQBOX?CePu)`^ zg=1Q-P9(-^O#wtYFb!DGx7jK@={1l;y36FJ{MIu3!m z0OW9rBeCpli+75A(|6YZ;v$`v{>;;Q4{Tmt8x1Jp=hnA23>KUCCOR_tqj5UC@-kl@ zQ|U{|tK65_L(HNVBOOUb;kK&ypD~8#bH_IiIj@6Zg3LqRdlF5y(^ZNXa@Ez3qF1t+ zxNJw@BigoSe-FcrG~zZJv(;Iq2aV@UU-jp`=>?#;Kn&*Ql`xgOs#f2chWJTG(vAe4 zv{TON+eb(d+=bJ~#<-mV1ZrxH+lw^vv_u~~VBqZ}PlpH3f42J4Q)4&bYXNrT)t#JE zYx%}Oa6Ex1OQ$`F>dn*n`XRhz?{`_+q`LLZUTYQ^aQeqcj+OXYWjiad5EM4C`_=>& zA0Mwa;S;I{{JKt#87l{+yiUw114rrg7Ahkw;tQnHs-H`i58Fvw7`Ipm00l5aTO|9% z%{(dOpqV%2ft~7VLXH4F>KMD^Vu=jytsejxg3iWP>-x$r|ijx^HCle=-}aw~4%mcRewa*0L;eD0WPcc`z>!8{0# zQs9rzwLQZtGHjgZpBWuh7ujZ@p3syFQu&FM;?w| zqygt$>^OnVwnSSTpza~g4|X2K8NM*dK*BgS19sPDANO#kThRRyHtU{o%t(cc zzAL?MSgiQE`T_^E2jn9e_E&Y?%Vb^In9}th^%a>}^5x#vy*qVrJzP!SV zsE_XNIiYFzAcsi2#JtwGrqeRAm0OadyEXl#eo(=YP|3=n1?CG^zqVr?X>3L^a&si8 zSBo}7UzaOslV+BoP2T*O>0S8&>kF6GAJd8-{8AKm-vPhTHBQ#e6bn=hGPBAG1@>q{dNb{+z%qx1ogl;0+o7D3o-Y={jgw!E!XPQeg?0-Cf@%dMCKrA#ccy35N{rGu^E zYQmh0JzNfd*?-rtG?#z;H0a^t(vZvMAxlYIhj>UjU1FO&;xAcsg;sedI>%$ILZpp) zYf~=HCGfg8zsU?gFuvzjP*C0;%xk_$D}#r0o-6<0FshrDD$40}`fq^75#YNc%c>VO zg$ic9tk@pfkhWLY7Y_tg^=vP6<&yV3~=I-FC+2a!anl zl6Lh~T|;cQBDSa*yR@upn>7D)3ai>%U>~Dwg{mV^$00VkX(Be=xIFc@g@7PMl>2HYRqPcm72PQvtuF1 z>H+{}Lf}rby=qcs>O-YeR8$C^rJrqeMNK_izxXr+U(7VW{{)g!^#K*6@qVx4f#UDTVc5tyVg+E*r5#? zey_m6K{op#?Fm-AsrH=dt+B*AiJ{VnWRb1ey`U>o{f@^$@AnRUC4tUXm(qQfT9i(H z(A2B@wBu>FKVB(~2lkLSo|x*6=T0zCm4l1S7va?&;HN$GA``fK{fYQclj0UfMTvbY zMnn#*4*A^h2B0-LFRFY8bXYDX;jNhNEI+qLw(1})qhij~zk#E!ee^Go`>z1m&q3q+ zRrkw3JrdEseFsG}6wA6>k`tU&bKI5d?eQ~|h~lOI^!Q`8yjP`5K1ebt2zQ0<*W3{2 z2NbSunap+ibpZwA-Cg9y;3y!?r7B-2>Ics#)J%&Lp<95Yw?0bR-x3V3)X4in$YulTM#xtnBDQg&(TE-o4C=r2V)@ zb>?`HRHZmsrgRa&uMVa`^xRE>Qb$4b+&@|17@y*T5k5cz054G=>kW`C*G>cJv^M@q zZ*tc~c+bvqO+IOAvql^L@BSY5VA+^iDuwWc>dbdXp9C-ZYS7SIIN5NMYt;MFP<~B* z7}a>3(9DkRIJ8R~^9U_H=Gk_CQoQZCw6x?dd}MF_*EdSt0K$$i=COU+lD$J0s?MC9 z#HPAcCu=zQ0mO2^UFw(HxfeYCe0}qVQjw&@A)>Y;wdVnesk<5s&o|P7CTB;*)%TYr zNisO|s~7IOgo2dZbThWA3-enlb%#{9Xn~JN;GIut+=WB<`|NuqIIaJ!8sXC zj)2N8M(C_1Q&Uras;Cqg+ABz`ZJhdwfj%ZNq$y5D%~RwY@#|7A2f=dB$*AJg<*}Z+ z(UAI13L4;6J*Z{+P^C_D^3b^1R(Iz`n#IZ{YlmkYK&6!d>_|4K%`C#J2nZ^Pzcz(s zhdVDK%t|9WGc)p9WG%k z-ma`;&)_Z4OawL67#u;0+L}R1U(>}L<_=UggUw=>bgcB}WNG)RE9^v5d~4V)-FdY6 zn47y0o@b?H4rer{xB4bx)pjx<#G z{Nnf34H^$_DSHZ~JT=T(GPmybbtSsQPc*>7!wHVU)^B`w#_z}mnlr2WpbtqbIZuvy z2XGR#)V%ND0u8EItNK2o1etHeSlp>xm+h7MNmr)N``g*I<7;R%%Jpx3l{|KiF^MH> zGVVTAncNj!bcmiR#!My@8+*yU8c+5zRllT>jcME8v6Dp;Ca^jgzbG)z=5kjwj10hK zQ`nok`uUtQnIYNzE#C@{>^{CvNLuPv<<}5-T^mA1Ai!_xqq7{6UVTX8S8-J-j5o}O zY8eDCZo~tOuK*CyUo#Up^zbA_BdM3UD=ZiZ3bm{Uo&uB)nMkLMC(+dZv7iPZKMZAy zOfoV$5;d2xZyw8XhQN21R2FqpH=(4{%&lCbAts@Uh;bZfU%gl7M)CF=4N~k zCj2K9efecHn_3Jo=D3Zims$A@R=ur|JO_FP`1m~*h2-ma{4EqPtFL&5*7vc1R{u)0 z$NbWhLobe6hRi=GVFlvc3R}O z0G%JGHAxtGpMg%pVjyny&x`4818bf7#SWtjRGY}osIu^_z85~tJu|xo_tmu<_ z+o1)WY0zx&o4Y>bIF`r}M)o5nDbxle&+|hQ;6fMssPPU1qH#Tf&A3VegxmAs;nNHM z9=O*JE^>_@ux`@iE5AyunM{^WV}c)voBf12S-b892thFhz%Qa6WZl}sN8<<&S0w)pmk0$wd%mjKL zCL*QbIgh*l69%=Dj|+e>ux{Tt>)t2=s8bnbXBm(;o2+`4Onui>#(=I-VS$*j{>@c&E$B=Z5dvEmu)-)FTJFyVmqjhh2(mG@hDEa?sUxbu*jCZ36?{wGq1;#*R*zM0peZ4 z&aS1JoWaOkg;MCY-bM08qTCkE02Zr+VLIs{u%jTKv z?i?IWFaLh~&4X*X0-$@)+?5*cf=$?HNw+|32IMeE8l+8g&r&#xxj0&lY@*>~ z=SL@3e(><MyX&hD?;1i+z>-9pVE+3+&BszR4!iWGW)!e|-|mY` znFAKW27h99KwxlG?GPa96n+E1-QN#e^MK{T_;pA1Sb(wTBOCnkc)MnDCzeXI7)(-Z zu1jdjf5X;STE+Zd52y;El+8}w@m;qZQ=bt2GG@`u>=S%3MB3X9Ye=8hSmFVBJOm2dqs+aM#&(Xm%qS~r!)e|uT^2nn< zv1`+v^$+!5d~)DL)by{UtzcHasczzZwSoxU>4xdp%sxpatlVlmQ0Rh=4TKXKH-0L? z^B4|-h<`I50{O}tF#EjxfK|`QGAr5f`(;$3sgY;KfD0fmS<%K%dZZ;#jnm~n60LiQ z?|(^4l7q7bOm(%N%5OYZDK!BFIHeSTev-x-gMvOtz#5>GSzmLO$lrTH!)F`n2jo6l z&cZIYEpBH%gMtGR`21Xh-|^$e&jTRJF@E9#H8lQ_|L?H%zIt|)fW4A?2n@(1fQb>< zac6a_ib;^y;+D!0>tfZ^v#OB0&sLM!N7QIrR8}zJV<7AaVGV^ z?M?tU2g_1k{&uH#v&Cl|+h5D{8K)mWuAt+s`rB39;`M}<K&H3gf@XkQf|MJek;jB9s){+tViTwb8>0!RiL;U45`smV47Ye8MMuYp#RV z2lO6?fa|F#yYY5J`EPBjv%gPCU))5Eey~H)J%a~_LM%fXy2{IFwPBA2KilfYBWS6s zyO$#@giXs_nY$}?Xts7AZA6O;;OU&12lH71Shtm)sWcQ5cev{ za&KYm6W2Y@E&Lz~Z^y~xtAI+ZF^*(I-qFJ+)q;6?pR`P(B8!@)UBX+FyQfucmUhv7 zU9Do@;LA*IF%E;7SR7geT2?D(@$C% zXZ0d$GOAv616_xCI%%eT3a~E`%O6+Ye#ek3$ppn<1i!Da2Tc_etMWhQyP5$#k4Uw{ zxhAqs+C>j|cQW#I6Q)iUX4gMJ?gSrcL`<^aFV1tz&io($d>(v{o0_ zE_$oDwNDIKoV0=?4P?5;(bVE`W@uv9-2yv1^b#P74%@q2I@JHc2>a1$C|CB)ic$(G zu!%fV%6>piw_@50D0t;p63F)34(F}s;(0(pj@lBAtEEfX1eh6I5CMk@9F^*R(af&i zeI&j8L}L3UW}-Qf2EYm4%XF*m6L6=xB*8@>KI8{*K!X+NreZ>nxO{?2p*^5VSvj0h z?q3#=`BvTGcyuwH^}DhonpTx6%rS8l1+n_k9PR@^;zP_nhRHgDNqr8SnP*+8fR6AR z1wDY%agI$+*$OiU8Widr-KEsj4`jF};@-?$n0wP+z}CNhC4tFnQu{(VJ)uBA#h>81 ze&__m)}SCh9uTYRxXQG7HA=wF5Wv+Hl@cJA@LIW08CwObAB8_^8*|z0>^7i6)khC!mK~(FOLLer(e$c($RXWOb6sCSW;!To+m{rft02>!Y`UELtD8Ae76bybjeK*rj}q*Ut9hyh2<=SX?+I!OLpRdRs=M|8#VFSs*qvMZ)`-{FULOV~2n6ab_q#@~e6@C3!?H2u zgyB7is~t2omNMM>S9+v+Lyp|Yq5|%NSQ?H2ygy5HSj}2X_)dGavs*v?2z2A~|Me`( z|9S!cX}trB6HmNQ7W+Uqv`^Q6^nUx(BZZMRAdrOzO7A*q{}+GL=*ZtVh4Rl*f7d+E zKbHK*l7HWH*gxL%k2n3}P5;!(zir&~pM>&HLis15{C}2E%=K=d(VKvH5lbBefu4N_ zQ1|l6%FqwIs;i*U(E(rJ=6-E}+&rnI(|zOPMfRHqk|Lb!`r~T>5~BS^#RCq{*qSZ<0voi7kmHjXg{C> z*&#=(qC*qvXWGvJL;eGiYb|nZZ>0)CTTxn3P!W(Z?X_wnlZrqA0Tm%4ga`pb2uZY7sn;PI z1Z39AAY)`oWC&3~kSUQdgoFfzBtSyK9Fjot-^cd>?3fv{OkJ5(B<*H ztNsQZKivsi4GurN_~-}d^1BDHPoU$+U;ImhGY*WkWZ0rpH}CPwLnIf3@qh7uKbbni zfxff9AG4pJzSWswUGjp)JG1I(tkfG(ydN`Added+b!cel`p^Mr&c9QOi+8zY96-#8 zyLuwZYG!Bdf3H_Lyw=W*3Pu!_m37T;>9s<#jArzq$GwlEP$+R{dU9BAVIgf-Sbv?@ z)d+0Lnln|Q;rZZ~tU_54cUM6oc+RZfVilTq!pkeeI-J(d^Ao`aD?>UubF7dl>!8)c zb|1jAvZ^Dv=ThiZ?W>-GB@~sH2a2vh_h1{me0&NK$zG)2T6e8`-g4WpR$>DE|G-o5 z?gt|I@hSA)ul3*01RHSuKalo+Q`OV!yaHVmH!&%*=MUW6j#Q^=%@fC`nkRX*&>JDj zWi0BBuw*g!z_Ec-@89hC*7CSAi!Js=SepqAuljqCuyho|BM&4r2b!F^f!gQwOGO?#i&JDD6#}+kPhX76I;DzAH)b?P_iP#mc&M zPoMiDb7;+Yr2tP75YX`+s` z@yBFQKPNCqd~oYIVH&-Qh8h~X8RWPV5#8HG7dPp*a(o4U9KI=|Nm<;8Dz_@{-h%Xl zVJCBNi?t0ai%;!^RlAvWW3wJc!ha@)b}t}VSt<9n9~Iv)TNl!P|NDiZLV~mH*TePL zjw!k@<;3GwQ^evRfipkFb5O#kkB8(=RblDF)_N=zKSUq;FpexgsJ-|o^l?FOhaYHl3BvQhU zSBVmTsy-rlr(1MuwsH)vldjXNo1&DSSaqr8R{9nv-7TtVx&u~z3{^t8N7s5+_OvOEn^@)6TN9pk;Nq#2*4(e2z0`aLENVwQaoUR;nbtMO zPf9u^z@OzCPxR_Ib`$xY7$gjtGYLNTwwcdBMz>QP#A-!fK~utpt3sVa#jbu# zIELM;XSm8BYuNVeyJr5S(LD&tK$)K?&ywxXB<~1PpDSOQ>Q{|i)i<2S`!-tdf<;!m z3bh-Z_oSFsg?6=n=@ZC!$&1&moCq7Pi*?qi7?|EJ(&@LNo8;|?a_vfNx_#`>r{w%c z)!`f)Dcu)-b*&zYUu(^cX!ILERrZrIaob>q^D$lBo60=tCch5R1PN_Ez=Y4ke_6W7kRT;A7a zr%$ICHu`5SN-aJk>Sk)kathOyGS==p`?A@du9s;Y9_Q{PGDlF#>QL$W&P#iNiP^nf z3ht@LQo+hBf?Mx&jJ#lr%kkP%NdGl!W$A3arHCO~Sh7zbeh(S$yw~zG+&)Ia;_J(+ z@ZKzYSvR2sM<*IuS&$m0?xYxN3bGwUOQYnr(9Ae@H#au{9vxqxPP`iU08v9QxF zJ?;%lcH1A?Ie1!`WLPC6YD^J<@o!)4a6jiaJn#f|@M7P%qur(Bl|Neto&btrZ6`Zs zH0i?+;AM@xPc4HIjnYXry!N59N!kfsAvQ2^M&!{TTS|`L*0_Y6#z;)k_SDA}ebJm_ zbnv^T>x@i`0Ow>k2dq1jNa!g+lKC+mW$BKp$0^3TKWGYOK*j+S<;SaQseKZI)AGy& zS#OqIKW=j3g^Dl8bz8`qbhN(ErZZo$THFF`bl@X@rS6E}LBa*+MCDCx)J-l>rVHwn>1x zyU*Ke&&sWr17-eR#PXstx02X_wgu8sKmvNWgq3h~o9dd3E_AkAsIEHc>6wfs&E3k1 zQWvF&AdOTtM)@`37xgO#{M;}Dwws-=KEx{{Cj<xFw(zYF)&}jZ z{JwpIQOt-|#oR#3s2T7pVQE@Tu&(Z!7W!=S@)Nq$!a>w7Jbh9^OiD6JJmW{pQmQk; zsX?QwN475feI(rq86q2u0#1YfITGKM?qn8DkMPAYMjo=jts7IfwmR)(J1NQY;}!iU znMhoR!M4`Hic#;0wJ9s=MRy3E6tV}*8Mn*lg1MWH8l^ra+c&WA8zO`xUTM9c4!3;c zO0BjfbFR~hoj>8{R;3EfESpza6vs*jCi+W|N65yWxVlIzL!rf%&<-+Awgqh9wFFYD5xr*hu2bqoYW36=C*~teV zQ%tQwJ73=fkwc$lSO2+AuvHybUc0Eiwbfc-oP^gOG!N4D7$lpn+ZOW!WvrX&nEHi> zy&c<8lei!LoG|?&Y0GkFRmvM%;_`2w5yjkw<@S=cbNgo1Qes*r`dPuO(Ap=cqWOWX z;6l^sm=_*Eui+tber>H(j-Pvem7GVT*@RPv_ZtMo1p3h z1Zh*@g1DpNfl@86l|Zqc{Oq~M{`o0v&*N5aZfsii{y6@#c|k(paeVkV&m}+y1u=}o zoqOi$M)QV-kdDn0ePPM%QV>J>*B>wQD@&FS*Y7dny}_Og2w*hFQO2%)W0@Z$#35ls zN(idzP|~6=nh|RSma{yi@GwQh2~lY=<8Pb|Bi?*7+CsQ%I>E2?w2yrHV}@;b4!O`3 zA#u;9m?oQfXqy#f)NR=DTmTD2MTL`C;`Fb2-b3ZE@SC!TE7g&fS2zF4pskR-e?GoV|N&mD^H+gZQSl3)@m+TP!2C zB*_mb8cC23lrlXtYcVC2tf6o-1Tmh)O}7sBj%)~{i|9F7_hFHpwPkvSbRX2cyB39E}uQb`?Sbi>^E(c81HfLBvcRfoi#q-eB+mEF^b z;_(wZ%Ip-&x(*jhCdE`G4JJ_?KN?ez;kC!~SJ{D8^+agXuM{S(bS^JcFwGEmoM)%A zNCI76Ks}ACoWo1X9-#{lCE?hnOWn2bt}c4#h6-lAx^7wZNbM968@rUY{xW%GY6fHj z=EL;K)JB5l{Onj8Zs{I#Y#1x_pHy30TjR#x!X?jw@A$nH8AcB73pywpX_qp!3yPFq zvsA0XbJ==N8jS5`S6s8}=3xipr>nL&E^$S2VI{40u+T zMBjP-XGp0L%$2yXq3SRwpfguiZhYzNj}C)^K^bjme^V0q37?I|Z8mBG`9kQ}>wCD_ zwjWc>U>t02s-&0yUU!~^gN)!IbUZ;ol0K8w_4~DzUhDAlc#xWjzunnw8Ij?yzTKH{ zGg1C~KnbN!+yVC(q7}PkSe#x=)~OVxzM@YasF3PCzsGoP$zwksNK9i0*) zylTO^kj8d?_8nAxU;A*aYrU<$PNNZXp&L`ZKo;_cWRfA5;H^~ZlNX%H-McJ zOmE6Pc>S=)PW!hmK>_bRA9=-IEu)DVy!S=D%R9F0LgC4unZsAw$UV=ZM(1T*25bE} z5ci5^=NuHDbu7(%(NiA4OL4rITW-A*W|4q-oevTq)~Ls4%gy0W41_IXZ6=~w^YUWl ztol|kuEVFr3^mtw~QkZVwLbOIudkE(DTr ztxp;?)eWe!*YEurv$EE6?GE4g&wG=49YRNMQ#)RBnD>=<8<(`hk=K}uV_RzTmD5IZ zFAHifCFQZd#q$0Bwu%%_s2tq0Gz$q4plJvCFp+cYcGQo9cv9cE5q=rr5`bKkaZ_?j zPAYS*Sl4VozZl3vjPi-C!&_`*jI5PhVf*3=-HkFo$=#k7wAdjdjTksb?Ycm45GsV=3=Gp9T1$ZuDFVdh@E%x@&rH_WtTA}C;md0r*4&NEddy<21Te*ha9 zmO4M%L2}o5!;9twPrlDS$!M!lvCOlriklK*Q_HNvjzmsaeOnmR{oSGK{fwG{P4(U) z&C$>zi-QUhW^7ZE_439}CCfn(I#iAG*ySvHb9GnuB`8aHxMtBsER>_bitH92Y{$sS z>^6=E+?=PVJ}QzmLr}+C+IbVTAxE$K5ux5|E9dSvbCJU|ty&sFb;42`NJ|DA5u+`) zlT{u{!f2PR`Mw#xNp`X`10T|KXB&n~C7r1KE#A%aeez%WcHm;2cMBPB;Xn&?Tph)!tU znKwyM2+DcQ6uo1+z92ah-LO+19*-8`J~KESA2n2i%EXZ7uR`Lt9lqpt2QD9R%{)Qd~eS*gwh8cW8-M6>kSW&Baa5S;(?QV@MAEyt;j+V>!|D=w&U1idH=}2%MigeW{y0_cm$NJeR4^uJiP?QhYAX2yyI; ziS-MXuY$On=RN)B%li6kSm8CyV|21d*P=A=F49>Y7=jxO!$ePkH8*o?yIu_^>+N(c z+AU>+L&r-6nE+3 z#fw%TU30XXE^^H{P+Q5G!t%30f)!er9rrT@%H~bm%IL%CW;uzw5GMni=qxN7>~*Gk zp#iz^R^Zs#LUhAS=%Ule8(E{KoLh>KoMLBZDg}l)X6rTRvY=$m0HR!Y&)w>%( zh{s26?+=?DI|Xvi=c=^5`a!HU$Gnq@-819-^LKMAM%QkEpZ!PEZAfUB?bY(-$Bwo{ z!J!{AtaDQKgy!DgjEZZ6JKH;1#$3qU{DtH&y*AvoD@`zbzyNEK24sgwu1fHx&B**~ zRN|C2QK6Z2O&d;szTFAiuP9=g5Dz-n%PX+rPSw~aztjP7j!j%4=euPtKrrL9idSL< z7_h{N-$r}$J2pe?7IB?XD*bxn@EIYue5&Dxx?`h}PrD&6GhKAy{zOVHvI~`Jhhn$A zLEb?yr~C`z?iEhho&>80K<0IkgoGcA=LRA>297Vju;--Yu)YR0Dyu4|6Kx_SXWf_lw~MYny;MBeT7w zyOo+&a_(KMV9UT|{5-V`7>1qtbyIJN4;j)3LwQ}Y=%6S+{VV^WupfqmeR>&M>(lEO ze}|2K{~S91w>e6^3lQs(#+-jueWCkYto}7sXIn;V)>B8~QSh@{y_5T$E`NMokC4xj zPEJlja34ENKwId#ydc^S6?jY2Zb=vV4j=L_ z4<_rPX@lqHmQ~%%a`~eJ-(f1n`^@e~#4g|YJp!<>Z3E9-E?Y8W?Xm{m<#}#s>+)N5 zCdE{vP^uzoyy*Q-)uIG|cp-d*1VFh2|D9et^j2-m#^U1Qey86^#b0uT)+^XCAxaLc znnVac4Lkj?pkQa(ikP0lAtay!RJBO5ymqqP#cE7d2=Q3rD;jy{4KpKpvrXJ^tb~tc zPvLN{t!gK(3kzM+_Uw-sH{W72pOQFb9#me+0r3#Rdyp}UZuEmX$|MI92SmSv3}3t?vJz^=TT)P{ z>a(plO=X9BiqeKxjag$np|&y;=ly2qJESB*(>5@F09n`EicamGv&7qu8|^ok9UCQ! zp_t}f=GV^^%(gU+V{<@8sS>d*+oe>;Tr1|xLI_LRVu*T>tCRieI5#hx8|q+-1oh~y zZ`PSi-;grYJyo@ma=3Wp>SEBOHfOm;_ZrK@c;^@{{}h;T_7W7PdmC_bUuM)_9~7#M zIQd;C4oykl)nOIhNC8vFPz>N04YmIFMo;8MP1Q+RwMx1FT>DM7_zo}9m2EtnW*-TZ z@MT5I+UL9DQeXXQ0;szk^pzR)XG^l2uz^xvF{`Z2dzjW)3%56WFNy{H;&_fQC>ED6 zKe!8EJ{REsW_jio0q-232#QzKSsyjQ#oNbR$OR-_0Z`9u6NbgY!B?UvV;)MU2d2Kr z?3$`6+RConVFEpXay}hd+=t`=9?Tw5*|yWL5NtyPWs1ftsJyLxkB1;`Y=1)MV1sR9 zbFtBY*Ex4!P90gNF9~$w@F1t}0d;etxTK`&Y^z@MyY;Q2o}iV8Yb}jWzPJP5xz41T z6x#V9y%rOms%A_L)w~bDhxG0CN~!cf@hP7|AGWdT)hh$>_~ScIN;!a5;>Su}E);`Q z1kirsG&u7+Gtv}1bx^+VsL8!#X2MB`Rf-+(b$}Rytd(K(PV>E3y$a@nUHQ%M*MtCm zmK|n)oa~vsVvjb#S5x^%YcOtfsLqGItS#>71$@YXaGG~rjLNmVadI}q*Z|01?H9b} z42T8M>M%2(Kz-bd$P^)LWX$!rP{%5mPB|#GA_M$UUa%cAO=DS+YIRYN8-OMI!+ORN z7cuMd6gCbaZyvsINn`_lJ5|qS{BAd(Yo9x>D`49=h(->P+hyD;%>0R?dEsenD76gj z8{dbZIK}a-5wq#+hYf}g)91dVofHirl5)JFk+`?XETX}UQjTxM@B6OBYCP0 z@wMB9;-tGNP6ZkToxO`7$a;|6BRPKsz?l@&S`nF!ls57tcbo38@J&baJSFZEZypgC zt&LAIGBRZKx<}jsoki_@r8!WB5Ewkf>_Pa-S!0~#yb{;BU@OQnwOhDP?F*oyc&?c? zP8u2ZXEmxGqm2=+K~MlIW9Um-S(qd$`L$ePp;P75V!h~9nmGGy+;gpFCxRg<|7MZy z+!|Zdns;R}HVVyj+U=mQc{r(lOm0m4hhNRblp0QCx+!k@5nKYq<4S=T=Gq0CLvOKHNknZ(T0}$lkuYI- z03{EwCMi?9KUqx%Uh|fbibxs5GMN^w#+dWj3LaL--T|Wi)8NSErv4PAp>+o52$p|V z^BF;t?Ku7XkZQ=squsb(k#Uo_cvDuPX@FBeR64%i{ALN8MrF>38}w;(9@ zmS*HCh#22enc7gW$!XJ_1SlCYFO+JiaguFV#ozp`oj z(a@4e|4>dqTs!ciX@DZVPgrz%#!60=;!kgWCY8fQAT1`nQ_5>Nas&mhi+Nukp^T+5 z>vpr9HRQg&-ODS3!Q=pga-|%Pptx8tzFoKN83|BZVR3@6R=)1}%kc!=8hzyK7@1;9 zc2;xdCx%O+Z9*ssT>*z=Xu=)oyR8X9J}o_qA&1GWvn@3vvW_GZ-zCM&P&oSa`c{+r zW5MeH^)R~n3?)YP>_@Pptv5u)aBNAjmeIw6>Gem~avZD|K;-7eZF0wKz?WGyymh zFiGsg0>88M{uFI0jkux?U0zy`pg73u%vujPeH-9hb(l86v6YtDqK6ApqvHnNK@b~w zuh`VOQi3LKf`^oTwoM&p96x<%wJ= z@+|Zw<^a%MIVc)kNdL>nhipr}KEz3>s3!P!k5)89mGKe;>c<9L_CA+dBfy!SIb0UC zY8se(YDsxxTzZFP{k*{hBbM5*^sYmt)n|9Td4!hSSJ`?8_4O5bR)LHxe{}7(T?*7e z-H)qoZUxZTK92u201hY?^9)z{5K!zsR*B88BZg`{7ghYr5JQ2eY&H>@S4|b>B-kSf zqt)|*I;2Ry`O2Dg`Mtn}1Fs)F%W*#@4k})JvChN-;07xL=E|yA zuRAQ684x*=Kqee^%{sVmn?vMXHyiGg*+8BRswVEzo5IPtGkaF0x5z# z;8OycApXleMCmc8dijqey3y}V3Q?IhfNr{`p^Ym*#prpvU$A1;v)%r&y#0vTmQ1u5 z@RjXqDK%}4J|BH!Aus_aSV>vrB7d*}>>-2{UCfM`%?S{ngNT0pk%axDa2=tYgchmL*=zAc1U^iY~;okx< zsjYBphFR{`185UxTLtk{NrG=M6dzt3HlQBAP^^!sob7CbliW8q|FN<-Y$l~L10h(l z(fO&o_dKuK7p@$};N?u^ofvsFB2qOvWv9WzOLqtT?GNv=r70FIhFDx!qDqAJjDzEC>e+>~lP}yR%+LNL}CYE<9#Ixc^ zFD1RPH8v`@rO_htg-9tar^}-`0S|#xO>|#TOzp-muT-hTnNY1e$Zn$f%OTK-@Vuuq z3JJ4dLs=t=K9L5PY2ZlWfAFim0MYaT=NQ7k1q~=XScGwCC}T~>RZs*x;;fBt|6IB< zOX=8u=6MbjQ;c!bg2egmR!}r^H#;6=?EiN3WDv7q ztWxH5hFTp~Mbyr|CZyY8yhYArAF#H=1NDx0#R|6?)w`4I7=sS&%u4s3v$WE^q7t(K zAxxddTB7CNu_WM{(;Ro|F{wB4qh0i#s-w!Rgjt_T7bBDp?>t z4^Yaur7QJT!QxKWYl>SR;X?ZT0nEt=WdPtPuDL?H$qri6Nkpmkyy4&`#05M&CKB ziEQ5(O=|pd3!ZR$n}bEr!P#egtnR7`6z2gz8Ew$2GgWdf{B;+d@9m4`KhuvMeA_Ap zfb%ZdS$ohe^FUh(m64-Zme|$4YcGM%IHZQ)Fr2?>{BuX^o_PcZ87Q+AL^xDHfI2o7 zK^@zx#Jgj~^$=Tk_Zv%5iCJzAClJ3K7}9&TF0tKqmvRGWA^FAEE8Av@Ht#UU@oc?g zcz*e}d|fxq9@R@l(}oM)D>pN;5g3;>q$U6i7`qYCYTL#Xz(vkY8jG1nJFn)Mp zD7$`_;V&Ra?I*O{^4i*5__mCGU0lNvz6LdR*LoTX$`=~o7h@usqjKPsi4Q=nlq&y5 z%iCubZj6DNO~PrQ+z~q27Y6piIX3KlpA0EhFKX=wlYi(3@Bl!p|62FWf9nVNS6g@f zgM&*Eha&Om=T~{4n+V@1$6tygbzaa^P7?nmhiz6K3D?m@`vaExUBy*A@H`r=u_c^M#I2Uu!D9-Zz$6U(?jW*83JI1lO+hAxqufdpHZvYApFc>i_Fh~-oslv15uxI5; zm0FuKr)t2zC#TMc6P?*KR8_fD?(1QCSo$^^f@C7rdagq%GvkN`tTO5$*q#aM825Fgrnr1RBWkKeII!P zy89dxUjRyRFxc7mA6LPC`}2#uzy0+k-d|tf{jc3zG$0z-Ot*6Ozn1~xu=`Kt|2XsO F{{zP_KF9z7 diff --git a/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--light.png b/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--light.png index fa79b1b313e1daf2ac05ee5cadcd1a1f37c26b24..1276a2564f958e5581ebd905eed12aa2877600ef 100644 GIT binary patch literal 12357 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 I_@!U}6Vnj=vH$=8 literal 14301 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 rZu Date: Wed, 12 Jun 2024 16:39:17 +0000 Subject: [PATCH 14/49] Update UI snapshots for `chromium` (1) --- ...funnel-historical-trends-insight--dark.png | Bin 12643 -> 14543 bytes ...unnel-historical-trends-insight--light.png | Bin 12357 -> 14301 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--dark.png b/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--dark.png index a820c399ecbf23f0a477f1d6c54d82101a2b8272..f427261f0c8010f06b2182d23f21ea35f32b3b67 100644 GIT binary patch literal 14543 zcmeHuX;@R&)_>GiYb|nZZ>0)CTTxn3P!W(Z?X_wnlZrqA0Tm%4ga`pb2uZY7sn;PI z1Z39AAY)`oWC&3~kSUQdgoFfzBtSyK9Fjot-^cd>?3fv{OkJ5(B<*H ztNsQZKivsi4GurN_~-}d^1BDHPoU$+U;ImhGY*WkWZ0rpH}CPwLnIf3@qh7uKbbni zfxff9AG4pJzSWswUGjp)JG1I(tkfG(ydN`Added+b!cel`p^Mr&c9QOi+8zY96-#8 zyLuwZYG!Bdf3H_Lyw=W*3Pu!_m37T;>9s<#jArzq$GwlEP$+R{dU9BAVIgf-Sbv?@ z)d+0Lnln|Q;rZZ~tU_54cUM6oc+RZfVilTq!pkeeI-J(d^Ao`aD?>UubF7dl>!8)c zb|1jAvZ^Dv=ThiZ?W>-GB@~sH2a2vh_h1{me0&NK$zG)2T6e8`-g4WpR$>DE|G-o5 z?gt|I@hSA)ul3*01RHSuKalo+Q`OV!yaHVmH!&%*=MUW6j#Q^=%@fC`nkRX*&>JDj zWi0BBuw*g!z_Ec-@89hC*7CSAi!Js=SepqAuljqCuyho|BM&4r2b!F^f!gQwOGO?#i&JDD6#}+kPhX76I;DzAH)b?P_iP#mc&M zPoMiDb7;+Yr2tP75YX`+s` z@yBFQKPNCqd~oYIVH&-Qh8h~X8RWPV5#8HG7dPp*a(o4U9KI=|Nm<;8Dz_@{-h%Xl zVJCBNi?t0ai%;!^RlAvWW3wJc!ha@)b}t}VSt<9n9~Iv)TNl!P|NDiZLV~mH*TePL zjw!k@<;3GwQ^evRfipkFb5O#kkB8(=RblDF)_N=zKSUq;FpexgsJ-|o^l?FOhaYHl3BvQhU zSBVmTsy-rlr(1MuwsH)vldjXNo1&DSSaqr8R{9nv-7TtVx&u~z3{^t8N7s5+_OvOEn^@)6TN9pk;Nq#2*4(e2z0`aLENVwQaoUR;nbtMO zPf9u^z@OzCPxR_Ib`$xY7$gjtGYLNTwwcdBMz>QP#A-!fK~utpt3sVa#jbu# zIELM;XSm8BYuNVeyJr5S(LD&tK$)K?&ywxXB<~1PpDSOQ>Q{|i)i<2S`!-tdf<;!m z3bh-Z_oSFsg?6=n=@ZC!$&1&moCq7Pi*?qi7?|EJ(&@LNo8;|?a_vfNx_#`>r{w%c z)!`f)Dcu)-b*&zYUu(^cX!ILERrZrIaob>q^D$lBo60=tCch5R1PN_Ez=Y4ke_6W7kRT;A7a zr%$ICHu`5SN-aJk>Sk)kathOyGS==p`?A@du9s;Y9_Q{PGDlF#>QL$W&P#iNiP^nf z3ht@LQo+hBf?Mx&jJ#lr%kkP%NdGl!W$A3arHCO~Sh7zbeh(S$yw~zG+&)Ia;_J(+ z@ZKzYSvR2sM<*IuS&$m0?xYxN3bGwUOQYnr(9Ae@H#au{9vxqxPP`iU08v9QxF zJ?;%lcH1A?Ie1!`WLPC6YD^J<@o!)4a6jiaJn#f|@M7P%qur(Bl|Neto&btrZ6`Zs zH0i?+;AM@xPc4HIjnYXry!N59N!kfsAvQ2^M&!{TTS|`L*0_Y6#z;)k_SDA}ebJm_ zbnv^T>x@i`0Ow>k2dq1jNa!g+lKC+mW$BKp$0^3TKWGYOK*j+S<;SaQseKZI)AGy& zS#OqIKW=j3g^Dl8bz8`qbhN(ErZZo$THFF`bl@X@rS6E}LBa*+MCDCx)J-l>rVHwn>1x zyU*Ke&&sWr17-eR#PXstx02X_wgu8sKmvNWgq3h~o9dd3E_AkAsIEHc>6wfs&E3k1 zQWvF&AdOTtM)@`37xgO#{M;}Dwws-=KEx{{Cj<xFw(zYF)&}jZ z{JwpIQOt-|#oR#3s2T7pVQE@Tu&(Z!7W!=S@)Nq$!a>w7Jbh9^OiD6JJmW{pQmQk; zsX?QwN475feI(rq86q2u0#1YfITGKM?qn8DkMPAYMjo=jts7IfwmR)(J1NQY;}!iU znMhoR!M4`Hic#;0wJ9s=MRy3E6tV}*8Mn*lg1MWH8l^ra+c&WA8zO`xUTM9c4!3;c zO0BjfbFR~hoj>8{R;3EfESpza6vs*jCi+W|N65yWxVlIzL!rf%&<-+Awgqh9wFFYD5xr*hu2bqoYW36=C*~teV zQ%tQwJ73=fkwc$lSO2+AuvHybUc0Eiwbfc-oP^gOG!N4D7$lpn+ZOW!WvrX&nEHi> zy&c<8lei!LoG|?&Y0GkFRmvM%;_`2w5yjkw<@S=cbNgo1Qes*r`dPuO(Ap=cqWOWX z;6l^sm=_*Eui+tber>H(j-Pvem7GVT*@RPv_ZtMo1p3h z1Zh*@g1DpNfl@86l|Zqc{Oq~M{`o0v&*N5aZfsii{y6@#c|k(paeVkV&m}+y1u=}o zoqOi$M)QV-kdDn0ePPM%QV>J>*B>wQD@&FS*Y7dny}_Og2w*hFQO2%)W0@Z$#35ls zN(idzP|~6=nh|RSma{yi@GwQh2~lY=<8Pb|Bi?*7+CsQ%I>E2?w2yrHV}@;b4!O`3 zA#u;9m?oQfXqy#f)NR=DTmTD2MTL`C;`Fb2-b3ZE@SC!TE7g&fS2zF4pskR-e?GoV|N&mD^H+gZQSl3)@m+TP!2C zB*_mb8cC23lrlXtYcVC2tf6o-1Tmh)O}7sBj%)~{i|9F7_hFHpwPkvSbRX2cyB39E}uQb`?Sbi>^E(c81HfLBvcRfoi#q-eB+mEF^b z;_(wZ%Ip-&x(*jhCdE`G4JJ_?KN?ez;kC!~SJ{D8^+agXuM{S(bS^JcFwGEmoM)%A zNCI76Ks}ACoWo1X9-#{lCE?hnOWn2bt}c4#h6-lAx^7wZNbM968@rUY{xW%GY6fHj z=EL;K)JB5l{Onj8Zs{I#Y#1x_pHy30TjR#x!X?jw@A$nH8AcB73pywpX_qp!3yPFq zvsA0XbJ==N8jS5`S6s8}=3xipr>nL&E^$S2VI{40u+T zMBjP-XGp0L%$2yXq3SRwpfguiZhYzNj}C)^K^bjme^V0q37?I|Z8mBG`9kQ}>wCD_ zwjWc>U>t02s-&0yUU!~^gN)!IbUZ;ol0K8w_4~DzUhDAlc#xWjzunnw8Ij?yzTKH{ zGg1C~KnbN!+yVC(q7}PkSe#x=)~OVxzM@YasF3PCzsGoP$zwksNK9i0*) zylTO^kj8d?_8nAxU;A*aYrU<$PNNZXp&L`ZKo;_cWRfA5;H^~ZlNX%H-McJ zOmE6Pc>S=)PW!hmK>_bRA9=-IEu)DVy!S=D%R9F0LgC4unZsAw$UV=ZM(1T*25bE} z5ci5^=NuHDbu7(%(NiA4OL4rITW-A*W|4q-oevTq)~Ls4%gy0W41_IXZ6=~w^YUWl ztol|kuEVFr3^mtw~QkZVwLbOIudkE(DTr ztxp;?)eWe!*YEurv$EE6?GE4g&wG=49YRNMQ#)RBnD>=<8<(`hk=K}uV_RzTmD5IZ zFAHifCFQZd#q$0Bwu%%_s2tq0Gz$q4plJvCFp+cYcGQo9cv9cE5q=rr5`bKkaZ_?j zPAYS*Sl4VozZl3vjPi-C!&_`*jI5PhVf*3=-HkFo$=#k7wAdjdjTksb?Ycm45GsV=3=Gp9T1$ZuDFVdh@E%x@&rH_WtTA}C;md0r*4&NEddy<21Te*ha9 zmO4M%L2}o5!;9twPrlDS$!M!lvCOlriklK*Q_HNvjzmsaeOnmR{oSGK{fwG{P4(U) z&C$>zi-QUhW^7ZE_439}CCfn(I#iAG*ySvHb9GnuB`8aHxMtBsER>_bitH92Y{$sS z>^6=E+?=PVJ}QzmLr}+C+IbVTAxE$K5ux5|E9dSvbCJU|ty&sFb;42`NJ|DA5u+`) zlT{u{!f2PR`Mw#xNp`X`10T|KXB&n~C7r1KE#A%aeez%WcHm;2cMBPB;Xn&?Tph)!tU znKwyM2+DcQ6uo1+z92ah-LO+19*-8`J~KESA2n2i%EXZ7uR`Lt9lqpt2QD9R%{)Qd~eS*gwh8cW8-M6>kSW&Baa5S;(?QV@MAEyt;j+V>!|D=w&U1idH=}2%MigeW{y0_cm$NJeR4^uJiP?QhYAX2yyI; ziS-MXuY$On=RN)B%li6kSm8CyV|21d*P=A=F49>Y7=jxO!$ePkH8*o?yIu_^>+N(c z+AU>+L&r-6nE+3 z#fw%TU30XXE^^H{P+Q5G!t%30f)!er9rrT@%H~bm%IL%CW;uzw5GMni=qxN7>~*Gk zp#iz^R^Zs#LUhAS=%Ule8(E{KoLh>KoMLBZDg}l)X6rTRvY=$m0HR!Y&)w>%( zh{s26?+=?DI|Xvi=c=^5`a!HU$Gnq@-819-^LKMAM%QkEpZ!PEZAfUB?bY(-$Bwo{ z!J!{AtaDQKgy!DgjEZZ6JKH;1#$3qU{DtH&y*AvoD@`zbzyNEK24sgwu1fHx&B**~ zRN|C2QK6Z2O&d;szTFAiuP9=g5Dz-n%PX+rPSw~aztjP7j!j%4=euPtKrrL9idSL< z7_h{N-$r}$J2pe?7IB?XD*bxn@EIYue5&Dxx?`h}PrD&6GhKAy{zOVHvI~`Jhhn$A zLEb?yr~C`z?iEhho&>80K<0IkgoGcA=LRA>297Vju;--Yu)YR0Dyu4|6Kx_SXWf_lw~MYny;MBeT7w zyOo+&a_(KMV9UT|{5-V`7>1qtbyIJN4;j)3LwQ}Y=%6S+{VV^WupfqmeR>&M>(lEO ze}|2K{~S91w>e6^3lQs(#+-jueWCkYto}7sXIn;V)>B8~QSh@{y_5T$E`NMokC4xj zPEJlja34ENKwId#ydc^S6?jY2Zb=vV4j=L_ z4<_rPX@lqHmQ~%%a`~eJ-(f1n`^@e~#4g|YJp!<>Z3E9-E?Y8W?Xm{m<#}#s>+)N5 zCdE{vP^uzoyy*Q-)uIG|cp-d*1VFh2|D9et^j2-m#^U1Qey86^#b0uT)+^XCAxaLc znnVac4Lkj?pkQa(ikP0lAtay!RJBO5ymqqP#cE7d2=Q3rD;jy{4KpKpvrXJ^tb~tc zPvLN{t!gK(3kzM+_Uw-sH{W72pOQFb9#me+0r3#Rdyp}UZuEmX$|MI92SmSv3}3t?vJz^=TT)P{ z>a(plO=X9BiqeKxjag$np|&y;=ly2qJESB*(>5@F09n`EicamGv&7qu8|^ok9UCQ! zp_t}f=GV^^%(gU+V{<@8sS>d*+oe>;Tr1|xLI_LRVu*T>tCRieI5#hx8|q+-1oh~y zZ`PSi-;grYJyo@ma=3Wp>SEBOHfOm;_ZrK@c;^@{{}h;T_7W7PdmC_bUuM)_9~7#M zIQd;C4oykl)nOIhNC8vFPz>N04YmIFMo;8MP1Q+RwMx1FT>DM7_zo}9m2EtnW*-TZ z@MT5I+UL9DQeXXQ0;szk^pzR)XG^l2uz^xvF{`Z2dzjW)3%56WFNy{H;&_fQC>ED6 zKe!8EJ{REsW_jio0q-232#QzKSsyjQ#oNbR$OR-_0Z`9u6NbgY!B?UvV;)MU2d2Kr z?3$`6+RConVFEpXay}hd+=t`=9?Tw5*|yWL5NtyPWs1ftsJyLxkB1;`Y=1)MV1sR9 zbFtBY*Ex4!P90gNF9~$w@F1t}0d;etxTK`&Y^z@MyY;Q2o}iV8Yb}jWzPJP5xz41T z6x#V9y%rOms%A_L)w~bDhxG0CN~!cf@hP7|AGWdT)hh$>_~ScIN;!a5;>Su}E);`Q z1kirsG&u7+Gtv}1bx^+VsL8!#X2MB`Rf-+(b$}Rytd(K(PV>E3y$a@nUHQ%M*MtCm zmK|n)oa~vsVvjb#S5x^%YcOtfsLqGItS#>71$@YXaGG~rjLNmVadI}q*Z|01?H9b} z42T8M>M%2(Kz-bd$P^)LWX$!rP{%5mPB|#GA_M$UUa%cAO=DS+YIRYN8-OMI!+ORN z7cuMd6gCbaZyvsINn`_lJ5|qS{BAd(Yo9x>D`49=h(->P+hyD;%>0R?dEsenD76gj z8{dbZIK}a-5wq#+hYf}g)91dVofHirl5)JFk+`?XETX}UQjTxM@B6OBYCP0 z@wMB9;-tGNP6ZkToxO`7$a;|6BRPKsz?l@&S`nF!ls57tcbo38@J&baJSFZEZypgC zt&LAIGBRZKx<}jsoki_@r8!WB5Ewkf>_Pa-S!0~#yb{;BU@OQnwOhDP?F*oyc&?c? zP8u2ZXEmxGqm2=+K~MlIW9Um-S(qd$`L$ePp;P75V!h~9nmGGy+;gpFCxRg<|7MZy z+!|Zdns;R}HVVyj+U=mQc{r(lOm0m4hhNRblp0QCx+!k@5nKYq<4S=T=Gq0CLvOKHNknZ(T0}$lkuYI- z03{EwCMi?9KUqx%Uh|fbibxs5GMN^w#+dWj3LaL--T|Wi)8NSErv4PAp>+o52$p|V z^BF;t?Ku7XkZQ=squsb(k#Uo_cvDuPX@FBeR64%i{ALN8MrF>38}w;(9@ zmS*HCh#22enc7gW$!XJ_1SlCYFO+JiaguFV#ozp`oj z(a@4e|4>dqTs!ciX@DZVPgrz%#!60=;!kgWCY8fQAT1`nQ_5>Nas&mhi+Nukp^T+5 z>vpr9HRQg&-ODS3!Q=pga-|%Pptx8tzFoKN83|BZVR3@6R=)1}%kc!=8hzyK7@1;9 zc2;xdCx%O+Z9*ssT>*z=Xu=)oyR8X9J}o_qA&1GWvn@3vvW_GZ-zCM&P&oSa`c{+r zW5MeH^)R~n3?)YP>_@Pptv5u)aBNAjmeIw6>Gem~avZD|K;-7eZF0wKz?WGyymh zFiGsg0>88M{uFI0jkux?U0zy`pg73u%vujPeH-9hb(l86v6YtDqK6ApqvHnNK@b~w zuh`VOQi3LKf`^oTwoM&p96x<%wJ= z@+|Zw<^a%MIVc)kNdL>nhipr}KEz3>s3!P!k5)89mGKe;>c<9L_CA+dBfy!SIb0UC zY8se(YDsxxTzZFP{k*{hBbM5*^sYmt)n|9Td4!hSSJ`?8_4O5bR)LHxe{}7(T?*7e z-H)qoZUxZTK92u201hY?^9)z{5K!zsR*B88BZg`{7ghYr5JQ2eY&H>@S4|b>B-kSf zqt)|*I;2Ry`O2Dg`Mtn}1Fs)F%W*#@4k})JvChN-;07xL=E|yA zuRAQ684x*=Kqee^%{sVmn?vMXHyiGg*+8BRswVEzo5IPtGkaF0x5z# z;8OycApXleMCmc8dijqey3y}V3Q?IhfNr{`p^Ym*#prpvU$A1;v)%r&y#0vTmQ1u5 z@RjXqDK%}4J|BH!Aus_aSV>vrB7d*}>>-2{UCfM`%?S{ngNT0pk%axDa2=tYgchmL*=zAc1U^iY~;okx< zsjYBphFR{`185UxTLtk{NrG=M6dzt3HlQBAP^^!sob7CbliW8q|FN<-Y$l~L10h(l z(fO&o_dKuK7p@$};N?u^ofvsFB2qOvWv9WzOLqtT?GNv=r70FIhFDx!qDqAJjDzEC>e+>~lP}yR%+LNL}CYE<9#Ixc^ zFD1RPH8v`@rO_htg-9tar^}-`0S|#xO>|#TOzp-muT-hTnNY1e$Zn$f%OTK-@Vuuq z3JJ4dLs=t=K9L5PY2ZlWfAFim0MYaT=NQ7k1q~=XScGwCC}T~>RZs*x;;fBt|6IB< zOX=8u=6MbjQ;c!bg2egmR!}r^H#;6=?EiN3WDv7q ztWxH5hFTp~Mbyr|CZyY8yhYArAF#H=1NDx0#R|6?)w`4I7=sS&%u4s3v$WE^q7t(K zAxxddTB7CNu_WM{(;Ro|F{wB4qh0i#s-w!Rgjt_T7bBDp?>t z4^Yaur7QJT!QxKWYl>SR;X?ZT0nEt=WdPtPuDL?H$qri6Nkpmkyy4&`#05M&CKB ziEQ5(O=|pd3!ZR$n}bEr!P#egtnR7`6z2gz8Ew$2GgWdf{B;+d@9m4`KhuvMeA_Ap zfb%ZdS$ohe^FUh(m64-Zme|$4YcGM%IHZQ)Fr2?>{BuX^o_PcZ87Q+AL^xDHfI2o7 zK^@zx#Jgj~^$=Tk_Zv%5iCJzAClJ3K7}9&TF0tKqmvRGWA^FAEE8Av@Ht#UU@oc?g zcz*e}d|fxq9@R@l(}oM)D>pN;5g3;>q$U6i7`qYCYTL#Xz(vkY8jG1nJFn)Mp zD7$`_;V&Ra?I*O{^4i*5__mCGU0lNvz6LdR*LoTX$`=~o7h@usqjKPsi4Q=nlq&y5 z%iCubZj6DNO~PrQ+z~q27Y6piIX3KlpA0EhFKX=wlYi(3@Bl!p|62FWf9nVNS6g@f zgM&*Eha&Om=T~{4n+V@1$6tygbzaa^P7?nmhiz6K3D?m@`vaExUBy*A@H`r=u_c^M#I2Uu!D9-Zz$6U(?jW*83JI1lO+hAxqufdpHZvYApFc>i_Fh~-oslv15uxI5; zm0FuKr)t2zC#TMc6P?*KR8_fD?(1QCSo$^^f@C7rdagq%GvkN`tTO5$*q#aM825Fgrnr1RBWkKeII!P zy89dxUjRyRFxc7mA6LPC`}2#uzy0+k-d|tf{jc3zG$0z-Ot*6Ozn1~xu=`Kt|2XsO F{{zP_KF9z7 literal 12643 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 I_@!U}6Vnj=vH$=8 From c8bc6a63d44dd2582c7d462b45f9a058e48585ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Tue, 18 Jun 2024 16:48:50 +0200 Subject: [PATCH 15/49] fix: Bump migration number --- posthog/migrations/0426_batchexport_model.py | 24 -------------------- 1 file changed, 24 deletions(-) delete mode 100644 posthog/migrations/0426_batchexport_model.py diff --git a/posthog/migrations/0426_batchexport_model.py b/posthog/migrations/0426_batchexport_model.py deleted file mode 100644 index 37cee94f5ab43..0000000000000 --- a/posthog/migrations/0426_batchexport_model.py +++ /dev/null @@ -1,24 +0,0 @@ -# Generated by Django 4.2.11 on 2024-06-12 14:43 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("posthog", "0425_hogfunction"), - ] - - operations = [ - migrations.AddField( - model_name="batchexport", - name="model", - field=models.CharField( - blank=True, - choices=[("events", "Events"), ("persons", "Persons")], - default="events", - help_text="Which model this BatchExport is exporting.", - max_length=64, - null=True, - ), - ), - ] From fae1b5915f3b681d8043203c0ac66ced767a9a03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Tue, 18 Jun 2024 16:48:50 +0200 Subject: [PATCH 16/49] fix: Bump migration number --- 0430_batchexport_model.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 0430_batchexport_model.py diff --git a/0430_batchexport_model.py b/0430_batchexport_model.py new file mode 100644 index 0000000000000..7f8722ade25ce --- /dev/null +++ b/0430_batchexport_model.py @@ -0,0 +1,24 @@ +# Generated by Django 4.2.11 on 2024-06-12 14:43 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("posthog", "0429_alter_datawarehousetable_format"), + ] + + operations = [ + migrations.AddField( + model_name="batchexport", + name="model", + field=models.CharField( + blank=True, + choices=[("events", "Events"), ("persons", "Persons")], + default="events", + help_text="Which model this BatchExport is exporting.", + max_length=64, + null=True, + ), + ), + ] From 85f50945464fd37f282f5a0cc6fbeb6ee13ce854 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Fri, 7 Jun 2024 15:46:27 +0200 Subject: [PATCH 17/49] refactor: Update metrics to fetch counts at request time --- posthog/api/app_metrics.py | 1 + 1 file changed, 1 insertion(+) diff --git a/posthog/api/app_metrics.py b/posthog/api/app_metrics.py index 3a0855b9939e5..46332d4196720 100644 --- a/posthog/api/app_metrics.py +++ b/posthog/api/app_metrics.py @@ -8,6 +8,7 @@ from rest_framework.decorators import action from posthog.api.routing import TeamAndOrgViewSetMixin +from posthog.batch_exports.models import fetch_batch_export_run_count from posthog.models import BatchExportRun from posthog.models.plugin import PluginConfig from posthog.queries.app_metrics.app_metrics import ( From b2382e2e237b593b0ea3419f934c10405ac2a036 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Wed, 12 Jun 2024 11:33:45 +0200 Subject: [PATCH 18/49] fix: Actually use include and exclude events --- posthog/api/test/test_app_metrics.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/posthog/api/test/test_app_metrics.py b/posthog/api/test/test_app_metrics.py index a6c154bea5062..fe5e3f283641c 100644 --- a/posthog/api/test/test_app_metrics.py +++ b/posthog/api/test/test_app_metrics.py @@ -152,6 +152,10 @@ def test_retrieve_batch_export_runs_app_metrics(self): for _ in range(3): insert_event(team_id=self.team.pk, timestamp=last_updated_at - dt.timedelta(minutes=1)) + insert_event( + team_id=self.team.pk, timestamp=last_updated_at - dt.timedelta(minutes=1), event="not-included" + ) + BatchExportRun.objects.create( batch_export_id=batch_export_id, data_interval_end=last_updated_at - dt.timedelta(hours=2), @@ -236,6 +240,9 @@ def test_retrieve_batch_export_runs_app_metrics_defaults_to_zero(self): status=BatchExportRun.Status.COMPLETED, ) insert_event(team_id=self.team.pk, timestamp=last_updated_at - dt.timedelta(minutes=1)) + insert_event( + team_id=self.team.pk, timestamp=last_updated_at - dt.timedelta(minutes=1), event="exclude-me" + ) response = self.client.get(f"/api/projects/@current/app_metrics/{batch_export_id}?date_from=-7d") self.assertEqual(response.status_code, status.HTTP_200_OK) From bc6dd4e6ac89f134d6c05498697d927521e318c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Wed, 12 Jun 2024 12:42:10 +0200 Subject: [PATCH 19/49] refactor: Switch to counting runs --- posthog/api/app_metrics.py | 1 - posthog/api/test/test_app_metrics.py | 4 --- posthog/batch_exports/models.py | 40 ---------------------------- 3 files changed, 45 deletions(-) diff --git a/posthog/api/app_metrics.py b/posthog/api/app_metrics.py index 46332d4196720..2cebd8460310c 100644 --- a/posthog/api/app_metrics.py +++ b/posthog/api/app_metrics.py @@ -25,7 +25,6 @@ AppMetricsRequestSerializer, ) from posthog.utils import relative_date_parse -from posthog.batch_exports.models import fetch_batch_export_run_count class AppMetricsViewSet(TeamAndOrgViewSetMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet): diff --git a/posthog/api/test/test_app_metrics.py b/posthog/api/test/test_app_metrics.py index fe5e3f283641c..111f8ec508c2e 100644 --- a/posthog/api/test/test_app_metrics.py +++ b/posthog/api/test/test_app_metrics.py @@ -239,10 +239,6 @@ def test_retrieve_batch_export_runs_app_metrics_defaults_to_zero(self): data_interval_start=last_updated_at - dt.timedelta(hours=1), status=BatchExportRun.Status.COMPLETED, ) - insert_event(team_id=self.team.pk, timestamp=last_updated_at - dt.timedelta(minutes=1)) - insert_event( - team_id=self.team.pk, timestamp=last_updated_at - dt.timedelta(minutes=1), event="exclude-me" - ) response = self.client.get(f"/api/projects/@current/app_metrics/{batch_export_id}?date_from=-7d") self.assertEqual(response.status_code, status.HTTP_200_OK) diff --git a/posthog/batch_exports/models.py b/posthog/batch_exports/models.py index 598b6cdbacee5..e663e3f111291 100644 --- a/posthog/batch_exports/models.py +++ b/posthog/batch_exports/models.py @@ -1,4 +1,3 @@ -import collections.abc import dataclasses import datetime as dt import enum @@ -117,45 +116,6 @@ class Status(models.TextChoices): ) -def fetch_batch_export_run_count( - *, - team_id: int, - data_interval_start: dt.datetime, - data_interval_end: dt.datetime, - exclude_events: collections.abc.Iterable[str] | None = None, - include_events: collections.abc.Iterable[str] | None = None, -) -> int: - """Fetch a list of batch export log entries from ClickHouse.""" - if exclude_events: - exclude_events_statement = f"AND event NOT IN ({','.join(exclude_events)})" - else: - exclude_events_statement = "" - - if include_events: - include_events_statement = f"AND event IN ({','.join(include_events)})" - else: - include_events_statement = "" - - data_interval_start_ch = data_interval_start.strftime("%Y-%m-%d %H:%M:%S") - data_interval_end_ch = data_interval_end.strftime("%Y-%m-%d %H:%M:%S") - - clickhouse_query = f""" - SELECT count(*) - FROM events - WHERE - team_id = {team_id} - AND timestamp >= toDateTime64('{data_interval_start_ch}', 6, 'UTC') - AND timestamp < toDateTime64('{data_interval_end_ch}', 6, 'UTC') - {exclude_events_statement} - {include_events_statement} - """ - - try: - return sync_execute(clickhouse_query)[0][0] - except Exception: - return 0 - - BATCH_EXPORT_INTERVALS = [ ("hour", "hour"), ("day", "day"), From ce7d4df8641c6dd81d71ffe19ba8aa06437f6d5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Tue, 18 Jun 2024 16:41:18 +0200 Subject: [PATCH 20/49] refactor: Support batch export models as views --- posthog/batch_exports/sql.py | 131 +++++++++++++++ .../0064_create_person_batch_export_view.py | 17 ++ posthog/conftest.py | 8 +- .../temporal/batch_exports/batch_exports.py | 156 +++++++++++++----- .../batch_exports/bigquery_batch_export.py | 11 +- .../batch_exports/http_batch_export.py | 12 +- .../batch_exports/postgres_batch_export.py | 13 +- .../batch_exports/redshift_batch_export.py | 28 ++-- .../temporal/batch_exports/s3_batch_export.py | 21 ++- .../batch_exports/snowflake_batch_export.py | 21 +-- posthog/temporal/batch_exports/utils.py | 33 ++++ posthog/temporal/common/asyncpa.py | 129 +++++++++++++++ posthog/temporal/common/clickhouse.py | 19 +++ .../temporal/tests/batch_exports/conftest.py | 34 +++- .../test_bigquery_batch_export_workflow.py | 1 - .../test_postgres_batch_export_workflow.py | 3 +- .../test_redshift_batch_export_workflow.py | 2 +- .../test_s3_batch_export_workflow.py | 52 +++--- .../test_snowflake_batch_export_workflow.py | 25 ++- posthog/temporal/tests/utils/events.py | 4 +- 20 files changed, 593 insertions(+), 127 deletions(-) create mode 100644 posthog/batch_exports/sql.py create mode 100644 posthog/clickhouse/migrations/0064_create_person_batch_export_view.py create mode 100644 posthog/temporal/common/asyncpa.py diff --git a/posthog/batch_exports/sql.py b/posthog/batch_exports/sql.py new file mode 100644 index 0000000000000..4e5c5318ff576 --- /dev/null +++ b/posthog/batch_exports/sql.py @@ -0,0 +1,131 @@ +CREATE_PERSONS_BATCH_EXPORT_VIEW = """ +CREATE OR REPLACE VIEW persons_batch_export AS ( + SELECT + pd.team_id, + pd.distinct_id, + p.properties, + pd._timestamp AS _timestamp, + NOW64() AS _inserted_at + FROM ( + SELECT + team_id, + distinct_id, + argMax(person_id, version) AS person_id, + max(_timestamp) AS _timestamp + FROM + person_distinct_id2 + WHERE + team_id = {team_id:Int64} + GROUP BY + team_id, + distinct_id + ) AS pd + INNER JOIN + person p ON p.id = pd.person_id AND p.team_id = pd.team_id + WHERE + pd.team_id = {team_id:Int64} + AND p.team_id = {team_id:Int64} + AND pd._timestamp >= {interval_start:DateTime64} + AND pd._timestamp < {interval_end:DateTime64} +) +""" + +CREATE_EVENTS_BATCH_EXPORT_VIEW = """ +CREATE OR REPLACE VIEW events_batch_export AS ( + SELECT + team_id AS team_id, + min(timestamp) AS timestamp, + event AS event, + any(distinct_id) AS distinct_id, + any(toString(uuid)) AS uuid, + min(COALESCE(inserted_at, _timestamp)) AS _inserted_at, + any(created_at) AS created_at, + any(elements_chain) AS elements_chain, + any(toString(person_id)) AS person_id, + any(nullIf(properties, '')) AS properties, + any(nullIf(person_properties, '')) AS person_properties, + nullIf(JSONExtractString(properties, '$set'), '') AS set, + nullIf(JSONExtractString(properties, '$set_once'), '') AS set_once + FROM + events + PREWHERE + COALESCE(events.inserted_at, events._timestamp) >= {interval_start:DateTime64} + AND COALESCE(events.inserted_at, events._timestamp) < {interval_end:DateTime64} + WHERE + team_id = {team_id:Int64} + AND events.timestamp >= {interval_start:DateTime64} - INTERVAL {lookback_days:Int32} DAY + AND events.timestamp < {interval_end:DateTime64} + INTERVAL 1 DAY + AND (length({include_events:Array(String)}) = 0 OR event IN {include_events:Array(String)}) + AND (length({exclude_events:Array(String)}) = 0 OR event NOT IN {exclude_events:Array(String)}) + GROUP BY + team_id, toDate(events.timestamp), event, cityHash64(events.distinct_id), cityHash64(events.uuid) + ORDER BY + _inserted_at, event + SETTINGS optimize_aggregation_in_order=1 +) +""" + +CREATE_EVENTS_BATCH_EXPORT_VIEW_UNBOUNDED = """ +CREATE OR REPLACE VIEW events_batch_export_unbounded AS ( + SELECT + team_id AS team_id, + min(timestamp) AS timestamp, + event AS event, + any(distinct_id) AS distinct_id, + any(toString(uuid)) AS uuid, + min(COALESCE(inserted_at, _timestamp)) AS _inserted_at, + any(created_at) AS created_at, + any(elements_chain) AS elements_chain, + any(toString(person_id)) AS person_id, + any(nullIf(properties, '')) AS properties, + any(nullIf(person_properties, '')) AS person_properties, + nullIf(JSONExtractString(properties, '$set'), '') AS set, + nullIf(JSONExtractString(properties, '$set_once'), '') AS set_once + FROM + events + PREWHERE + COALESCE(events.inserted_at, events._timestamp) >= {interval_start:DateTime64} + AND COALESCE(events.inserted_at, events._timestamp) < {interval_end:DateTime64} + WHERE + team_id = {team_id:Int64} + AND (length({include_events:Array(String)}) = 0 OR event IN {include_events:Array(String)}) + AND (length({exclude_events:Array(String)}) = 0 OR event NOT IN {exclude_events:Array(String)}) + GROUP BY + team_id, toDate(events.timestamp), event, cityHash64(events.distinct_id), cityHash64(events.uuid) + ORDER BY + _inserted_at, event + SETTINGS optimize_aggregation_in_order=1 +) +""" + +CREATE_EVENTS_BATCH_EXPORT_VIEW_BACKFILL = """ +CREATE OR REPLACE VIEW events_batch_export_backfill AS ( + SELECT + team_id AS team_id, + min(timestamp) AS timestamp, + event AS event, + any(distinct_id) AS distinct_id, + any(toString(uuid)) AS uuid, + min(COALESCE(inserted_at, _timestamp)) AS _inserted_at, + any(created_at) AS created_at, + any(elements_chain) AS elements_chain, + any(toString(person_id)) AS person_id, + any(nullIf(properties, '')) AS properties, + any(nullIf(person_properties, '')) AS person_properties, + nullIf(JSONExtractString(properties, '$set'), '') AS set, + nullIf(JSONExtractString(properties, '$set_once'), '') AS set_once + FROM + events + WHERE + team_id = {team_id:Int64} + AND events.timestamp >= {interval_start:DateTime64} + AND events.timestamp < {interval_end:DateTime64} + AND (length({include_events:Array(String)}) = 0 OR event IN {include_events:Array(String)}) + AND (length({exclude_events:Array(String)}) = 0 OR event NOT IN {exclude_events:Array(String)}) + GROUP BY + team_id, toDate(events.timestamp), event, cityHash64(events.distinct_id), cityHash64(events.uuid) + ORDER BY + _inserted_at, event + SETTINGS optimize_aggregation_in_order=1 +) +""" diff --git a/posthog/clickhouse/migrations/0064_create_person_batch_export_view.py b/posthog/clickhouse/migrations/0064_create_person_batch_export_view.py new file mode 100644 index 0000000000000..dd48dc355ec7e --- /dev/null +++ b/posthog/clickhouse/migrations/0064_create_person_batch_export_view.py @@ -0,0 +1,17 @@ +from posthog.batch_exports.sql import ( + CREATE_EVENTS_BATCH_EXPORT_VIEW, + CREATE_EVENTS_BATCH_EXPORT_VIEW_BACKFILL, + CREATE_EVENTS_BATCH_EXPORT_VIEW_UNBOUNDED, + CREATE_PERSONS_BATCH_EXPORT_VIEW, +) +from posthog.clickhouse.client.migration_tools import run_sql_with_exceptions + +operations = map( + run_sql_with_exceptions, + [ + CREATE_PERSONS_BATCH_EXPORT_VIEW, + CREATE_EVENTS_BATCH_EXPORT_VIEW, + CREATE_EVENTS_BATCH_EXPORT_VIEW_UNBOUNDED, + CREATE_EVENTS_BATCH_EXPORT_VIEW_BACKFILL, + ], +) diff --git a/posthog/conftest.py b/posthog/conftest.py index b771573e78582..615569bf189bf 100644 --- a/posthog/conftest.py +++ b/posthog/conftest.py @@ -12,11 +12,12 @@ def create_clickhouse_tables(num_tables: int): # Create clickhouse tables to default before running test # Mostly so that test runs locally work correctly from posthog.clickhouse.schema import ( + CREATE_DATA_QUERIES, + CREATE_DICTIONARY_QUERIES, CREATE_DISTRIBUTED_TABLE_QUERIES, + CREATE_KAFKA_TABLE_QUERIES, CREATE_MERGETREE_TABLE_QUERIES, CREATE_MV_TABLE_QUERIES, - CREATE_DATA_QUERIES, - CREATE_DICTIONARY_QUERIES, CREATE_VIEW_QUERIES, build_query, ) @@ -31,6 +32,9 @@ def create_clickhouse_tables(num_tables: int): table_queries = list(map(build_query, CREATE_TABLE_QUERIES)) run_clickhouse_statement_in_parallel(table_queries) + kafka_queries = list(map(build_query, CREATE_KAFKA_TABLE_QUERIES)) + run_clickhouse_statement_in_parallel(kafka_queries) + mv_queries = list(map(build_query, CREATE_MV_TABLE_QUERIES)) run_clickhouse_statement_in_parallel(mv_queries) diff --git a/posthog/temporal/batch_exports/batch_exports.py b/posthog/temporal/batch_exports/batch_exports.py index 1de6b551981ed..02e0a79d23008 100644 --- a/posthog/temporal/batch_exports/batch_exports.py +++ b/posthog/temporal/batch_exports/batch_exports.py @@ -33,7 +33,6 @@ SELECT_QUERY_TEMPLATE = Template( """ SELECT - $distinct $fields FROM events WHERE @@ -43,6 +42,7 @@ $timestamp $exclude_events $include_events + $group_by $order_by $format """ @@ -138,17 +138,17 @@ async def get_rows_count( def default_fields() -> list[BatchExportField]: """Return list of default batch export Fields.""" return [ - BatchExportField(expression="toString(uuid)", alias="uuid"), + BatchExportField(expression="uuid", alias="uuid"), BatchExportField(expression="team_id", alias="team_id"), BatchExportField(expression="timestamp", alias="timestamp"), - BatchExportField(expression="COALESCE(inserted_at, _timestamp)", alias="_inserted_at"), + BatchExportField(expression="_inserted_at", alias="_inserted_at"), BatchExportField(expression="created_at", alias="created_at"), BatchExportField(expression="event", alias="event"), - BatchExportField(expression="nullIf(properties, '')", alias="properties"), - BatchExportField(expression="toString(distinct_id)", alias="distinct_id"), - BatchExportField(expression="nullIf(JSONExtractString(properties, '$set'), '')", alias="set"), + BatchExportField(expression="properties", alias="properties"), + BatchExportField(expression="distinct_id", alias="distinct_id"), + BatchExportField(expression="set", alias="set"), BatchExportField( - expression="nullIf(JSONExtractString(properties, '$set_once'), '')", + expression="set_once", alias="set_once", ), ] @@ -157,9 +157,78 @@ def default_fields() -> list[BatchExportField]: BytesGenerator = collections.abc.Generator[bytes, None, None] RecordsGenerator = collections.abc.Generator[pa.RecordBatch, None, None] -# Spoiler: We'll use these ones later 8) -# AsyncBytesGenerator = collections.abc.AsyncGenerator[bytes, None] -# AsyncRecordsGenerator = collections.abc.AsyncGenerator[pa.RecordBatch, None] +AsyncBytesGenerator = collections.abc.AsyncGenerator[bytes, None] +AsyncRecordsGenerator = collections.abc.AsyncGenerator[pa.RecordBatch, None] + +SELECT_FROM_PERSONS_VIEW = """ +SELECT * +FROM + persons_batch_export( + team_id={team_id}, + interval_start={interval_start}, + interval_end={interval_end} + ) +FORMAT ArrowStream +""" + +SELECT_FROM_EVENTS_VIEW = Template(""" +SELECT + $fields +FROM + events_batch_export( + team_id={team_id}, + lookback_days={lookback_days}, + interval_start={interval_start}, + interval_end={interval_end}, + include_events={include_events}::Array(String), + exclude_events={exclude_events}::Array(String) + ) +FORMAT ArrowStream +""") + +SELECT_FROM_EVENTS_VIEW_UNBOUNDED = Template(""" +SELECT + $fields +FROM + events_batch_export_unbounded( + team_id={team_id}, + lookback_days={lookback_days}, + interval_start={interval_start}, + interval_end={interval_end}, + include_events={include_events}::Array(String), + exclude_events={exclude_events}::Array(String) + ) +FORMAT ArrowStream +""") + +SELECT_FROM_EVENTS_VIEW_BACKFILL = Template(""" +SELECT + $fields +FROM + events_batch_export_backfill( + team_id={team_id}, + interval_start={interval_start}, + interval_end={interval_end}, + include_events={include_events}::Array(String), + exclude_events={exclude_events}::Array(String) + ) +FORMAT ArrowStream +""") + +DEFAULT_MODELS = {"events", "persons"} + + +async def iter_model_records( + client: ClickHouseClient, model: str, team_id: int, is_backfill: bool, **parameters +) -> AsyncRecordsGenerator: + if model in DEFAULT_MODELS: + async for record in iter_records_from_model_view( + client=client, model=model, team_id=team_id, is_backfill=is_backfill, **parameters + ): + yield record + else: + for record in iter_records(client, team_id=team_id, is_backfill=is_backfill, **parameters): + yield record def iter_records( @@ -193,48 +262,42 @@ def iter_records( data_interval_end_ch = dt.datetime.fromisoformat(interval_end).strftime("%Y-%m-%d %H:%M:%S") if exclude_events: - exclude_events_statement = "AND event NOT IN {exclude_events}" - events_to_exclude_tuple = tuple(exclude_events) + events_to_exclude_array = list(exclude_events) else: - exclude_events_statement = "" - events_to_exclude_tuple = () + events_to_exclude_array = [] if include_events: - include_events_statement = "AND event IN {include_events}" - events_to_include_tuple = tuple(include_events) + events_to_include_array = list(include_events) else: - include_events_statement = "" - events_to_include_tuple = () - - timestamp_field = get_timestamp_field(is_backfill) - timestamp_predicates = get_timestamp_predicates_for_team(team_id, is_backfill) + events_to_include_array = [] if fields is None: query_fields = ",".join(f"{field['expression']} AS {field['alias']}" for field in default_fields()) else: if "_inserted_at" not in [field["alias"] for field in fields]: - control_fields = [BatchExportField(expression="COALESCE(inserted_at, _timestamp)", alias="_inserted_at")] + control_fields = [BatchExportField(expression="_inserted_at", alias="_inserted_at")] else: control_fields = [] query_fields = ",".join(f"{field['expression']} AS {field['alias']}" for field in fields + control_fields) - query = SELECT_QUERY_TEMPLATE.substitute( - fields=query_fields, - order_by="ORDER BY COALESCE(inserted_at, _timestamp)", - format="FORMAT ArrowStream", - distinct="DISTINCT ON (event, cityHash64(distinct_id), cityHash64(uuid))", - timestamp_field=timestamp_field, - timestamp=timestamp_predicates, - exclude_events=exclude_events_statement, - include_events=include_events_statement, - ) + lookback_days = 4 + if str(team_id) in settings.UNCONSTRAINED_TIMESTAMP_TEAM_IDS: + query = SELECT_FROM_EVENTS_VIEW_UNBOUNDED + elif is_backfill: + query = SELECT_FROM_EVENTS_VIEW_BACKFILL + else: + query = SELECT_FROM_EVENTS_VIEW + lookback_days = settings.OVERRIDE_TIMESTAMP_TEAM_IDS.get(team_id, settings.DEFAULT_TIMESTAMP_LOOKBACK_DAYS) + + query_str = query.substitute(fields=query_fields) base_query_parameters = { "team_id": team_id, - "data_interval_start": data_interval_start_ch, - "data_interval_end": data_interval_end_ch, - "exclude_events": events_to_exclude_tuple, - "include_events": events_to_include_tuple, + "interval_start": data_interval_start_ch, + "interval_end": data_interval_end_ch, + "exclude_events": events_to_exclude_array, + "include_events": events_to_include_array, + "lookback_days": lookback_days, } if extra_query_parameters is not None: @@ -242,7 +305,26 @@ def iter_records( else: query_parameters = base_query_parameters - yield from client.stream_query_as_arrow(query, query_parameters=query_parameters) + yield from client.stream_query_as_arrow(query_str, query_parameters=query_parameters) + + +async def iter_records_from_model_view( + client: ClickHouseClient, model: str, is_backfill: bool, team_id: int, **parameters +) -> AsyncRecordsGenerator: + if model == "persons": + view = SELECT_FROM_PERSONS_VIEW + else: + # TODO: Let this model be exported by `astream_query_as_arrow`. + # Just to reduce risk, I don't want to change the function that runs 100% of the exports + # without battle testing it first. + # There are already changes going out to the queries themselves that will impact events in a + # positive way. So, we can come back later and drop this block. + for record_batch in iter_records(client, team_id=team_id, is_backfill=is_backfill, **parameters): + yield record_batch + return + + async for record_batch in client.astream_query_as_arrow(view, query_parameters=parameters): + yield record_batch def get_data_interval(interval: str, data_interval_end: str | None) -> tuple[dt.datetime, dt.datetime]: diff --git a/posthog/temporal/batch_exports/bigquery_batch_export.py b/posthog/temporal/batch_exports/bigquery_batch_export.py index 9190d736a724c..85385b1c80108 100644 --- a/posthog/temporal/batch_exports/bigquery_batch_export.py +++ b/posthog/temporal/batch_exports/bigquery_batch_export.py @@ -25,7 +25,7 @@ default_fields, execute_batch_export_insert_activity, get_data_interval, - iter_records, + iter_model_records, start_batch_export_run, ) from posthog.temporal.batch_exports.metrics import ( @@ -35,7 +35,7 @@ from posthog.temporal.batch_exports.temporary_file import ( BatchExportTemporaryFile, ) -from posthog.temporal.batch_exports.utils import peek_first_and_rewind, try_set_batch_export_run_to_running +from posthog.temporal.batch_exports.utils import apeek_first_and_rewind, try_set_batch_export_run_to_running from posthog.temporal.common.clickhouse import get_client from posthog.temporal.common.heartbeat import Heartbeater from posthog.temporal.common.logger import bind_temporal_worker_logger @@ -238,8 +238,9 @@ async def insert_into_bigquery_activity(inputs: BigQueryInsertInputs) -> Records fields = inputs.batch_export_schema["fields"] query_parameters = inputs.batch_export_schema["values"] - records_iterator = iter_records( + records_iterator = iter_model_records( client=client, + model="events", team_id=inputs.team_id, interval_start=data_interval_start, interval_end=inputs.data_interval_end, @@ -250,7 +251,7 @@ async def insert_into_bigquery_activity(inputs: BigQueryInsertInputs) -> Records is_backfill=inputs.is_backfill, ) - first_record_batch, records_iterator = peek_first_and_rewind(records_iterator) + first_record_batch, records_iterator = await apeek_first_and_rewind(records_iterator) if first_record_batch is None: return 0 @@ -314,7 +315,7 @@ async def flush_to_bigquery(bigquery_table, table_schema): # Columns need to be sorted according to BigQuery schema. record_columns = [field.name for field in schema] + ["_inserted_at"] - for record_batch in records_iterator: + async for record_batch in records_iterator: for record in record_batch.select(record_columns).to_pylist(): inserted_at = record.pop("_inserted_at") diff --git a/posthog/temporal/batch_exports/http_batch_export.py b/posthog/temporal/batch_exports/http_batch_export.py index 92ff0e9d58792..c6bf02610ec56 100644 --- a/posthog/temporal/batch_exports/http_batch_export.py +++ b/posthog/temporal/batch_exports/http_batch_export.py @@ -64,13 +64,13 @@ def raise_for_status(response: aiohttp.ClientResponse): def http_default_fields() -> list[BatchExportField]: """Return default fields used in HTTP batch export, currently supporting only migrations.""" return [ - BatchExportField(expression="toString(uuid)", alias="uuid"), - BatchExportField(expression="timestamp", alias="timestamp"), - BatchExportField(expression="COALESCE(inserted_at, _timestamp)", alias="_inserted_at"), + BatchExportField(expression="any(toString(uuid))", alias="uuid"), + BatchExportField(expression="any(timestamp)", alias="timestamp"), + BatchExportField(expression="any(COALESCE(inserted_at, _timestamp))", alias="_inserted_at"), BatchExportField(expression="event", alias="event"), - BatchExportField(expression="nullIf(properties, '')", alias="properties"), - BatchExportField(expression="toString(distinct_id)", alias="distinct_id"), - BatchExportField(expression="elements_chain", alias="elements_chain"), + BatchExportField(expression="any(nullIf(properties, ''))", alias="properties"), + BatchExportField(expression="any(toString(distinct_id))", alias="distinct_id"), + BatchExportField(expression="any(elements_chain)", alias="elements_chain"), ] diff --git a/posthog/temporal/batch_exports/postgres_batch_export.py b/posthog/temporal/batch_exports/postgres_batch_export.py index 4408bb83b863f..54eb667062fbc 100644 --- a/posthog/temporal/batch_exports/postgres_batch_export.py +++ b/posthog/temporal/batch_exports/postgres_batch_export.py @@ -27,7 +27,7 @@ default_fields, execute_batch_export_insert_activity, get_data_interval, - iter_records, + iter_model_records, start_batch_export_run, ) from posthog.temporal.batch_exports.metrics import ( @@ -37,7 +37,7 @@ from posthog.temporal.batch_exports.temporary_file import ( BatchExportTemporaryFile, ) -from posthog.temporal.batch_exports.utils import peek_first_and_rewind, try_set_batch_export_run_to_running +from posthog.temporal.batch_exports.utils import apeek_first_and_rewind, try_set_batch_export_run_to_running from posthog.temporal.common.clickhouse import get_client from posthog.temporal.common.heartbeat import Heartbeater from posthog.temporal.common.logger import bind_temporal_worker_logger @@ -159,7 +159,7 @@ def postgres_default_fields() -> list[BatchExportField]: ) # Fields kept or removed for backwards compatibility with legacy apps schema. batch_export_fields.append({"expression": "toJSONString(elements_chain)", "alias": "elements"}) - batch_export_fields.append({"expression": "nullIf('', '')", "alias": "site_url"}) + batch_export_fields.append({"expression": "Null::Nullable(String)", "alias": "site_url"}) batch_export_fields.pop(batch_export_fields.index({"expression": "created_at", "alias": "created_at"})) # Team ID is (for historical reasons) an INTEGER (4 bytes) in PostgreSQL, but in ClickHouse is stored as Int64. # We can't encode it as an Int64, as this includes 4 extra bytes, and PostgreSQL will reject the data with a @@ -270,8 +270,9 @@ async def insert_into_postgres_activity(inputs: PostgresInsertInputs) -> Records fields = inputs.batch_export_schema["fields"] query_parameters = inputs.batch_export_schema["values"] - record_iterator = iter_records( + record_iterator = iter_model_records( client=client, + model="events", team_id=inputs.team_id, interval_start=inputs.data_interval_start, interval_end=inputs.data_interval_end, @@ -281,7 +282,7 @@ async def insert_into_postgres_activity(inputs: PostgresInsertInputs) -> Records extra_query_parameters=query_parameters, is_backfill=inputs.is_backfill, ) - first_record_batch, record_iterator = peek_first_and_rewind(record_iterator) + first_record_batch, record_iterator = await apeek_first_and_rewind(record_iterator) if first_record_batch is None: return 0 @@ -339,7 +340,7 @@ async def flush_to_postgres(): rows_exported.add(pg_file.records_since_last_reset) bytes_exported.add(pg_file.bytes_since_last_reset) - for record_batch in record_iterator: + async for record_batch in record_iterator: for result in record_batch.select(schema_columns).to_pylist(): row = result diff --git a/posthog/temporal/batch_exports/redshift_batch_export.py b/posthog/temporal/batch_exports/redshift_batch_export.py index f2467800764f2..4229c294a12f5 100644 --- a/posthog/temporal/batch_exports/redshift_batch_export.py +++ b/posthog/temporal/batch_exports/redshift_batch_export.py @@ -1,7 +1,6 @@ import collections.abc import contextlib import datetime as dt -import itertools import json import typing from dataclasses import dataclass @@ -22,7 +21,7 @@ default_fields, execute_batch_export_insert_activity, get_data_interval, - iter_records, + iter_model_records, start_batch_export_run, ) from posthog.temporal.batch_exports.metrics import get_rows_exported_metric @@ -31,7 +30,7 @@ create_table_in_postgres, postgres_connection, ) -from posthog.temporal.batch_exports.utils import peek_first_and_rewind, try_set_batch_export_run_to_running +from posthog.temporal.batch_exports.utils import apeek_first_and_rewind, try_set_batch_export_run_to_running from posthog.temporal.common.clickhouse import get_client from posthog.temporal.common.heartbeat import Heartbeater from posthog.temporal.common.logger import bind_temporal_worker_logger @@ -167,7 +166,7 @@ def get_redshift_fields_from_record_schema( async def insert_records_to_redshift( - records: collections.abc.Iterator[dict[str, typing.Any]], + records: collections.abc.AsyncGenerator[dict[str, typing.Any]], redshift_connection: psycopg.AsyncConnection, schema: str | None, table: str, @@ -192,8 +191,11 @@ async def insert_records_to_redshift( make us go OOM or exceed Redshift's SQL statement size limit (16MB). Setting this too low can significantly affect performance due to Redshift's poor handling of INSERTs. """ - first_record = next(records) - columns = first_record.keys() + first_record_batch, records_iterator = await apeek_first_and_rewind(records) + if first_record_batch is None: + return 0 + + columns = first_record_batch.keys() if schema: table_identifier = sql.Identifier(schema, table) @@ -225,7 +227,7 @@ async def flush_to_redshift(batch): # the byte size of each batch the way things are currently written. We can revisit this # in the future if we decide it's useful enough. - for record in itertools.chain([first_record], records): + async for record in records_iterator: batch.append(cursor.mogrify(template, record).encode("utf-8")) if len(batch) < batch_size: continue @@ -313,8 +315,9 @@ async def insert_into_redshift_activity(inputs: RedshiftInsertInputs) -> Records fields = inputs.batch_export_schema["fields"] query_parameters = inputs.batch_export_schema["values"] - record_iterator = iter_records( + record_iterator = iter_model_records( client=client, + model="events", team_id=inputs.team_id, interval_start=inputs.data_interval_start, interval_end=inputs.data_interval_end, @@ -324,7 +327,7 @@ async def insert_into_redshift_activity(inputs: RedshiftInsertInputs) -> Records extra_query_parameters=query_parameters, is_backfill=inputs.is_backfill, ) - first_record_batch, record_iterator = peek_first_and_rewind(record_iterator) + first_record_batch, record_iterator = await apeek_first_and_rewind(record_iterator) if first_record_batch is None: return 0 @@ -379,9 +382,14 @@ def map_to_record(row: dict) -> dict: return record + async def record_generator() -> collections.abc.AsyncGenerator[dict[str, typing.Any]]: + async for record_batch in record_iterator: + for record in record_batch.to_pylist(): + yield map_to_record(record) + async with postgres_connection(inputs) as connection: records_completed = await insert_records_to_redshift( - (map_to_record(record) for record_batch in record_iterator for record in record_batch.to_pylist()), + record_generator(), connection, inputs.schema, inputs.table_name, diff --git a/posthog/temporal/batch_exports/s3_batch_export.py b/posthog/temporal/batch_exports/s3_batch_export.py index 43ad45257a3be..7f460cb12fa7b 100644 --- a/posthog/temporal/batch_exports/s3_batch_export.py +++ b/posthog/temporal/batch_exports/s3_batch_export.py @@ -28,7 +28,7 @@ default_fields, execute_batch_export_insert_activity, get_data_interval, - iter_records, + iter_model_records, start_batch_export_run, ) from posthog.temporal.batch_exports.metrics import ( @@ -43,7 +43,7 @@ ParquetBatchExportWriter, UnsupportedFileFormatError, ) -from posthog.temporal.batch_exports.utils import peek_first_and_rewind, try_set_batch_export_run_to_running +from posthog.temporal.batch_exports.utils import apeek_first_and_rewind, try_set_batch_export_run_to_running from posthog.temporal.common.clickhouse import get_client from posthog.temporal.common.heartbeat import Heartbeater from posthog.temporal.common.logger import bind_temporal_worker_logger @@ -407,8 +407,8 @@ def s3_default_fields() -> list[BatchExportField]: """ batch_export_fields = default_fields() batch_export_fields.append({"expression": "elements_chain", "alias": "elements_chain"}) - batch_export_fields.append({"expression": "nullIf(person_properties, '')", "alias": "person_properties"}) - batch_export_fields.append({"expression": "toString(person_id)", "alias": "person_id"}) + batch_export_fields.append({"expression": "person_properties", "alias": "person_properties"}) + batch_export_fields.append({"expression": "person_id", "alias": "person_id"}) # Again, in contrast to other destinations, and for historical reasons, we do not include these fields. not_exported_by_default = {"team_id", "set", "set_once"} @@ -452,7 +452,8 @@ async def insert_into_s3_activity(inputs: S3InsertInputs) -> RecordsCompleted: fields = inputs.batch_export_schema["fields"] query_parameters = inputs.batch_export_schema["values"] - record_iterator = iter_records( + record_iterator = iter_model_records( + model="events", client=client, team_id=inputs.team_id, interval_start=interval_start, @@ -464,10 +465,11 @@ async def insert_into_s3_activity(inputs: S3InsertInputs) -> RecordsCompleted: is_backfill=inputs.is_backfill, ) - first_record_batch, record_iterator = peek_first_and_rewind(record_iterator) + first_record_batch, record_iterator = await apeek_first_and_rewind(record_iterator) + records_completed = 0 if first_record_batch is None: - return 0 + return records_completed async with s3_upload as s3_upload: @@ -516,14 +518,15 @@ async def flush_to_s3( rows_exported = get_rows_exported_metric() bytes_exported = get_bytes_exported_metric() - for record_batch in record_iterator: + async for record_batch in record_iterator: record_batch = cast_record_batch_json_columns(record_batch) await writer.write_record_batch(record_batch) + records_completed = writer.records_total await s3_upload.complete() - return writer.records_total + return records_completed def get_batch_export_writer( diff --git a/posthog/temporal/batch_exports/snowflake_batch_export.py b/posthog/temporal/batch_exports/snowflake_batch_export.py index 73e6c23fb2f49..374248e83aff5 100644 --- a/posthog/temporal/batch_exports/snowflake_batch_export.py +++ b/posthog/temporal/batch_exports/snowflake_batch_export.py @@ -28,7 +28,7 @@ default_fields, execute_batch_export_insert_activity, get_data_interval, - iter_records, + iter_model_records, start_batch_export_run, ) from posthog.temporal.batch_exports.metrics import ( @@ -38,7 +38,7 @@ from posthog.temporal.batch_exports.temporary_file import ( BatchExportTemporaryFile, ) -from posthog.temporal.batch_exports.utils import peek_first_and_rewind, try_set_batch_export_run_to_running +from posthog.temporal.batch_exports.utils import apeek_first_and_rewind, try_set_batch_export_run_to_running from posthog.temporal.common.clickhouse import get_client from posthog.temporal.common.heartbeat import Heartbeater from posthog.temporal.common.logger import bind_temporal_worker_logger @@ -204,17 +204,11 @@ def snowflake_default_fields() -> list[BatchExportField]: batch_export_fields.pop(batch_export_fields.index({"expression": "created_at", "alias": "created_at"})) # For historical reasons, 'set' and 'set_once' are prefixed with 'people_'. - set_field = batch_export_fields.pop( - batch_export_fields.index( - BatchExportField(expression="nullIf(JSONExtractString(properties, '$set'), '')", alias="set") - ) - ) + set_field = batch_export_fields.pop(batch_export_fields.index(BatchExportField(expression="set", alias="set"))) set_field["alias"] = "people_set" set_once_field = batch_export_fields.pop( - batch_export_fields.index( - BatchExportField(expression="nullIf(JSONExtractString(properties, '$set_once'), '')", alias="set_once") - ) + batch_export_fields.index(BatchExportField(expression="set_once", alias="set_once")) ) set_once_field["alias"] = "people_set_once" @@ -462,8 +456,9 @@ async def flush_to_snowflake( fields = inputs.batch_export_schema["fields"] query_parameters = inputs.batch_export_schema["values"] - record_iterator = iter_records( + record_iterator = iter_model_records( client=client, + model="events", team_id=inputs.team_id, interval_start=data_interval_start, interval_end=inputs.data_interval_end, @@ -473,7 +468,7 @@ async def flush_to_snowflake( extra_query_parameters=query_parameters, is_backfill=inputs.is_backfill, ) - first_record_batch, record_iterator = peek_first_and_rewind(record_iterator) + first_record_batch, record_iterator = await apeek_first_and_rewind(record_iterator) if first_record_batch is None: return 0 @@ -510,7 +505,7 @@ async def flush_to_snowflake( inserted_at = None with BatchExportTemporaryFile() as local_results_file: - for record_batch in record_iterator: + async for record_batch in record_iterator: for record in record_batch.select(record_columns).to_pylist(): inserted_at = record.pop("_inserted_at") diff --git a/posthog/temporal/batch_exports/utils.py b/posthog/temporal/batch_exports/utils.py index 8a589ec378733..85b6151cb3a46 100644 --- a/posthog/temporal/batch_exports/utils.py +++ b/posthog/temporal/batch_exports/utils.py @@ -2,6 +2,7 @@ import collections.abc import typing import uuid + from posthog.batch_exports.models import BatchExportRun from posthog.batch_exports.service import update_batch_export_run @@ -38,6 +39,38 @@ def rewind_gen() -> collections.abc.Generator[T, None, None]: return (first, rewind_gen()) +async def apeek_first_and_rewind( + gen: collections.abc.AsyncGenerator[T, None], +) -> tuple[T | None, collections.abc.AsyncGenerator[T, None]]: + """Peek into the first element in a generator and rewind the advance. + + The generator is advanced and cannot be reversed, so we create a new one that first + yields the element we popped before yielding the rest of the generator. + + Returns: + A tuple with the first element of the generator and the generator itself. + """ + try: + first = await anext(gen) + except StopAsyncIteration: + first = None + + async def rewind_gen() -> collections.abc.AsyncGenerator[T, None]: + """Yield the item we popped to rewind the generator. + + Return early if the generator is empty. + """ + if first is None: + return + + yield first + + async for value in gen: + yield value + + return (first, rewind_gen()) + + async def try_set_batch_export_run_to_running(run_id: str | None, logger, timeout: float = 10.0) -> None: """Try to set a batch export run to 'RUNNING' status, but do nothing if we fail or if 'run_id' is 'None'. diff --git a/posthog/temporal/common/asyncpa.py b/posthog/temporal/common/asyncpa.py new file mode 100644 index 0000000000000..9d40c847f9d90 --- /dev/null +++ b/posthog/temporal/common/asyncpa.py @@ -0,0 +1,129 @@ +import typing + +import pyarrow as pa + +CONTINUATION_BYTES = b"\xff\xff\xff\xff" + + +class InvalidMessageFormat(Exception): + pass + + +class AsyncMessageReader: + """Asynchronously read PyArrow messages from bytes iterator.""" + + def __init__(self, bytes_iter: typing.AsyncIterator[bytes]): + self._bytes = bytes_iter + self._buffer = bytearray() + + def __aiter__(self) -> "AsyncMessageReader": + return self + + async def __anext__(self) -> pa.Message: + return await self.read_next_message() + + async def read_next_message(self) -> pa.Message: + """Read the next message as an encapsulated IPC binary message. + + See: https://arrow.apache.org/docs/format/Columnar.html#encapsulated-message-format. + """ + await self.read_until(4) + + if self._buffer[:4] != CONTINUATION_BYTES: + raise InvalidMessageFormat("Encapsulated IPC message format must begin with continuation bytes") + + await self.read_until(8) + + # Size of the metadata message + padding to 8-byte boundary. + metadata_size = int.from_bytes(self._buffer[4:8], byteorder="little") + + if not metadata_size: + raise StopAsyncIteration() + + await self.read_until(8 + metadata_size) + + metadata_flatbuffer = self._buffer[8:][:metadata_size] + + body_size = self.parse_body_size(metadata_flatbuffer) + + total_message_size = 8 + metadata_size + body_size + await self.read_until(total_message_size) + + msg = pa.ipc.read_message(memoryview(self._buffer)[:total_message_size]) + + self._buffer = self._buffer[total_message_size:] + + return msg + + async def read_until(self, n: int) -> None: + """Read from self._bytes until there are at least n bytes in self._buffer.""" + while len(self._buffer) < n: + self._buffer.extend(await anext(self._bytes)) + + def parse_body_size(self, metadata_flatbuffer: bytearray) -> int: + """Parse body size from metadata flatbuffer. + + See: https://github.com/dvidelabs/flatcc/blob/master/doc/binary-format.md#internals. + """ + # All content is little endian, and most offsets are 4 bytes. + # The first location points to root table. + root_table_location = int.from_bytes(metadata_flatbuffer[:4], byteorder="little", signed=False) + # Root table starts with a 4 byte vtable offset, it is signed. + v_table_offset = int.from_bytes(metadata_flatbuffer[root_table_location:][:4], byteorder="little", signed=True) + # Vtable is found by substracting the signed 'v_table_offset' to the location where 'v_table_offset' is stored. + # This 'v_table_offset' is stored in the root table, hence the following substraction: + v_table_location = root_table_location - v_table_offset + + # The vtable is a table of 2 byte offsets. The first entry is the vtable size in bytes. + v_table_size = int.from_bytes(metadata_flatbuffer[v_table_location:][:2], byteorder="little") + # The second entry is another 2 byte offset indicating the table size, which we are not interested in. + # We know that a Message contains the following: a version number, a header, the body size, and custom metadata. + # We are interested in parsing the body size, which comes after the first two vtable entries, the version number, and header. + # So, we skip until 10 (4 bytes for vtable entries, 2 bytes for version number, 2 bytes for header type, 2 bytes for header). + body_size_v_table_offset = 10 + + if v_table_size <= body_size_v_table_offset: + body_size = 0 + else: + body_size_offset = int.from_bytes( + metadata_flatbuffer[v_table_location + body_size_v_table_offset :][:2], byteorder="little" + ) + body_size = int.from_bytes( + metadata_flatbuffer[root_table_location + body_size_offset :][:8], byteorder="little" + ) + + return body_size + + +class AsyncRecordBatchReader: + """Asynchronously read PyArrow RecordBatches from an iterator of bytes.""" + + def __init__(self, bytes_iter: typing.AsyncIterator[bytes]) -> None: + self._reader = AsyncMessageReader(bytes_iter) + self._schema = None + + def __aiter__(self) -> "AsyncRecordBatchReader": + return self + + async def __anext__(self) -> pa.RecordBatch: + return await self.read_next_record_batch() + + async def read_next_record_batch(self) -> pa.RecordBatch: + if self._schema is None: + schema = await self.read_schema() + self._schema = schema + else: + schema = self._schema + + message = await anext(self._reader) + + return pa.ipc.read_record_batch(message, schema) + + async def read_schema(self) -> pa.Schema: + """Read the schema, which should be the first message.""" + message = await anext(self._reader) + + if message.type != "schema": + raise TypeError(f"Expected message of type 'schema' got '{message.type}'") + + return pa.ipc.read_schema(message) diff --git a/posthog/temporal/common/clickhouse.py b/posthog/temporal/common/clickhouse.py index ad8bfe8173e82..c021fc7007da4 100644 --- a/posthog/temporal/common/clickhouse.py +++ b/posthog/temporal/common/clickhouse.py @@ -10,6 +10,8 @@ import requests from django.conf import settings +from posthog.temporal.common.asyncpa import AsyncRecordBatchReader + def encode_clickhouse_data(data: typing.Any, quote_char="'") -> bytes: """Encode data for ClickHouse. @@ -357,6 +359,23 @@ def stream_query_as_arrow( with pa.ipc.open_stream(pa.PythonFile(response.raw)) as reader: yield from reader + async def astream_query_as_arrow( + self, + query, + *data, + query_parameters=None, + query_id: str | None = None, + ) -> typing.AsyncGenerator[pa.RecordBatch, None]: + """Execute the given query in ClickHouse and stream back the response as Arrow record batches. + + This method makes sense when running with FORMAT ArrowStream, although we currently do not enforce this. + As pyarrow doesn't support async/await buffers, this method is sync and utilizes requests instead of aiohttp. + """ + async with self.apost_query(query, *data, query_parameters=query_parameters, query_id=query_id) as response: + reader = AsyncRecordBatchReader(response.content.iter_any()) + async for batch in reader: + yield batch + async def __aenter__(self): """Enter method part of the AsyncContextManager protocol.""" return self diff --git a/posthog/temporal/tests/batch_exports/conftest.py b/posthog/temporal/tests/batch_exports/conftest.py index 58263066cc191..e679f72969671 100644 --- a/posthog/temporal/tests/batch_exports/conftest.py +++ b/posthog/temporal/tests/batch_exports/conftest.py @@ -3,6 +3,8 @@ import pytest_asyncio from psycopg import sql +from posthog.batch_exports.service import BatchExportModel + @pytest.fixture def interval(request) -> str: @@ -57,9 +59,22 @@ def batch_export_schema(request) -> dict | None: return None +@pytest.fixture +def batch_export_model(request) -> BatchExportModel | None: + """A parametrizable fixture to configure a batch export schema. + + By decorating a test function with @pytest.mark.parametrize("batch_export_model", ..., indirect=True) + it's possible to set the batch_export_schema that will be used to create a BatchExport. + """ + try: + return request.param + except AttributeError: + return BatchExportModel(name="events") + + @pytest_asyncio.fixture async def setup_postgres_test_db(postgres_config): - """Fixture to manage a database for Redshift export testing. + """Fixture to manage a database for Redshift and Postgres export testing. Managing a test database involves the following steps: 1. Creating a test database. @@ -123,3 +138,20 @@ async def setup_postgres_test_db(postgres_config): await cursor.execute(sql.SQL("DROP DATABASE {}").format(sql.Identifier(postgres_config["database"]))) await connection.close() + + +@pytest_asyncio.fixture(scope="module", autouse=True) +async def create_batch_export_views(clickhouse_client, django_db_setup): + from posthog.batch_exports.sql import ( + CREATE_EVENTS_BATCH_EXPORT_VIEW, + CREATE_EVENTS_BATCH_EXPORT_VIEW_BACKFILL, + CREATE_EVENTS_BATCH_EXPORT_VIEW_UNBOUNDED, + CREATE_PERSONS_BATCH_EXPORT_VIEW, + ) + + await clickhouse_client.execute_query(CREATE_EVENTS_BATCH_EXPORT_VIEW) + await clickhouse_client.execute_query(CREATE_EVENTS_BATCH_EXPORT_VIEW_BACKFILL) + await clickhouse_client.execute_query(CREATE_EVENTS_BATCH_EXPORT_VIEW_UNBOUNDED) + await clickhouse_client.execute_query(CREATE_PERSONS_BATCH_EXPORT_VIEW) + + return diff --git a/posthog/temporal/tests/batch_exports/test_bigquery_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_bigquery_batch_export_workflow.py index b74e784492556..1aaa3cba863f4 100644 --- a/posthog/temporal/tests/batch_exports/test_bigquery_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_bigquery_batch_export_workflow.py @@ -216,7 +216,6 @@ def use_json_type(request) -> bool: { "fields": [ {"expression": "event", "alias": "event"}, - {"expression": "inserted_at", "alias": "inserted_at"}, {"expression": "toInt8(1 + 1)", "alias": "two"}, ], "values": {}, diff --git a/posthog/temporal/tests/batch_exports/test_postgres_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_postgres_batch_export_workflow.py index 5dedb8c8c0faf..3d4722fe6db7d 100644 --- a/posthog/temporal/tests/batch_exports/test_postgres_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_postgres_batch_export_workflow.py @@ -127,6 +127,7 @@ async def assert_clickhouse_records_in_postgres( expected_column_names = list(expected_records[0].keys()).sort() assert inserted_column_names == expected_column_names + assert len(inserted_records) == len(expected_records) assert inserted_records[0] == expected_records[0] assert inserted_records == expected_records @@ -171,7 +172,7 @@ async def postgres_connection(postgres_config, setup_postgres_test_db): { "fields": [ {"expression": "event", "alias": "event"}, - {"expression": "inserted_at", "alias": "inserted_at"}, + {"expression": "_inserted_at", "alias": "inserted_at"}, {"expression": "toInt8(1 + 1)", "alias": "two"}, ], "values": {}, diff --git a/posthog/temporal/tests/batch_exports/test_redshift_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_redshift_batch_export_workflow.py index 3ddbb805c21c4..db8257a7ee583 100644 --- a/posthog/temporal/tests/batch_exports/test_redshift_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_redshift_batch_export_workflow.py @@ -215,7 +215,7 @@ async def psycopg_connection(redshift_config, setup_postgres_test_db): { "fields": [ {"expression": "event", "alias": "event"}, - {"expression": "inserted_at", "alias": "inserted_at"}, + {"expression": "_inserted_at", "alias": "inserted_at"}, {"expression": "toInt8(1 + 1)", "alias": "two"}, ], "values": {}, diff --git a/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py index b89cf422f733f..dd0a58aea2131 100644 --- a/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py @@ -149,6 +149,28 @@ async def minio_client(bucket_name): await minio_client.delete_bucket(Bucket=bucket_name) +async def assert_file_in_s3(s3_compatible_client, bucket_name, key_prefix, file_format, compression, json_columns): + """Assert a file is in S3 and return its contents.""" + objects = await s3_compatible_client.list_objects_v2(Bucket=bucket_name, Prefix=key_prefix) + + assert len(objects.get("Contents", [])) == 1 + + key = objects["Contents"][0].get("Key") + assert key + + if file_format == "Parquet": + s3_data = await read_parquet_from_s3(bucket_name, key, json_columns) + + elif file_format == "JSONLines": + s3_object = await s3_compatible_client.get_object(Bucket=bucket_name, Key=key) + data = await s3_object["Body"].read() + s3_data = read_s3_data_as_json(data, compression) + else: + raise ValueError(f"Unsupported file format: {file_format}") + + return s3_data + + async def assert_clickhouse_records_in_s3( s3_compatible_client, clickhouse_client: ClickHouseClient, @@ -178,27 +200,15 @@ async def assert_clickhouse_records_in_s3( batch_export_schema: Custom schema used in the batch export. compression: Optional compression used in upload. """ - # List the objects in the bucket with the prefix. - objects = await s3_compatible_client.list_objects_v2(Bucket=bucket_name, Prefix=key_prefix) - - # Check that there is only one object. - assert len(objects.get("Contents", [])) == 1 - - # Get the object. - key = objects["Contents"][0].get("Key") - assert key - json_columns = ("properties", "person_properties", "set", "set_once") - - if file_format == "Parquet": - s3_data = await read_parquet_from_s3(bucket_name, key, json_columns) - - elif file_format == "JSONLines": - s3_object = await s3_compatible_client.get_object(Bucket=bucket_name, Key=key) - data = await s3_object["Body"].read() - s3_data = read_s3_data_as_json(data, compression) - else: - raise ValueError(f"Unsupported file format: {file_format}") + s3_data = await assert_file_in_s3( + s3_compatible_client=s3_compatible_client, + bucket_name=bucket_name, + key_prefix=key_prefix, + file_format=file_format, + compression=compression, + json_columns=json_columns, + ) if batch_export_schema is not None: schema_column_names = [field["alias"] for field in batch_export_schema["fields"]] @@ -1364,7 +1374,7 @@ async def test_insert_into_s3_activity_heartbeats( count_other_team=0, duplicate=False, # We need at least 5MB for a multi-part upload which is what we are testing. - properties={"$chonky": ("a" * 5 * 1024**2)}, + properties={"$chonky": ("a" * 5 * 2048**2)}, inserted_at=part_inserted_at, ) diff --git a/posthog/temporal/tests/batch_exports/test_snowflake_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_snowflake_batch_export_workflow.py index 857da4f3ce99f..41863344d84c7 100644 --- a/posthog/temporal/tests/batch_exports/test_snowflake_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_snowflake_batch_export_workflow.py @@ -329,18 +329,21 @@ def snowflake_config(database, schema) -> dict[str, str]: and tests that mock it. """ password = os.getenv("SNOWFLAKE_PASSWORD", "password") - warehouse = os.getenv("SNOWFLAKE_WAREHOUSE", "COMPUTE_WH") + warehouse = os.getenv("SNOWFLAKE_WAREHOUSE", "warehouse") account = os.getenv("SNOWFLAKE_ACCOUNT", "account") - username = os.getenv("SNOWFLAKE_USERNAME", "hazzadous") + username = os.getenv("SNOWFLAKE_USERNAME", "username") + role = os.getenv("SNOWFLAKE_ROLE", "role") - return { + config = { "password": password, "user": username, "warehouse": warehouse, "account": account, "database": database, "schema": schema, + "role": role, } + return config @pytest_asyncio.fixture @@ -917,6 +920,7 @@ def snowflake_cursor(snowflake_config): with snowflake.connector.connect( user=snowflake_config["user"], password=snowflake_config["password"], + role=snowflake_config["role"], account=snowflake_config["account"], warehouse=snowflake_config["warehouse"], ) as connection: @@ -936,14 +940,14 @@ def snowflake_cursor(snowflake_config): {"expression": "event", "alias": "event"}, {"expression": "nullIf(JSONExtractString(properties, %(hogql_val_0)s), '')", "alias": "browser"}, {"expression": "nullIf(JSONExtractString(properties, %(hogql_val_1)s), '')", "alias": "os"}, - {"expression": "nullIf(properties, '')", "alias": "all_properties"}, + {"expression": "properties", "alias": "all_properties"}, ], "values": {"hogql_val_0": "$browser", "hogql_val_1": "$os"}, }, { "fields": [ {"expression": "event", "alias": "event"}, - {"expression": "inserted_at", "alias": "inserted_at"}, + {"expression": "_inserted_at", "alias": "inserted_at"}, {"expression": "toInt32(1 + 1)", "alias": "two"}, ], "values": {}, @@ -1334,16 +1338,11 @@ def capture_heartbeat_details(*details): **snowflake_config, ) - with override_settings(BATCH_EXPORT_SNOWFLAKE_UPLOAD_CHUNK_SIZE_BYTES=1): + with override_settings(BATCH_EXPORT_SNOWFLAKE_UPLOAD_CHUNK_SIZE_BYTES=0): await activity_environment.run(insert_into_snowflake_activity, insert_inputs) - assert n_expected_files == len(captured_details) - - for index, details_captured in enumerate(captured_details): - assert dt.datetime.fromisoformat( - details_captured[0] - ) == data_interval_end - snowflake_batch_export.interval_time_delta / (index + 1) - assert details_captured[1] == index + 1 + # It's not guaranteed we will heartbeat right after every file. + assert len(captured_details) > 0 assert_clickhouse_records_in_snowflake( snowflake_cursor=snowflake_cursor, diff --git a/posthog/temporal/tests/utils/events.py b/posthog/temporal/tests/utils/events.py index ce48257381801..85d4f866b515d 100644 --- a/posthog/temporal/tests/utils/events.py +++ b/posthog/temporal/tests/utils/events.py @@ -37,7 +37,7 @@ def generate_test_events( team_id: int, possible_datetimes: list[dt.datetime], event_name: str, - inserted_at: str | dt.datetime | None = "_timestamp", + inserted_at: str | dt.datetime | None = "random", properties: dict | None = None, person_properties: dict | None = None, ip: str | None = None, @@ -51,6 +51,8 @@ def generate_test_events( if inserted_at == "_timestamp": inserted_at_value = _timestamp.strftime("%Y-%m-%d %H:%M:%S.%f") + elif inserted_at == "random": + inserted_at_value = random.choice(possible_datetimes).strftime("%Y-%m-%d %H:%M:%S.%f") elif inserted_at is None: inserted_at_value = None else: From 55f6a5a13e6b09fa562b2a6c2703f3547deb650b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Tue, 18 Jun 2024 16:45:50 +0200 Subject: [PATCH 21/49] fix: Merge conflict --- 0430_batchexport_model.py | 24 ------------------------ posthog/api/app_metrics.py | 1 - posthog/api/test/test_app_metrics.py | 26 -------------------------- 3 files changed, 51 deletions(-) delete mode 100644 0430_batchexport_model.py diff --git a/0430_batchexport_model.py b/0430_batchexport_model.py deleted file mode 100644 index 7f8722ade25ce..0000000000000 --- a/0430_batchexport_model.py +++ /dev/null @@ -1,24 +0,0 @@ -# Generated by Django 4.2.11 on 2024-06-12 14:43 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("posthog", "0429_alter_datawarehousetable_format"), - ] - - operations = [ - migrations.AddField( - model_name="batchexport", - name="model", - field=models.CharField( - blank=True, - choices=[("events", "Events"), ("persons", "Persons")], - default="events", - help_text="Which model this BatchExport is exporting.", - max_length=64, - null=True, - ), - ), - ] diff --git a/posthog/api/app_metrics.py b/posthog/api/app_metrics.py index 2cebd8460310c..6fe56947b42c7 100644 --- a/posthog/api/app_metrics.py +++ b/posthog/api/app_metrics.py @@ -8,7 +8,6 @@ from rest_framework.decorators import action from posthog.api.routing import TeamAndOrgViewSetMixin -from posthog.batch_exports.models import fetch_batch_export_run_count from posthog.models import BatchExportRun from posthog.models.plugin import PluginConfig from posthog.queries.app_metrics.app_metrics import ( diff --git a/posthog/api/test/test_app_metrics.py b/posthog/api/test/test_app_metrics.py index 111f8ec508c2e..c639b37aee68d 100644 --- a/posthog/api/test/test_app_metrics.py +++ b/posthog/api/test/test_app_metrics.py @@ -1,6 +1,5 @@ import datetime as dt import json -import uuid from unittest import mock from freezegun.api import freeze_time @@ -9,7 +8,6 @@ from posthog.api.test.batch_exports.conftest import start_test_worker from posthog.api.test.batch_exports.operations import create_batch_export_ok from posthog.batch_exports.models import BatchExportRun -from posthog.client import sync_execute from posthog.models.activity_logging.activity_log import Detail, Trigger, log_activity from posthog.models.plugin import Plugin, PluginConfig from posthog.models.utils import UUIDT @@ -20,20 +18,6 @@ SAMPLE_PAYLOAD = {"dateRange": ["2021-06-10", "2022-06-12"], "parallelism": 1} -def insert_event(team_id: int, timestamp: dt.datetime, event: str = "test-event"): - sync_execute( - "INSERT INTO `sharded_events` (uuid, team_id, event, timestamp) VALUES", - [ - { - "uuid": uuid.uuid4(), - "team_id": team_id, - "event": event, - "timestamp": timestamp, - } - ], - ) - - @freeze_time("2021-12-05T13:23:00Z") class TestAppMetricsAPI(ClickhouseTestMixin, APIBaseTest): maxDiff = None @@ -149,13 +133,6 @@ def test_retrieve_batch_export_runs_app_metrics(self): data_interval_start=last_updated_at - dt.timedelta(hours=1), status=BatchExportRun.Status.COMPLETED, ) - for _ in range(3): - insert_event(team_id=self.team.pk, timestamp=last_updated_at - dt.timedelta(minutes=1)) - - insert_event( - team_id=self.team.pk, timestamp=last_updated_at - dt.timedelta(minutes=1), event="not-included" - ) - BatchExportRun.objects.create( batch_export_id=batch_export_id, data_interval_end=last_updated_at - dt.timedelta(hours=2), @@ -168,9 +145,6 @@ def test_retrieve_batch_export_runs_app_metrics(self): data_interval_start=last_updated_at - dt.timedelta(hours=3), status=BatchExportRun.Status.FAILED_RETRYABLE, ) - for _ in range(5): - timestamp = last_updated_at - dt.timedelta(hours=2, minutes=1) - insert_event(team_id=self.team.pk, timestamp=timestamp) response = self.client.get(f"/api/projects/@current/app_metrics/{batch_export_id}?date_from=-7d") self.assertEqual(response.status_code, status.HTTP_200_OK) From 8e306a43bc50f0ff10cf61c70a936f5afb04da95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Tue, 18 Jun 2024 17:18:52 +0200 Subject: [PATCH 22/49] fix: Quality check fixes --- .../batch_exports/redshift_batch_export.py | 4 ++-- posthog/temporal/common/asyncpa.py | 2 +- posthog/temporal/tests/batch_exports/conftest.py | 15 --------------- 3 files changed, 3 insertions(+), 18 deletions(-) diff --git a/posthog/temporal/batch_exports/redshift_batch_export.py b/posthog/temporal/batch_exports/redshift_batch_export.py index 4229c294a12f5..52ce4e9db32cc 100644 --- a/posthog/temporal/batch_exports/redshift_batch_export.py +++ b/posthog/temporal/batch_exports/redshift_batch_export.py @@ -166,7 +166,7 @@ def get_redshift_fields_from_record_schema( async def insert_records_to_redshift( - records: collections.abc.AsyncGenerator[dict[str, typing.Any]], + records: collections.abc.AsyncGenerator[dict[str, typing.Any], None], redshift_connection: psycopg.AsyncConnection, schema: str | None, table: str, @@ -382,7 +382,7 @@ def map_to_record(row: dict) -> dict: return record - async def record_generator() -> collections.abc.AsyncGenerator[dict[str, typing.Any]]: + async def record_generator() -> collections.abc.AsyncGenerator[dict[str, typing.Any], None]: async for record_batch in record_iterator: for record in record_batch.to_pylist(): yield map_to_record(record) diff --git a/posthog/temporal/common/asyncpa.py b/posthog/temporal/common/asyncpa.py index 9d40c847f9d90..c301538a50eb0 100644 --- a/posthog/temporal/common/asyncpa.py +++ b/posthog/temporal/common/asyncpa.py @@ -100,7 +100,7 @@ class AsyncRecordBatchReader: def __init__(self, bytes_iter: typing.AsyncIterator[bytes]) -> None: self._reader = AsyncMessageReader(bytes_iter) - self._schema = None + self._schema: None | pa.Schema = None def __aiter__(self) -> "AsyncRecordBatchReader": return self diff --git a/posthog/temporal/tests/batch_exports/conftest.py b/posthog/temporal/tests/batch_exports/conftest.py index e679f72969671..6664c3bd7f5b1 100644 --- a/posthog/temporal/tests/batch_exports/conftest.py +++ b/posthog/temporal/tests/batch_exports/conftest.py @@ -3,8 +3,6 @@ import pytest_asyncio from psycopg import sql -from posthog.batch_exports.service import BatchExportModel - @pytest.fixture def interval(request) -> str: @@ -59,19 +57,6 @@ def batch_export_schema(request) -> dict | None: return None -@pytest.fixture -def batch_export_model(request) -> BatchExportModel | None: - """A parametrizable fixture to configure a batch export schema. - - By decorating a test function with @pytest.mark.parametrize("batch_export_model", ..., indirect=True) - it's possible to set the batch_export_schema that will be used to create a BatchExport. - """ - try: - return request.param - except AttributeError: - return BatchExportModel(name="events") - - @pytest_asyncio.fixture async def setup_postgres_test_db(postgres_config): """Fixture to manage a database for Redshift and Postgres export testing. From a33563ab2485f7e561120137474dfef41cfe2f80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Fri, 7 Jun 2024 15:46:27 +0200 Subject: [PATCH 23/49] refactor: Update metrics to fetch counts at request time --- posthog/api/app_metrics.py | 1 + posthog/api/test/test_app_metrics.py | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/posthog/api/app_metrics.py b/posthog/api/app_metrics.py index 6fe56947b42c7..2cebd8460310c 100644 --- a/posthog/api/app_metrics.py +++ b/posthog/api/app_metrics.py @@ -8,6 +8,7 @@ from rest_framework.decorators import action from posthog.api.routing import TeamAndOrgViewSetMixin +from posthog.batch_exports.models import fetch_batch_export_run_count from posthog.models import BatchExportRun from posthog.models.plugin import PluginConfig from posthog.queries.app_metrics.app_metrics import ( diff --git a/posthog/api/test/test_app_metrics.py b/posthog/api/test/test_app_metrics.py index c639b37aee68d..a5b630875bc37 100644 --- a/posthog/api/test/test_app_metrics.py +++ b/posthog/api/test/test_app_metrics.py @@ -145,6 +145,9 @@ def test_retrieve_batch_export_runs_app_metrics(self): data_interval_start=last_updated_at - dt.timedelta(hours=3), status=BatchExportRun.Status.FAILED_RETRYABLE, ) + for _ in range(5): + timestamp = last_updated_at - dt.timedelta(hours=2, minutes=1) + insert_event(team_id=self.team.pk, timestamp=timestamp) response = self.client.get(f"/api/projects/@current/app_metrics/{batch_export_id}?date_from=-7d") self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -213,6 +216,7 @@ def test_retrieve_batch_export_runs_app_metrics_defaults_to_zero(self): data_interval_start=last_updated_at - dt.timedelta(hours=1), status=BatchExportRun.Status.COMPLETED, ) + insert_event(team_id=self.team.pk, timestamp=last_updated_at - dt.timedelta(minutes=1)) response = self.client.get(f"/api/projects/@current/app_metrics/{batch_export_id}?date_from=-7d") self.assertEqual(response.status_code, status.HTTP_200_OK) From 1f93d43cd9b52a969f75446caaacdc38e924a0e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Fri, 7 Jun 2024 16:07:07 +0200 Subject: [PATCH 24/49] fix: Move import to method --- posthog/api/app_metrics.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/posthog/api/app_metrics.py b/posthog/api/app_metrics.py index 2cebd8460310c..0e9c15f81e88c 100644 --- a/posthog/api/app_metrics.py +++ b/posthog/api/app_metrics.py @@ -8,7 +8,6 @@ from rest_framework.decorators import action from posthog.api.routing import TeamAndOrgViewSetMixin -from posthog.batch_exports.models import fetch_batch_export_run_count from posthog.models import BatchExportRun from posthog.models.plugin import PluginConfig from posthog.queries.app_metrics.app_metrics import ( @@ -86,6 +85,8 @@ def get_batch_export_runs_app_metrics_queryset(self, batch_export_id: str): Raises: ValueError: If provided 'batch_export_id' is not a valid UUID. """ + from posthog.batch_exports.models import fetch_batch_export_run_count + batch_export_uuid = uuid.UUID(batch_export_id) after = self.request.GET.get("date_from", "-30d") From a395f1895fa50648b36d502d6aca66b2ebf26b07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Mon, 10 Jun 2024 14:45:12 +0200 Subject: [PATCH 25/49] fix: Add function --- posthog/api/app_metrics.py | 3 +-- posthog/batch_exports/models.py | 40 +++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/posthog/api/app_metrics.py b/posthog/api/app_metrics.py index 0e9c15f81e88c..3a0855b9939e5 100644 --- a/posthog/api/app_metrics.py +++ b/posthog/api/app_metrics.py @@ -24,6 +24,7 @@ AppMetricsRequestSerializer, ) from posthog.utils import relative_date_parse +from posthog.batch_exports.models import fetch_batch_export_run_count class AppMetricsViewSet(TeamAndOrgViewSetMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet): @@ -85,8 +86,6 @@ def get_batch_export_runs_app_metrics_queryset(self, batch_export_id: str): Raises: ValueError: If provided 'batch_export_id' is not a valid UUID. """ - from posthog.batch_exports.models import fetch_batch_export_run_count - batch_export_uuid = uuid.UUID(batch_export_id) after = self.request.GET.get("date_from", "-30d") diff --git a/posthog/batch_exports/models.py b/posthog/batch_exports/models.py index e663e3f111291..ce6815d3940d0 100644 --- a/posthog/batch_exports/models.py +++ b/posthog/batch_exports/models.py @@ -1,3 +1,4 @@ +import collections.abc import dataclasses import datetime as dt import enum @@ -116,6 +117,45 @@ class Status(models.TextChoices): ) +def fetch_batch_export_run_count( + *, + team_id: int, + data_interval_start: dt.datetime, + data_interval_end: dt.datetime, + exclude_events: collections.abc.Iterable[str] | None = None, + include_events: collections.abc.Iterable[str] | None = None, +) -> int: + """Fetch a list of batch export log entries from ClickHouse.""" + if exclude_events: + exclude_events_statement = f"AND event NOT IN ({','.join(exclude_events)})" + else: + exclude_events_statement = "" + + if include_events: + include_events_statement = f"AND event IN ({','.join(include_events)})" + else: + include_events_statement = "" + + data_interval_start_ch = data_interval_start.strftime("%Y-%m-%d %H:%M:%S") + data_interval_end_ch = data_interval_end.strftime("%Y-%m-%d %H:%M:%S") + + clickhouse_query = f""" + SELECT count(*) + FROM events + WHERE + team_id = {team_id} + AND timestamp >= toDateTime64('{data_interval_start_ch}', 6, 'UTC') + AND timestamp < toDateTime64('{data_interval_end_ch}', 6, 'UTC') + {exclude_events_statement} + {include_events_statement} + """ + + try: + return sync_execute(clickhouse_query)[0][0] # type: ignore + except Exception: + return 0 + + BATCH_EXPORT_INTERVALS = [ ("hour", "hour"), ("day", "day"), From eb0e5816d63f7f0467b67f445e608a264fbc50da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Mon, 10 Jun 2024 14:54:54 +0200 Subject: [PATCH 26/49] fix: Typing fixes --- posthog/batch_exports/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/posthog/batch_exports/models.py b/posthog/batch_exports/models.py index ce6815d3940d0..598b6cdbacee5 100644 --- a/posthog/batch_exports/models.py +++ b/posthog/batch_exports/models.py @@ -151,7 +151,7 @@ def fetch_batch_export_run_count( """ try: - return sync_execute(clickhouse_query)[0][0] # type: ignore + return sync_execute(clickhouse_query)[0][0] except Exception: return 0 From 4001daac2a887a853433c43b58368f8b2f05022b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Wed, 12 Jun 2024 14:28:08 +0200 Subject: [PATCH 27/49] feat: Custom schemas for batch exports --- frontend/src/queries/schema.ts | 5 +++++ .../PipelineBatchExportConfiguration.tsx | 3 +++ .../pipelineBatchExportConfigurationLogic.tsx | 19 +++++++++++++++++++ 3 files changed, 27 insertions(+) diff --git a/frontend/src/queries/schema.ts b/frontend/src/queries/schema.ts index f38f33267c18b..e937329344acb 100644 --- a/frontend/src/queries/schema.ts +++ b/frontend/src/queries/schema.ts @@ -1463,6 +1463,11 @@ export interface DatabaseSchemaPostHogTable extends DatabaseSchemaTableCommon { type: 'posthog' } +export interface DatabaseSchemaBatchExportTable extends DatabaseSchemaTableCommon { + type: 'batch_export' + query: HogQLQuery +} + export interface DatabaseSchemaDataWarehouseTable extends DatabaseSchemaTableCommon { type: 'data_warehouse' format: string diff --git a/frontend/src/scenes/pipeline/PipelineBatchExportConfiguration.tsx b/frontend/src/scenes/pipeline/PipelineBatchExportConfiguration.tsx index 71a19fd16fbf1..8ec3cad580de9 100644 --- a/frontend/src/scenes/pipeline/PipelineBatchExportConfiguration.tsx +++ b/frontend/src/scenes/pipeline/PipelineBatchExportConfiguration.tsx @@ -13,6 +13,8 @@ import { BatchExportGeneralEditFields, BatchExportsEditFields } from 'scenes/bat import { BatchExportConfigurationForm } from 'scenes/batch_exports/batchExportEditLogic' import { DatabaseTable } from 'scenes/data-management/database/DatabaseTable' +import { HogQLQueryEditor } from '~/queries/nodes/HogQLQuery/HogQLQueryEditor' +import { HogQLQuery, NodeKind } from '~/queries/schema' import { BATCH_EXPORT_SERVICE_NAMES, BatchExportService } from '~/types' import { pipelineBatchExportConfigurationLogic } from './pipelineBatchExportConfigurationLogic' @@ -28,6 +30,7 @@ export function PipelineBatchExportConfiguration({ service, id }: { service?: st tables, savedConfiguration, isConfigurationSubmitting, + isEditingModel, batchExportConfigLoading, configurationChanged, batchExportConfig, diff --git a/frontend/src/scenes/pipeline/pipelineBatchExportConfigurationLogic.tsx b/frontend/src/scenes/pipeline/pipelineBatchExportConfigurationLogic.tsx index 1bea2e71448af..51532e798422c 100644 --- a/frontend/src/scenes/pipeline/pipelineBatchExportConfigurationLogic.tsx +++ b/frontend/src/scenes/pipeline/pipelineBatchExportConfigurationLogic.tsx @@ -382,6 +382,25 @@ export const pipelineBatchExportConfigurationLogic = kea { + const customModelName = model.name + (model.name.includes('-custom') ? '' : '-custom') + const modelFound = values.tables.find((table) => table.name === customModelName) + + if (typeof modelFound === 'undefined') { + const customModel: DatabaseSchemaBatchExportTable = { + type: 'batch_export', + id: model.id + ' (Custom)', + name: model.name + '-custom', + query: query, + fields: {}, + } + actions.appendTable(customModel) + actions.setSelectedModel(customModel) + } else { + modelFound.query = query + actions.setSelectedModel(modelFound) + } + }, setConfigurationValue: async ({ name, value }) => { if (name[0] === 'json_config_file' && value) { try { From 0f3cbe389cfc2535d0c807583aa12444353a9f83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Wed, 12 Jun 2024 15:37:02 +0200 Subject: [PATCH 28/49] feat: Frontend support for model field --- frontend/src/queries/schema.ts | 1 - .../PipelineBatchExportConfiguration.tsx | 3 --- .../pipelineBatchExportConfigurationLogic.tsx | 19 ------------------- 3 files changed, 23 deletions(-) diff --git a/frontend/src/queries/schema.ts b/frontend/src/queries/schema.ts index e937329344acb..3f0a96f09e288 100644 --- a/frontend/src/queries/schema.ts +++ b/frontend/src/queries/schema.ts @@ -1465,7 +1465,6 @@ export interface DatabaseSchemaPostHogTable extends DatabaseSchemaTableCommon { export interface DatabaseSchemaBatchExportTable extends DatabaseSchemaTableCommon { type: 'batch_export' - query: HogQLQuery } export interface DatabaseSchemaDataWarehouseTable extends DatabaseSchemaTableCommon { diff --git a/frontend/src/scenes/pipeline/PipelineBatchExportConfiguration.tsx b/frontend/src/scenes/pipeline/PipelineBatchExportConfiguration.tsx index 8ec3cad580de9..71a19fd16fbf1 100644 --- a/frontend/src/scenes/pipeline/PipelineBatchExportConfiguration.tsx +++ b/frontend/src/scenes/pipeline/PipelineBatchExportConfiguration.tsx @@ -13,8 +13,6 @@ import { BatchExportGeneralEditFields, BatchExportsEditFields } from 'scenes/bat import { BatchExportConfigurationForm } from 'scenes/batch_exports/batchExportEditLogic' import { DatabaseTable } from 'scenes/data-management/database/DatabaseTable' -import { HogQLQueryEditor } from '~/queries/nodes/HogQLQuery/HogQLQueryEditor' -import { HogQLQuery, NodeKind } from '~/queries/schema' import { BATCH_EXPORT_SERVICE_NAMES, BatchExportService } from '~/types' import { pipelineBatchExportConfigurationLogic } from './pipelineBatchExportConfigurationLogic' @@ -30,7 +28,6 @@ export function PipelineBatchExportConfiguration({ service, id }: { service?: st tables, savedConfiguration, isConfigurationSubmitting, - isEditingModel, batchExportConfigLoading, configurationChanged, batchExportConfig, diff --git a/frontend/src/scenes/pipeline/pipelineBatchExportConfigurationLogic.tsx b/frontend/src/scenes/pipeline/pipelineBatchExportConfigurationLogic.tsx index 51532e798422c..1bea2e71448af 100644 --- a/frontend/src/scenes/pipeline/pipelineBatchExportConfigurationLogic.tsx +++ b/frontend/src/scenes/pipeline/pipelineBatchExportConfigurationLogic.tsx @@ -382,25 +382,6 @@ export const pipelineBatchExportConfigurationLogic = kea { - const customModelName = model.name + (model.name.includes('-custom') ? '' : '-custom') - const modelFound = values.tables.find((table) => table.name === customModelName) - - if (typeof modelFound === 'undefined') { - const customModel: DatabaseSchemaBatchExportTable = { - type: 'batch_export', - id: model.id + ' (Custom)', - name: model.name + '-custom', - query: query, - fields: {}, - } - actions.appendTable(customModel) - actions.setSelectedModel(customModel) - } else { - modelFound.query = query - actions.setSelectedModel(modelFound) - } - }, setConfigurationValue: async ({ name, value }) => { if (name[0] === 'json_config_file' && value) { try { From fde00d4efb24675df006e33f693ab7e8ddcab3e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Wed, 12 Jun 2024 15:40:55 +0200 Subject: [PATCH 29/49] fix: Clean-up --- frontend/src/queries/schema.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/frontend/src/queries/schema.ts b/frontend/src/queries/schema.ts index 3f0a96f09e288..f38f33267c18b 100644 --- a/frontend/src/queries/schema.ts +++ b/frontend/src/queries/schema.ts @@ -1463,10 +1463,6 @@ export interface DatabaseSchemaPostHogTable extends DatabaseSchemaTableCommon { type: 'posthog' } -export interface DatabaseSchemaBatchExportTable extends DatabaseSchemaTableCommon { - type: 'batch_export' -} - export interface DatabaseSchemaDataWarehouseTable extends DatabaseSchemaTableCommon { type: 'data_warehouse' format: string From ee354cb66274b1952d45d87746c76e6069a744be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Wed, 12 Jun 2024 15:53:48 +0200 Subject: [PATCH 30/49] fix: Add missing migration --- posthog/migrations/0426_batchexport_model.py | 22 ++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 posthog/migrations/0426_batchexport_model.py diff --git a/posthog/migrations/0426_batchexport_model.py b/posthog/migrations/0426_batchexport_model.py new file mode 100644 index 0000000000000..68f8fd2c72916 --- /dev/null +++ b/posthog/migrations/0426_batchexport_model.py @@ -0,0 +1,22 @@ +# Generated by Django 4.2.11 on 2024-06-12 12:48 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("posthog", "0425_hogfunction"), + ] + + operations = [ + migrations.AddField( + model_name="batchexport", + name="model", + field=models.CharField( + choices=[("events", "Events"), ("persons", "Persons")], + default="events", + help_text="Which model this BatchExport is exporting.", + max_length=64, + ), + ), + ] From ccab5f62be82fecc174ab9e27befc4bdb28193de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Wed, 12 Jun 2024 16:43:48 +0200 Subject: [PATCH 31/49] fix: Make new field nullable --- posthog/migrations/0426_batchexport_model.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/posthog/migrations/0426_batchexport_model.py b/posthog/migrations/0426_batchexport_model.py index 68f8fd2c72916..37cee94f5ab43 100644 --- a/posthog/migrations/0426_batchexport_model.py +++ b/posthog/migrations/0426_batchexport_model.py @@ -1,4 +1,4 @@ -# Generated by Django 4.2.11 on 2024-06-12 12:48 +# Generated by Django 4.2.11 on 2024-06-12 14:43 from django.db import migrations, models @@ -13,10 +13,12 @@ class Migration(migrations.Migration): model_name="batchexport", name="model", field=models.CharField( + blank=True, choices=[("events", "Events"), ("persons", "Persons")], default="events", help_text="Which model this BatchExport is exporting.", max_length=64, + null=True, ), ), ] From e7b5cb9c5d2d9e89d07efd0f799fcd6569a20902 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Jun 2024 15:33:26 +0000 Subject: [PATCH 32/49] Update UI snapshots for `chromium` (1) --- ...funnel-historical-trends-insight--dark.png | Bin 14543 -> 12643 bytes ...unnel-historical-trends-insight--light.png | Bin 14301 -> 12357 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--dark.png b/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--dark.png index f427261f0c8010f06b2182d23f21ea35f32b3b67..a820c399ecbf23f0a477f1d6c54d82101a2b8272 100644 GIT binary patch literal 12643 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 F{{zP_KF9z7 diff --git a/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--light.png b/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--light.png index fa79b1b313e1daf2ac05ee5cadcd1a1f37c26b24..1276a2564f958e5581ebd905eed12aa2877600ef 100644 GIT binary patch literal 12357 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 I_@!U}6Vnj=vH$=8 literal 14301 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 rZu Date: Wed, 12 Jun 2024 15:44:03 +0000 Subject: [PATCH 33/49] Update UI snapshots for `chromium` (1) --- ...funnel-historical-trends-insight--dark.png | Bin 12643 -> 14543 bytes ...unnel-historical-trends-insight--light.png | Bin 12357 -> 14301 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--dark.png b/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--dark.png index a820c399ecbf23f0a477f1d6c54d82101a2b8272..f427261f0c8010f06b2182d23f21ea35f32b3b67 100644 GIT binary patch literal 14543 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 F{{zP_KF9z7 literal 12643 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 I_@!U}6Vnj=vH$=8 From a8b35940795388be84d79a1e9bf4137facc3c1a9 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Jun 2024 16:06:07 +0000 Subject: [PATCH 34/49] Update UI snapshots for `chromium` (1) --- ...funnel-historical-trends-insight--dark.png | Bin 14543 -> 12643 bytes ...unnel-historical-trends-insight--light.png | Bin 14301 -> 12357 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--dark.png b/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--dark.png index f427261f0c8010f06b2182d23f21ea35f32b3b67..a820c399ecbf23f0a477f1d6c54d82101a2b8272 100644 GIT binary patch literal 12643 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 F{{zP_KF9z7 diff --git a/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--light.png b/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--light.png index fa79b1b313e1daf2ac05ee5cadcd1a1f37c26b24..1276a2564f958e5581ebd905eed12aa2877600ef 100644 GIT binary patch literal 12357 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 I_@!U}6Vnj=vH$=8 literal 14301 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 rZu Date: Wed, 12 Jun 2024 16:17:55 +0000 Subject: [PATCH 35/49] Update UI snapshots for `chromium` (1) --- ...funnel-historical-trends-insight--dark.png | Bin 12643 -> 14543 bytes ...unnel-historical-trends-insight--light.png | Bin 12357 -> 14301 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--dark.png b/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--dark.png index a820c399ecbf23f0a477f1d6c54d82101a2b8272..f427261f0c8010f06b2182d23f21ea35f32b3b67 100644 GIT binary patch literal 14543 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 F{{zP_KF9z7 literal 12643 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 I_@!U}6Vnj=vH$=8 From 6b19e95bf344d7dfa0871aff37ec8c4526670b38 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Jun 2024 16:28:39 +0000 Subject: [PATCH 36/49] Update UI snapshots for `chromium` (1) --- ...funnel-historical-trends-insight--dark.png | Bin 14543 -> 12643 bytes ...unnel-historical-trends-insight--light.png | Bin 14301 -> 12357 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--dark.png b/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--dark.png index f427261f0c8010f06b2182d23f21ea35f32b3b67..a820c399ecbf23f0a477f1d6c54d82101a2b8272 100644 GIT binary patch literal 12643 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 F{{zP_KF9z7 diff --git a/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--light.png b/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--light.png index fa79b1b313e1daf2ac05ee5cadcd1a1f37c26b24..1276a2564f958e5581ebd905eed12aa2877600ef 100644 GIT binary patch literal 12357 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 I_@!U}6Vnj=vH$=8 literal 14301 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 rZu Date: Wed, 12 Jun 2024 16:39:17 +0000 Subject: [PATCH 37/49] Update UI snapshots for `chromium` (1) --- ...funnel-historical-trends-insight--dark.png | Bin 12643 -> 14543 bytes ...unnel-historical-trends-insight--light.png | Bin 12357 -> 14301 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--dark.png b/frontend/__snapshots__/exporter-exporter--funnel-historical-trends-insight--dark.png index a820c399ecbf23f0a477f1d6c54d82101a2b8272..f427261f0c8010f06b2182d23f21ea35f32b3b67 100644 GIT binary patch literal 14543 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 F{{zP_KF9z7 literal 12643 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 I_@!U}6Vnj=vH$=8 From 536cbdbb5db6a7b49c285d548032982aad21fa1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Tue, 18 Jun 2024 16:48:50 +0200 Subject: [PATCH 38/49] fix: Bump migration number --- posthog/migrations/0426_batchexport_model.py | 24 -------------------- 1 file changed, 24 deletions(-) delete mode 100644 posthog/migrations/0426_batchexport_model.py diff --git a/posthog/migrations/0426_batchexport_model.py b/posthog/migrations/0426_batchexport_model.py deleted file mode 100644 index 37cee94f5ab43..0000000000000 --- a/posthog/migrations/0426_batchexport_model.py +++ /dev/null @@ -1,24 +0,0 @@ -# Generated by Django 4.2.11 on 2024-06-12 14:43 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("posthog", "0425_hogfunction"), - ] - - operations = [ - migrations.AddField( - model_name="batchexport", - name="model", - field=models.CharField( - blank=True, - choices=[("events", "Events"), ("persons", "Persons")], - default="events", - help_text="Which model this BatchExport is exporting.", - max_length=64, - null=True, - ), - ), - ] From 0a9343e72c5426f623a276d8a15b7cc7995bf584 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Tue, 18 Jun 2024 17:12:00 +0200 Subject: [PATCH 39/49] fix: Clean-up unused code --- posthog/api/app_metrics.py | 1 - 1 file changed, 1 deletion(-) diff --git a/posthog/api/app_metrics.py b/posthog/api/app_metrics.py index 3a0855b9939e5..6fe56947b42c7 100644 --- a/posthog/api/app_metrics.py +++ b/posthog/api/app_metrics.py @@ -24,7 +24,6 @@ AppMetricsRequestSerializer, ) from posthog.utils import relative_date_parse -from posthog.batch_exports.models import fetch_batch_export_run_count class AppMetricsViewSet(TeamAndOrgViewSetMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet): From f921bb5d55af5f68a633f75dcd6bd0ce31f3a04c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Tue, 18 Jun 2024 17:27:59 +0200 Subject: [PATCH 40/49] chore: Clean-up unused function and tests --- .../temporal/batch_exports/batch_exports.py | 58 ------- .../tests/batch_exports/test_batch_exports.py | 150 ------------------ 2 files changed, 208 deletions(-) diff --git a/posthog/temporal/batch_exports/batch_exports.py b/posthog/temporal/batch_exports/batch_exports.py index 02e0a79d23008..4a710e6ce0991 100644 --- a/posthog/temporal/batch_exports/batch_exports.py +++ b/posthog/temporal/batch_exports/batch_exports.py @@ -77,64 +77,6 @@ def get_timestamp_field(is_backfill: bool) -> str: return timestamp_field -async def get_rows_count( - client: ClickHouseClient, - team_id: int, - interval_start: str, - interval_end: str, - exclude_events: collections.abc.Iterable[str] | None = None, - include_events: collections.abc.Iterable[str] | None = None, - is_backfill: bool = False, -) -> int: - """Return a count of rows to be batch exported.""" - data_interval_start_ch = dt.datetime.fromisoformat(interval_start).strftime("%Y-%m-%d %H:%M:%S") - data_interval_end_ch = dt.datetime.fromisoformat(interval_end).strftime("%Y-%m-%d %H:%M:%S") - - if exclude_events: - exclude_events_statement = "AND event NOT IN {exclude_events}" - events_to_exclude_tuple = tuple(exclude_events) - else: - exclude_events_statement = "" - events_to_exclude_tuple = () - - if include_events: - include_events_statement = "AND event IN {include_events}" - events_to_include_tuple = tuple(include_events) - else: - include_events_statement = "" - events_to_include_tuple = () - - timestamp_field = get_timestamp_field(is_backfill) - timestamp_predicates = get_timestamp_predicates_for_team(team_id, is_backfill) - - query = SELECT_QUERY_TEMPLATE.substitute( - fields="count(DISTINCT event, cityHash64(distinct_id), cityHash64(uuid)) as count", - order_by="", - format="", - distinct="", - timestamp_field=timestamp_field, - timestamp=timestamp_predicates, - exclude_events=exclude_events_statement, - include_events=include_events_statement, - ) - - count = await client.read_query( - query, - query_parameters={ - "team_id": team_id, - "data_interval_start": data_interval_start_ch, - "data_interval_end": data_interval_end_ch, - "exclude_events": events_to_exclude_tuple, - "include_events": events_to_include_tuple, - }, - ) - - if count is None or len(count) == 0: - raise ValueError("Unexpected result from ClickHouse: `None` returned for count query") - - return int(count) - - def default_fields() -> list[BatchExportField]: """Return list of default batch export Fields.""" return [ diff --git a/posthog/temporal/tests/batch_exports/test_batch_exports.py b/posthog/temporal/tests/batch_exports/test_batch_exports.py index d019d72b9509e..4ff4b16742bab 100644 --- a/posthog/temporal/tests/batch_exports/test_batch_exports.py +++ b/posthog/temporal/tests/batch_exports/test_batch_exports.py @@ -8,7 +8,6 @@ from posthog.temporal.batch_exports.batch_exports import ( get_data_interval, - get_rows_count, iter_records, ) from posthog.temporal.tests.utils.events import generate_test_events_in_clickhouse @@ -16,155 +15,6 @@ pytestmark = [pytest.mark.asyncio, pytest.mark.django_db] -async def test_get_rows_count(clickhouse_client): - """Test the count of rows returned by get_rows_count.""" - team_id = randint(1, 1000000) - data_interval_end = dt.datetime.fromisoformat("2023-04-25T14:31:00.000000+00:00") - data_interval_start = dt.datetime.fromisoformat("2023-04-25T14:30:00.000000+00:00") - - _ = await generate_test_events_in_clickhouse( - client=clickhouse_client, - team_id=team_id, - start_time=data_interval_start, - end_time=data_interval_end, - count=10000, - count_outside_range=0, - count_other_team=0, - duplicate=False, - ) - - row_count = await get_rows_count( - clickhouse_client, team_id, data_interval_start.isoformat(), data_interval_end.isoformat() - ) - assert row_count == 10000 - - -async def test_get_rows_count_handles_duplicates(clickhouse_client): - """Test the count of rows returned by get_rows_count are de-duplicated.""" - team_id = randint(1, 1000000) - - data_interval_end = dt.datetime.fromisoformat("2023-04-25T14:31:00.000000+00:00") - data_interval_start = dt.datetime.fromisoformat("2023-04-25T14:30:00.000000+00:00") - - _ = await generate_test_events_in_clickhouse( - client=clickhouse_client, - team_id=team_id, - start_time=data_interval_start, - end_time=data_interval_end, - count=10, - count_outside_range=0, - count_other_team=0, - duplicate=True, - ) - - row_count = await get_rows_count( - clickhouse_client, team_id, data_interval_start.isoformat(), data_interval_end.isoformat() - ) - assert row_count == 10 - - -async def test_get_rows_count_can_exclude_events(clickhouse_client): - """Test the count of rows returned by get_rows_count can exclude events.""" - team_id = randint(1, 1000000) - - data_interval_end = dt.datetime.fromisoformat("2023-04-25T14:31:00.000000+00:00") - data_interval_start = dt.datetime.fromisoformat("2023-04-25T14:30:00.000000+00:00") - - (events, _, _) = await generate_test_events_in_clickhouse( - client=clickhouse_client, - team_id=team_id, - start_time=data_interval_start, - end_time=data_interval_end, - count=10000, - count_outside_range=0, - count_other_team=0, - duplicate=False, - ) - - # Exclude the latter half of events. - exclude_events = (event["event"] for event in events[5000:]) - row_count = await get_rows_count( - clickhouse_client, - team_id, - data_interval_start.isoformat(), - data_interval_end.isoformat(), - exclude_events=exclude_events, - ) - assert row_count == 5000 - - -async def test_get_rows_count_can_include_events(clickhouse_client): - """Test the count of rows returned by get_rows_count can include events.""" - team_id = randint(1, 1000000) - - data_interval_end = dt.datetime.fromisoformat("2023-04-25T14:31:00.000000+00:00") - data_interval_start = dt.datetime.fromisoformat("2023-04-25T14:30:00.000000+00:00") - - (events, _, _) = await generate_test_events_in_clickhouse( - client=clickhouse_client, - team_id=team_id, - start_time=data_interval_start, - end_time=data_interval_end, - count=5000, - count_outside_range=0, - count_other_team=0, - duplicate=False, - ) - - # Include the latter half of events. - include_events = (event["event"] for event in events[2500:]) - row_count = await get_rows_count( - clickhouse_client, - team_id, - data_interval_start.isoformat(), - data_interval_end.isoformat(), - include_events=include_events, - ) - assert row_count == 2500 - - -async def test_get_rows_count_ignores_timestamp_predicates(clickhouse_client): - """Test the count of rows returned by get_rows_count can ignore timestamp predicates.""" - team_id = randint(1, 1000000) - - inserted_at = dt.datetime.fromisoformat("2023-04-25T14:30:00.000000+00:00") - data_interval_end = inserted_at + dt.timedelta(hours=1) - - # Insert some data with timestamps a couple of years before inserted_at - timestamp_start = inserted_at - dt.timedelta(hours=24 * 365 * 2) - timestamp_end = inserted_at - dt.timedelta(hours=24 * 365) - - await generate_test_events_in_clickhouse( - client=clickhouse_client, - team_id=team_id, - start_time=timestamp_start, - end_time=timestamp_end, - count=10, - count_outside_range=0, - count_other_team=0, - duplicate=False, - inserted_at=inserted_at, - ) - - row_count = await get_rows_count( - clickhouse_client, - team_id, - inserted_at.isoformat(), - data_interval_end.isoformat(), - ) - # All events are outside timestamp bounds (a year difference with inserted_at) - assert row_count == 0 - - with override_settings(UNCONSTRAINED_TIMESTAMP_TEAM_IDS=[str(team_id)]): - row_count = await get_rows_count( - clickhouse_client, - team_id, - inserted_at.isoformat(), - data_interval_end.isoformat(), - ) - assert row_count == 10 - - def assert_records_match_events(records, events): """Compare records returned from ClickHouse to events inserted into ClickHouse. From dc9535f7c76989f9bd09c6d3083c26eb6f96bc7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Tue, 18 Jun 2024 17:38:15 +0200 Subject: [PATCH 41/49] fix: Clean-up unused function --- posthog/api/test/test_app_metrics.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/posthog/api/test/test_app_metrics.py b/posthog/api/test/test_app_metrics.py index a5b630875bc37..c639b37aee68d 100644 --- a/posthog/api/test/test_app_metrics.py +++ b/posthog/api/test/test_app_metrics.py @@ -145,9 +145,6 @@ def test_retrieve_batch_export_runs_app_metrics(self): data_interval_start=last_updated_at - dt.timedelta(hours=3), status=BatchExportRun.Status.FAILED_RETRYABLE, ) - for _ in range(5): - timestamp = last_updated_at - dt.timedelta(hours=2, minutes=1) - insert_event(team_id=self.team.pk, timestamp=timestamp) response = self.client.get(f"/api/projects/@current/app_metrics/{batch_export_id}?date_from=-7d") self.assertEqual(response.status_code, status.HTTP_200_OK) @@ -216,7 +213,6 @@ def test_retrieve_batch_export_runs_app_metrics_defaults_to_zero(self): data_interval_start=last_updated_at - dt.timedelta(hours=1), status=BatchExportRun.Status.COMPLETED, ) - insert_event(team_id=self.team.pk, timestamp=last_updated_at - dt.timedelta(minutes=1)) response = self.client.get(f"/api/projects/@current/app_metrics/{batch_export_id}?date_from=-7d") self.assertEqual(response.status_code, status.HTTP_200_OK) From ee3fcb88aa099081191d613c6479de2177c2ecdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Wed, 19 Jun 2024 11:18:14 +0200 Subject: [PATCH 42/49] fix: HTTP Batch export default fields --- posthog/temporal/batch_exports/http_batch_export.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/posthog/temporal/batch_exports/http_batch_export.py b/posthog/temporal/batch_exports/http_batch_export.py index c6bf02610ec56..cf0e9b485f376 100644 --- a/posthog/temporal/batch_exports/http_batch_export.py +++ b/posthog/temporal/batch_exports/http_batch_export.py @@ -64,13 +64,13 @@ def raise_for_status(response: aiohttp.ClientResponse): def http_default_fields() -> list[BatchExportField]: """Return default fields used in HTTP batch export, currently supporting only migrations.""" return [ - BatchExportField(expression="any(toString(uuid))", alias="uuid"), - BatchExportField(expression="any(timestamp)", alias="timestamp"), - BatchExportField(expression="any(COALESCE(inserted_at, _timestamp))", alias="_inserted_at"), + BatchExportField(expression="uuid", alias="uuid"), + BatchExportField(expression="timestamp", alias="timestamp"), + BatchExportField(expression="_inserted_at", alias="_inserted_at"), BatchExportField(expression="event", alias="event"), - BatchExportField(expression="any(nullIf(properties, ''))", alias="properties"), - BatchExportField(expression="any(toString(distinct_id))", alias="distinct_id"), - BatchExportField(expression="any(elements_chain)", alias="elements_chain"), + BatchExportField(expression="nullIf(properties, '')", alias="properties"), + BatchExportField(expression="distinct_id", alias="distinct_id"), + BatchExportField(expression="elements_chain", alias="elements_chain"), ] From c4deddf5fef303d2080a02231f9c5ceaf0f7a778 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Wed, 19 Jun 2024 11:37:04 +0200 Subject: [PATCH 43/49] fix: Remove test case on new column not present in base table --- .../tests/batch_exports/test_batch_exports.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/posthog/temporal/tests/batch_exports/test_batch_exports.py b/posthog/temporal/tests/batch_exports/test_batch_exports.py index 4ff4b16742bab..b146352c74958 100644 --- a/posthog/temporal/tests/batch_exports/test_batch_exports.py +++ b/posthog/temporal/tests/batch_exports/test_batch_exports.py @@ -8,6 +8,7 @@ from posthog.temporal.batch_exports.batch_exports import ( get_data_interval, + iter_model_records, iter_records, ) from posthog.temporal.tests.utils.events import generate_test_events_in_clickhouse @@ -240,7 +241,6 @@ async def test_iter_records_ignores_timestamp_predicates(clickhouse_client): {"expression": "event", "alias": "event_name"}, {"expression": "team_id", "alias": "team"}, {"expression": "timestamp", "alias": "time_the_stamp"}, - {"expression": "inserted_at", "alias": "ingestion_time"}, {"expression": "created_at", "alias": "creation_time"}, ], ) @@ -264,11 +264,13 @@ async def test_iter_records_with_single_field_and_alias(clickhouse_client, field records = [ record - for record_batch in iter_records( - clickhouse_client, - team_id, - data_interval_start.isoformat(), - data_interval_end.isoformat(), + async for record_batch in iter_model_records( + client=clickhouse_client, + model="events", + team_id=team_id, + is_backfill=False, + interval_start=data_interval_start.isoformat(), + interval_end=data_interval_end.isoformat(), fields=[field], ) for record in record_batch.to_pylist() From f2cad91a8922eb8eba8ce5f64d22adf8b13d864e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Wed, 19 Jun 2024 11:42:26 +0200 Subject: [PATCH 44/49] chore: Clean-up unused functions and queries --- .../temporal/batch_exports/batch_exports.py | 124 ++++++------------ 1 file changed, 39 insertions(+), 85 deletions(-) diff --git a/posthog/temporal/batch_exports/batch_exports.py b/posthog/temporal/batch_exports/batch_exports.py index 4a710e6ce0991..04e9a7fa000f0 100644 --- a/posthog/temporal/batch_exports/batch_exports.py +++ b/posthog/temporal/batch_exports/batch_exports.py @@ -30,72 +30,6 @@ from posthog.temporal.common.client import connect from posthog.temporal.common.logger import bind_temporal_worker_logger -SELECT_QUERY_TEMPLATE = Template( - """ - SELECT - $fields - FROM events - WHERE - team_id = {team_id} - AND $timestamp_field >= toDateTime64({data_interval_start}, 6, 'UTC') - AND $timestamp_field < toDateTime64({data_interval_end}, 6, 'UTC') - $timestamp - $exclude_events - $include_events - $group_by - $order_by - $format - """ -) - -TIMESTAMP_PREDICATES = Template( - """ --- These 'timestamp' checks are a heuristic to exploit the sort key. --- Ideally, we need a schema that serves our needs, i.e. with a sort key on the _timestamp field used for batch exports. --- As a side-effect, this heuristic will discard historical loads older than a day. -AND timestamp >= toDateTime64({data_interval_start}, 6, 'UTC') - INTERVAL $lookback_days DAY -AND timestamp < toDateTime64({data_interval_end}, 6, 'UTC') + INTERVAL 1 DAY -""" -) - - -def get_timestamp_predicates_for_team(team_id: int, is_backfill: bool = False) -> str: - if str(team_id) in settings.UNCONSTRAINED_TIMESTAMP_TEAM_IDS or is_backfill: - return "" - else: - return TIMESTAMP_PREDICATES.substitute( - lookback_days=settings.OVERRIDE_TIMESTAMP_TEAM_IDS.get(team_id, settings.DEFAULT_TIMESTAMP_LOOKBACK_DAYS), - ) - - -def get_timestamp_field(is_backfill: bool) -> str: - """Return the field to use for timestamp bounds.""" - if is_backfill: - timestamp_field = "timestamp" - else: - timestamp_field = "COALESCE(inserted_at, _timestamp)" - return timestamp_field - - -def default_fields() -> list[BatchExportField]: - """Return list of default batch export Fields.""" - return [ - BatchExportField(expression="uuid", alias="uuid"), - BatchExportField(expression="team_id", alias="team_id"), - BatchExportField(expression="timestamp", alias="timestamp"), - BatchExportField(expression="_inserted_at", alias="_inserted_at"), - BatchExportField(expression="created_at", alias="created_at"), - BatchExportField(expression="event", alias="event"), - BatchExportField(expression="properties", alias="properties"), - BatchExportField(expression="distinct_id", alias="distinct_id"), - BatchExportField(expression="set", alias="set"), - BatchExportField( - expression="set_once", - alias="set_once", - ), - ] - - BytesGenerator = collections.abc.Generator[bytes, None, None] RecordsGenerator = collections.abc.Generator[pa.RecordBatch, None, None] @@ -157,6 +91,26 @@ def default_fields() -> list[BatchExportField]: FORMAT ArrowStream """) + +def default_fields() -> list[BatchExportField]: + """Return list of default batch export Fields.""" + return [ + BatchExportField(expression="uuid", alias="uuid"), + BatchExportField(expression="team_id", alias="team_id"), + BatchExportField(expression="timestamp", alias="timestamp"), + BatchExportField(expression="_inserted_at", alias="_inserted_at"), + BatchExportField(expression="created_at", alias="created_at"), + BatchExportField(expression="event", alias="event"), + BatchExportField(expression="properties", alias="properties"), + BatchExportField(expression="distinct_id", alias="distinct_id"), + BatchExportField(expression="set", alias="set"), + BatchExportField( + expression="set_once", + alias="set_once", + ), + ] + + DEFAULT_MODELS = {"events", "persons"} @@ -173,6 +127,25 @@ async def iter_model_records( yield record +async def iter_records_from_model_view( + client: ClickHouseClient, model: str, is_backfill: bool, team_id: int, **parameters +) -> AsyncRecordsGenerator: + if model == "persons": + view = SELECT_FROM_PERSONS_VIEW + else: + # TODO: Let this model be exported by `astream_query_as_arrow`. + # Just to reduce risk, I don't want to change the function that runs 100% of the exports + # without battle testing it first. + # There are already changes going out to the queries themselves that will impact events in a + # positive way. So, we can come back later and drop this block. + for record_batch in iter_records(client, team_id=team_id, is_backfill=is_backfill, **parameters): + yield record_batch + return + + async for record_batch in client.astream_query_as_arrow(view, query_parameters=parameters): + yield record_batch + + def iter_records( client: ClickHouseClient, team_id: int, @@ -250,25 +223,6 @@ def iter_records( yield from client.stream_query_as_arrow(query_str, query_parameters=query_parameters) -async def iter_records_from_model_view( - client: ClickHouseClient, model: str, is_backfill: bool, team_id: int, **parameters -) -> AsyncRecordsGenerator: - if model == "persons": - view = SELECT_FROM_PERSONS_VIEW - else: - # TODO: Let this model be exported by `astream_query_as_arrow`. - # Just to reduce risk, I don't want to change the function that runs 100% of the exports - # without battle testing it first. - # There are already changes going out to the queries themselves that will impact events in a - # positive way. So, we can come back later and drop this block. - for record_batch in iter_records(client, team_id=team_id, is_backfill=is_backfill, **parameters): - yield record_batch - return - - async for record_batch in client.astream_query_as_arrow(view, query_parameters=parameters): - yield record_batch - - def get_data_interval(interval: str, data_interval_end: str | None) -> tuple[dt.datetime, dt.datetime]: """Return the start and end of an export's data interval. From 86c86a214867914bf110f3ffddc18a82eb613d26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Wed, 19 Jun 2024 12:19:33 +0200 Subject: [PATCH 45/49] fix: Only run extra clickhouse queries in batch exports tests --- posthog/conftest.py | 12 ++++------ .../temporal/tests/batch_exports/conftest.py | 23 +++++++++++++++---- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/posthog/conftest.py b/posthog/conftest.py index 615569bf189bf..291c49a6dec76 100644 --- a/posthog/conftest.py +++ b/posthog/conftest.py @@ -15,7 +15,6 @@ def create_clickhouse_tables(num_tables: int): CREATE_DATA_QUERIES, CREATE_DICTIONARY_QUERIES, CREATE_DISTRIBUTED_TABLE_QUERIES, - CREATE_KAFKA_TABLE_QUERIES, CREATE_MERGETREE_TABLE_QUERIES, CREATE_MV_TABLE_QUERIES, CREATE_VIEW_QUERIES, @@ -32,9 +31,6 @@ def create_clickhouse_tables(num_tables: int): table_queries = list(map(build_query, CREATE_TABLE_QUERIES)) run_clickhouse_statement_in_parallel(table_queries) - kafka_queries = list(map(build_query, CREATE_KAFKA_TABLE_QUERIES)) - run_clickhouse_statement_in_parallel(kafka_queries) - mv_queries = list(map(build_query, CREATE_MV_TABLE_QUERIES)) run_clickhouse_statement_in_parallel(mv_queries) @@ -57,24 +53,24 @@ def reset_clickhouse_tables(): from posthog.clickhouse.plugin_log_entries import ( TRUNCATE_PLUGIN_LOG_ENTRIES_TABLE_SQL, ) + from posthog.heatmaps.sql import TRUNCATE_HEATMAPS_TABLE_SQL from posthog.models.app_metrics.sql import TRUNCATE_APP_METRICS_TABLE_SQL + from posthog.models.channel_type.sql import TRUNCATE_CHANNEL_DEFINITION_TABLE_SQL from posthog.models.cohort.sql import TRUNCATE_COHORTPEOPLE_TABLE_SQL from posthog.models.event.sql import TRUNCATE_EVENTS_TABLE_SQL from posthog.models.group.sql import TRUNCATE_GROUPS_TABLE_SQL from posthog.models.performance.sql import TRUNCATE_PERFORMANCE_EVENTS_TABLE_SQL from posthog.models.person.sql import ( TRUNCATE_PERSON_DISTINCT_ID2_TABLE_SQL, + TRUNCATE_PERSON_DISTINCT_ID_OVERRIDES_TABLE_SQL, TRUNCATE_PERSON_DISTINCT_ID_TABLE_SQL, TRUNCATE_PERSON_STATIC_COHORT_TABLE_SQL, - TRUNCATE_PERSON_DISTINCT_ID_OVERRIDES_TABLE_SQL, TRUNCATE_PERSON_TABLE_SQL, ) + from posthog.models.sessions.sql import TRUNCATE_SESSIONS_TABLE_SQL from posthog.session_recordings.sql.session_recording_event_sql import ( TRUNCATE_SESSION_RECORDING_EVENTS_TABLE_SQL, ) - from posthog.models.channel_type.sql import TRUNCATE_CHANNEL_DEFINITION_TABLE_SQL - from posthog.models.sessions.sql import TRUNCATE_SESSIONS_TABLE_SQL - from posthog.heatmaps.sql import TRUNCATE_HEATMAPS_TABLE_SQL # REMEMBER TO ADD ANY NEW CLICKHOUSE TABLES TO THIS ARRAY! TABLES_TO_CREATE_DROP = [ diff --git a/posthog/temporal/tests/batch_exports/conftest.py b/posthog/temporal/tests/batch_exports/conftest.py index 6664c3bd7f5b1..deebf15349e3a 100644 --- a/posthog/temporal/tests/batch_exports/conftest.py +++ b/posthog/temporal/tests/batch_exports/conftest.py @@ -1,3 +1,5 @@ +import asyncio + import psycopg import pytest import pytest_asyncio @@ -126,17 +128,28 @@ async def setup_postgres_test_db(postgres_config): @pytest_asyncio.fixture(scope="module", autouse=True) -async def create_batch_export_views(clickhouse_client, django_db_setup): +async def create_clickhouse_tables_and_views(clickhouse_client, django_db_setup): from posthog.batch_exports.sql import ( CREATE_EVENTS_BATCH_EXPORT_VIEW, CREATE_EVENTS_BATCH_EXPORT_VIEW_BACKFILL, CREATE_EVENTS_BATCH_EXPORT_VIEW_UNBOUNDED, CREATE_PERSONS_BATCH_EXPORT_VIEW, ) + from posthog.clickhouse.schema import CREATE_KAFKA_TABLE_QUERIES + + create_view_queries = ( + CREATE_EVENTS_BATCH_EXPORT_VIEW, + CREATE_EVENTS_BATCH_EXPORT_VIEW_BACKFILL, + CREATE_EVENTS_BATCH_EXPORT_VIEW_UNBOUNDED, + CREATE_PERSONS_BATCH_EXPORT_VIEW, + ) + + clickhouse_tasks = set() + for query in create_view_queries + CREATE_KAFKA_TABLE_QUERIES: + task = asyncio.create_task(clickhouse_client.execute_query(query)) + clickhouse_tasks.add(task) + task.add_done_callback(clickhouse_tasks.discard) - await clickhouse_client.execute_query(CREATE_EVENTS_BATCH_EXPORT_VIEW) - await clickhouse_client.execute_query(CREATE_EVENTS_BATCH_EXPORT_VIEW_BACKFILL) - await clickhouse_client.execute_query(CREATE_EVENTS_BATCH_EXPORT_VIEW_UNBOUNDED) - await clickhouse_client.execute_query(CREATE_PERSONS_BATCH_EXPORT_VIEW) + await asyncio.wait(clickhouse_tasks) return From 278a067dcb1e5dcbbb47827a08ec9fd2a370d0a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Wed, 19 Jun 2024 15:14:19 +0200 Subject: [PATCH 46/49] refactor: Remove coalesce and use only inserted_at in queries At this point, inserted_at should always be set for all batch exports. Only historical exports require _timestamp, but backfills have already been switched over to query based on timestamp, so they also do not need to check for inserted_at/_timestamp. Removing the colaesce and using only inserted_at reduces the size of the data CH has to fetch by half. --- posthog/batch_exports/sql.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/posthog/batch_exports/sql.py b/posthog/batch_exports/sql.py index 4e5c5318ff576..d8629459732d3 100644 --- a/posthog/batch_exports/sql.py +++ b/posthog/batch_exports/sql.py @@ -49,8 +49,8 @@ FROM events PREWHERE - COALESCE(events.inserted_at, events._timestamp) >= {interval_start:DateTime64} - AND COALESCE(events.inserted_at, events._timestamp) < {interval_end:DateTime64} + events.inserted_at >= {interval_start:DateTime64} + AND events.inserted_at < {interval_end:DateTime64} WHERE team_id = {team_id:Int64} AND events.timestamp >= {interval_start:DateTime64} - INTERVAL {lookback_days:Int32} DAY @@ -84,8 +84,8 @@ FROM events PREWHERE - COALESCE(events.inserted_at, events._timestamp) >= {interval_start:DateTime64} - AND COALESCE(events.inserted_at, events._timestamp) < {interval_end:DateTime64} + events.inserted_at >= {interval_start:DateTime64} + AND events.inserted_at < {interval_end:DateTime64} WHERE team_id = {team_id:Int64} AND (length({include_events:Array(String)}) = 0 OR event IN {include_events:Array(String)}) From 740188ba594907ca66639ea6827e1a259bf4ce45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Wed, 19 Jun 2024 15:34:36 +0200 Subject: [PATCH 47/49] fix: Remove deprecated test --- .../test_s3_batch_export_workflow.py | 75 ------------------- 1 file changed, 75 deletions(-) diff --git a/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py b/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py index dd0a58aea2131..9467b294b7107 100644 --- a/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py +++ b/posthog/temporal/tests/batch_exports/test_s3_batch_export_workflow.py @@ -826,81 +826,6 @@ async def test_s3_export_workflow_with_minio_bucket_and_a_lot_of_data( ) -async def test_s3_export_workflow_defaults_to_timestamp_on_null_inserted_at( - clickhouse_client, minio_client, bucket_name, compression, interval, s3_batch_export, s3_key_prefix, ateam -): - """Test the S3BatchExport Workflow end-to-end by using a local MinIO bucket instead of S3. - - This test is the same as test_s3_export_workflow_with_minio_bucket, but we create events with None as - inserted_at to assert we properly default to _timestamp. This is relevant for rows inserted before inserted_at - was added. - """ - data_interval_end = dt.datetime.fromisoformat("2023-04-25T14:30:00.000000+00:00") - data_interval_start = data_interval_end - s3_batch_export.interval_time_delta - - await generate_test_events_in_clickhouse( - client=clickhouse_client, - team_id=ateam.pk, - start_time=data_interval_start, - end_time=data_interval_end, - count=100, - count_outside_range=10, - count_other_team=10, - duplicate=True, - properties={"$browser": "Chrome", "$os": "Mac OS X"}, - person_properties={"utm_medium": "referral", "$initial_os": "Linux"}, - inserted_at=None, - ) - - workflow_id = str(uuid4()) - inputs = S3BatchExportInputs( - team_id=ateam.pk, - batch_export_id=str(s3_batch_export.id), - data_interval_end=data_interval_end.isoformat(), - interval=interval, - **s3_batch_export.destination.config, - ) - - async with await WorkflowEnvironment.start_time_skipping() as activity_environment: - async with Worker( - activity_environment.client, - task_queue=settings.TEMPORAL_TASK_QUEUE, - workflows=[S3BatchExportWorkflow], - activities=[ - start_batch_export_run, - insert_into_s3_activity, - finish_batch_export_run, - ], - workflow_runner=UnsandboxedWorkflowRunner(), - ): - await activity_environment.client.execute_workflow( - S3BatchExportWorkflow.run, - inputs, - id=workflow_id, - task_queue=settings.TEMPORAL_TASK_QUEUE, - retry_policy=RetryPolicy(maximum_attempts=1), - execution_timeout=dt.timedelta(seconds=10), - ) - - runs = await afetch_batch_export_runs(batch_export_id=s3_batch_export.id) - assert len(runs) == 1 - - run = runs[0] - assert run.status == "Completed" - assert run.records_completed == 100 - - await assert_clickhouse_records_in_s3( - s3_compatible_client=minio_client, - clickhouse_client=clickhouse_client, - bucket_name=bucket_name, - key_prefix=s3_key_prefix, - team_id=ateam.pk, - data_interval_start=data_interval_start, - data_interval_end=data_interval_end, - compression=compression, - ) - - @pytest.mark.parametrize( "s3_key_prefix", [ From 525c682cd7b829cd83b03f85fcc55f9d2c1363d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Thu, 20 Jun 2024 15:21:26 +0200 Subject: [PATCH 48/49] fix: Add person_id to person model and enforce ordering --- posthog/batch_exports/sql.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/posthog/batch_exports/sql.py b/posthog/batch_exports/sql.py index d8629459732d3..ba03f9f4bfd07 100644 --- a/posthog/batch_exports/sql.py +++ b/posthog/batch_exports/sql.py @@ -1,11 +1,11 @@ CREATE_PERSONS_BATCH_EXPORT_VIEW = """ CREATE OR REPLACE VIEW persons_batch_export AS ( SELECT - pd.team_id, - pd.distinct_id, - p.properties, - pd._timestamp AS _timestamp, - NOW64() AS _inserted_at + pd.team_id AS team_id, + pd.distinct_id AS distinct_id, + toString(p.id) AS person_id, + p.properties AS properties, + pd._timestamp AS _inserted_at FROM ( SELECT team_id, @@ -27,6 +27,8 @@ AND p.team_id = {team_id:Int64} AND pd._timestamp >= {interval_start:DateTime64} AND pd._timestamp < {interval_end:DateTime64} + ORDER BY + _inserted_at ) """ From 2eabe0cef1ad22a851a0afc157c89b6a480bfaba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Far=C3=ADas=20Santana?= Date: Fri, 21 Jun 2024 17:01:20 +0200 Subject: [PATCH 49/49] refactor: Also add version column --- posthog/batch_exports/sql.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/posthog/batch_exports/sql.py b/posthog/batch_exports/sql.py index ba03f9f4bfd07..8236ecb878f74 100644 --- a/posthog/batch_exports/sql.py +++ b/posthog/batch_exports/sql.py @@ -5,12 +5,14 @@ pd.distinct_id AS distinct_id, toString(p.id) AS person_id, p.properties AS properties, + pd.version AS version, pd._timestamp AS _inserted_at FROM ( SELECT team_id, distinct_id, - argMax(person_id, version) AS person_id, + max(version) AS version, + argMax(person_id, person_distinct_id2.version) AS person_id, max(_timestamp) AS _timestamp FROM person_distinct_id2