0
0
mirror of https://github.com/PostHog/posthog.git synced 2024-12-01 12:21:02 +01:00
Commit Graph

874 Commits

Author SHA1 Message Date
Neil Kakkar
50bbafa33b
Backend for trend experiment results (#7878)
* backend for trend experiment results

* address comment, remove flake

* sort out dependencies
2022-01-05 17:15:12 +00:00
Li Yi Yu
5d12386970
Experiments multivariate support FE (#7865)
* add experiment group variant options

* move integration instructions to view page

* redo experiment group multivariate flags frontend

* spacing

* typing

* move variants under parameters, allow variant deletion, and disable editing for control group variant

* rename control_group

* fix start_date keyerror

* update text

* temporary change

* fix variants limit

* fix start_date conditional again
2022-01-05 11:27:28 -05:00
Karl-Aksel Puulmann
9141996e1c
Proposal: Set time bounds for "all of time" filter (#7849)
* Set time bounds for "all of time" filter

We won't display data points from before 2015 anymore, avoiding
confusion like in https://github.com/PostHog/posthog/issues/7626

* Disable dates before 2015, add tooltip
2022-01-05 14:34:33 +02:00
Karl-Aksel Puulmann
2b58fc3f79
Proposal: Fix performance issues caused by actions page (#7855)
* Remove flipsort related logic

* Only load events from the last 6 months in events table

* Disable customization in actions tab

* Rename prop

* Dont poll events in actions page

* Show a different header above events table in actions page

* Update tests with frozen time

* Decouple months of actions tab with other months

* Calculate action count over 3 months

* Update tests
2022-01-05 13:57:20 +02:00
Karl-Aksel Puulmann
c2bddf09a2
Remove "minute" interval (#7847)
* Remove `minute` interval support from frontend

* Remove minute support from backend, default to hour instead

Also adds tests for interval logic

* Remove now-dead minute support from backend

* revert interval_candidate logic

* Move IntervalMixin to separate file
2022-01-05 13:11:58 +02:00
Karl-Aksel Puulmann
e5ee7b4270
Read from and write to person_distinct_id2 if async migration is done (#7846)
* Run queries against person_distinct_id2 when async migration is done

* Only write to clickhouse_person_unique_id topic if async migration is incomplete

* Update query snapshots

* Update plugin-server

* Adjust caching logic
2022-01-05 13:11:33 +02:00
Karl-Aksel Puulmann
2139a6e204
Add measure.sh helper script to repo (#7877) 2022-01-05 12:46:08 +02:00
Neil Kakkar
8d7614bc7c
Multivariate Experiment backend creation flow (#7884)
* enable creating multivariate experiments
2022-01-04 15:55:58 +00:00
Harry Waye
a819069128
chore(pdi): add data migration for pdi to pdi2 (#7792)
* chore(pdi): add data migration for pdi to pdi2

This adds an async migration to copy the latest non-deleted
`(team_id, person_id, distinct_id)` tuples from `pdi` to `pdi2`.

Note that this has already be performed for tead_id = 2 on posthog,
cloud so we ensure we're maintaining parity with however this
migration was performed. I've done this by running:

```
SELECT * FROM <old_query>
FULL JOIN <new_query> new
    ON old.distinct_id = new.distinct_id
WHERE old.person_id <> new.person_id
```

specifically for team_id = 2.

* Rename migration

* Skip 0003_fill_person_distinct_id2 on fresh installs

* Clarify version requirements

* Run async migrations using a while-loop instead of tail recursion

Python has a stack limit of 1000, which we might easily run into for
0003 migration

* Use built-in progress tracking

* Make description fit into database 400 char limit

* Add correctness test for new async migration

* Migrate person_distinct_id2 team-by-team

* Remove dead code

* Update migration notes

* Fix foss tests

Co-authored-by: Karl-Aksel Puulmann <oxymaccy@gmail.com>
2022-01-04 15:34:12 +02:00
Karl-Aksel Puulmann
3d8bcdfae0
Kill a dead filter type (#7850) 2021-12-29 08:45:37 +02:00
Karl-Aksel Puulmann
f3fc669cda
Add benchmark for earliest timestamp sql (#7848) 2021-12-28 15:16:47 +02:00
Karl-Aksel Puulmann
f7d9c21dcf
Respect person_distinct_id2 in split_person (#7815)
* Keep person_distinct_id2 in sync on split_person

Follow-up to https://github.com/PostHog/posthog/pull/7671, covering a
new corner case.

* Deprecate some methods

* Handle versioning in split_person

* Select for update
2021-12-27 16:25:20 +02:00
Paul D'Ambra
30ba578ea3
Query events by date for properties known to be dates (#7608)
* query events by date for properties known to be dates

* can't currently import journeys_for helper outside of ee folder

* actually remove the EE import

* even though no values of the specified property were not parseable account for unparseable values

* move tests into EE folder cos they're clickhouse only

* remove new line to take this file out of the PR diff

* use more forgiving ClickHouse datetime function

* wip

* add more tests and rename filters

* Adds a broken date picker behind a feature flag

* Revert "wip"

This reverts commit 6ec1da8744.

* add working basic UI for date selection in taxonomic property filter

* add a failing test by writing a unix timestamp the way the SDK does

* obey mypy

* add awareness of type and format so we can query our $time property as a DateTime in the events api

* hard code property definition in the eventsTableLogic

* Revert "obey mypy"

This reverts commit f09ae4369a.

* hold taxonomic property filter open - but with possible kludge in cohortsModel

* remove my edits to settings

* put back materialization of columns that test snapshots are expecting

* let the datepicker hold the taxonomic pop up open

* update snapshot

* simpler datepicker visibility in filter row

* simplify property type format for unix timestamps

* remove the datepicker now button

* Actually delete all of the drop down held open tests

* Remove leftover `console.log`s

Co-authored-by: Michael Matloka <dev@twixes.com>
2021-12-22 13:58:59 +00:00
Paul D'Ambra
bdfe09a06b
Add type and format to property definition (#7804)
* add property type and format and set them for

* add a failing test

* with passing tests on the ee property definition model

* Add a migration to set  as a DateTime

* Clarify in failing test that it's only list lookup failing

* add empty property definition fields to assertions

* fix merge error

* clarify tests

* add more supported types
2021-12-22 10:48:15 +00:00
Marius Andra
51b2940ddd
Event properties in filter (#7718)
* create event property model

* add null

* rename cache vars

* update event properties table on ingestion

* match date formats

* match date formats

* better string handling

* property type can be null too

* pass event timestamp

* update property type later

* perform all updates through a buffer object

* move to EventPropertyCounter

* fix migration

* improve flush last seen at job

* flush job periodically + env

* upsert all event properties in 1 query

* log to statsd

* enable property counter only if experimental mode enabled

* use now() instead of event timestamp

* fix seconds

* add user/pass for default postgres

* add tests

* use big integers

* make query work with 50k props

* processing events saves event properties

* fix script

* test date format detection

* default enabled

* only enable event property counter for specific teams

* eslint fixes

* fix logs double-sync noise in tests

* fix bigint test

* don't do tasks that make no sense

* remove dead code

* proof of concept

* remove old <PropertyFilter> component

* change import paths

* event properties sorted by event names

* get event names from actions if used

* scope event property filters by event names

* fix eslint

* simpler test setup

* different contraint name

* refactor team manager

* greatly simplify the system

* fetch cached event properties

* fix team manager and timestamps

* add cached entry

* also don't cache event properties for teams that have it disabled

* remove indexes that are not going to be used

* remove unused imports

* blacked

* remember event properties with a LRU cache

* fix eslint

* clean up the last bits

* remove fields we no longer have

* add some instrumentation to figure out what services we can connect to (helps debug errors locally with kafka)

* Update frontend/src/types.ts

Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>

* merge duplicate code

* use the right prop for event names

* mute unseen events, add info icon

* use the event-property tracker also for non-EE clients

* simplify duplicates

* add test for event properties

* add test for non-EE event properties

* add flag

* revert the label and unmute the text

* change the flag to UNSEEN_EVENT_PROPERTIES

* sort by query_usage_30_day again

* Update frontend/src/types.ts

Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>

* use None if no event_names

* fix type

* improve pagination test

Co-authored-by: Paolo D'Amico <paolodamico@users.noreply.github.com>
2021-12-21 16:27:12 +00:00
Karl-Aksel Puulmann
afce8efafb
Add benchmark for funnel query (#7813)
* Add benchmark for funnel query

Testing new sorting order takes the benchmark from 3.5s -> 1.5s \o/

* Update snapshots
2021-12-21 13:09:00 +02:00
Eric Duong
558559c5c7
[temp] increase timeout execution query check for retention (#7794)
* increase timeout execution query check

* snapshot

* pass as arg
2021-12-20 19:07:55 -05:00
Yakko Majuri
3f6b4ecb76
fix migration details changed but name is the same (#7783) 2021-12-17 10:51:25 -08:00
Yakko Majuri
27ac13bb81
0002_events_sample_by (#7778)
* 0002_events_sample_by

* fix order by

* fix test

* update comment

* fix types

* fix test

* fix snapshot tests
2021-12-17 10:41:15 -08:00
Harry Waye
fdb4255303
chore(lifecycle): add comments and CTEs to clickhouse sql (#7773)
* chore(lifecycle): add comments and CTEs to clickhouse sql

It was really big and confusing, but hopefully this clarifies a little
what is going on. As a followup PR I'll be doing some work to make the
query faster :fingerscrossed: but I think worth at least getting this
in, assuming I haven't broken any tests!

* update snapshots

* remove day references

* update snapshots
2021-12-17 17:09:28 +00:00
Harry Waye
83386a5512
fix(retention): add regression test for not_icontains filter (#7748)
* fix(retention): add regression test for not_icontains filter

Previously if using the not_icontains filter, we were trying to double
substitute a query when fetching persons for retention. This adds a
test (and in the next commit a fix) such that we instead apply the
clickhouse substitute only once to each part of the query.

Resolves https://github.com/PostHog/posthog/issues/7747

* avoid double substitution

* Rework solution to not change ActorBaseQuery interface

* Remove unued import

* fix typing
2021-12-17 10:13:38 +00:00
Harry Waye
5fb811a365
perf(lifecycle): add benchmark for lifecycle (#7753)
* perf(lifecycle): add benchmark for lifecycle

* Add some notes on running benchmarks locally
2021-12-17 09:36:49 +00:00
Paolo D'Amico
2654bb3a34
Release multivariate flags (#7650) 2021-12-16 11:10:29 -06:00
Eric Duong
fd49c6a9cc
[fix] Cohort 0 count bug fix (#7742) 2021-12-16 10:38:41 -06:00
Li Yi Yu
9eb989a473
Experiment create cleanup 2 (#7741)
Co-authored-by: Neil Kakkar <neilkakkar@gmail.com>
2021-12-16 15:09:47 +00:00
James Greenhill
2440f945f1
Use a helper to get env var for saml (#7744) 2021-12-15 21:45:51 -06:00
Rick Marron
f641e6b679
Multiple window_id player (#7564)
* it works...

* clean up server side

* move logic from query to helpers/api

* typing fixes

* add tests to helpers

* test for metadata queries

* api tests

* util tests

* improve some types and move logic to utils

* Get PlayerMeta working

* tests for sessionRecordingPlayerLogic

* fix some more tests

* analytics fix

* name flip

* player util tests

* Add comments + remove logs

* Clean up some comments

* make is_active a bit cleaner

* remove some log statements

* add comment to metadata function

* some cleanup

* typescript fix

* timestamp plays follows scrubbing

* fix bug with hitting 60 seconds

* fix end position bug

* fix bugs with skip ahead

* fix some bugs

* fix white screen on buffer end

* fix buffer scrubbing bugs

* fix skip bug

* fix circular import

* rename start_window_id to last_active_window_id

* fix tests

* bug fix for no window_id case

* fix bug when scrubbing to the end of the player

* rename setBuffer + setScrub to startBuffer + startScrub
2021-12-15 15:17:15 -08:00
Eric Duong
30b5658fb3
[fix] Make sure ordering is consistent (#7738)
* make sure ordering is consistent

* ordering
2021-12-15 15:25:56 -05:00
Harry Waye
c595976779
fix(retention): fix breakdown people urls (#7642)
* fix(retention): fix breakdown people urls

This change returns people_url for each breakdown cohort in the
response. We also merge the initial and returning queries together,
as this makes it easier to align the people query also.

Note that I'm talking about person_id as opposed to actor_type etc.
but perhaps that can be a followup.

* clean up clickhouse params

* tidy up a little

* remove import

* remove non-breakdown specific code

* make cohort by initial event date a special breakdown case

* keep date for backwards compat

* Remove unused sql

* make test stable

* wip

* Get most of the tests working

* test(retention): remove graph retention test

We no longer need this, we have all the information we need from the
table response for retention, and can construct this on the frontend.

* revert any changes to posthog/queries/retention.py

* revert any changes to ee/clickhouse/models/person.py

* Revert posthog/queries/retention.py to merge-base

* Ensure actor id is a str

* Add type for actor serialiser for type narrowing

* run black

* sort imports

* Remove retention_actors.py

* fix typings

* format

* reverse str type

* sort imports

* rename

* split out functions

* remove deuplicate logic

* working

* fix type

* don't stringify

* fix test

* ordering doesn't matter

* trigger ci

Co-authored-by: eric <eeoneric@gmail.com>
2021-12-15 18:20:56 +00:00
Yakko Majuri
574e495b76
Async migration 0001: Change events table SAMPLE BY (#7706)
Co-authored-by: James Greenhill <fuzionech@gmail.com>
2021-12-15 08:29:53 -06:00
Karl-Aksel Puulmann
c2cfcb0db6
Remove hooks for person/person_distinct_id deletion (#7671)
* Make person hooks only happen in tests

* Remove a data script

* Update split_person code to handle hookless life

* Delete clickhouse data async in the background
2021-12-15 15:45:10 +02:00
James Greenhill
ab0c75414b
Make settings dynamic for MATERIALIZED_COLUMNS_ENABLED (#7662)
* Make settings dynamic for MATERIALIZED_COLUMNS_ENABLED

* migrate MATERIALIZED_COLUMNS_ENABLED to this and test

* allow tests that use materialized columns to hit django model for settings

* nicer installed apps config

* update snapshot from test

* make test_property more deterministic

Co-authored-by: James Greenhill <fuzionech@gmail.com>
Co-authored-by: yakkomajuri <yakko.majuri@gmail.com>
2021-12-14 17:56:08 -08:00
Michael Matloka
834661d9c0
Make sure private projects stay secret for those without access (#7688) 2021-12-14 16:41:48 -06:00
Eric Duong
ae40b03932
fix cohort 0 argument (#7699) 2021-12-14 11:02:17 -05:00
Yakko Majuri
3f85aa4c47
special migration -> async migration (#7686)
* special migration -> async migration

* rename frontend dir

* format

* rename SPECIAL_MIGRATION
2021-12-14 11:48:51 -03:00
Neil Kakkar
a78dde851b
Experiment Results Detail Page (#7606)
Co-authored-by: Li Yi Yu <li@posthog.com>
2021-12-14 12:37:36 +00:00
Yakko Majuri
b56b141126
Special Migrations Runner (#7054 pt. 4) (#7446)
* add special migration definition and example

* types

* special migrations runner

* fix tests

* fix tests 2

* add clickhouse runner

* add temp fix for tests

* wip

* add special migrations api (#7448)

* wip new structure

* update example sourcing

* Update .gitignore

* yet another wip structure

* code quality

* cypress

* test docker image build

* implement resumable ops

* code quality

* add comments

* add warning

* add conditional requirements for migration

* add comment on is_required

* add dependency map

* wip dependencies and run migration on startup

* code quality

* fix bugs

* fix more bugs

* format

* types

* remove api from this branch

* types

* types

* update clickhouse script

* add is_migration_in_range util

* fix type

* fix runner

* add AUTO_START_SPECIAL_MIGRATIONS env var

* reset migration on start

* cleanup

* wip per op rollback

* prevent accidental status rollback

* add utils and definition test

* update example with rollback per op

* wip test special migration

* add first runner tests

* add runner tests

* add util for code paths

* fix test

* fix types

* fix types again

* cleanup

* cleanup

* add periodic healthcheck task tests

* remove unused imports

* safer row updates

* fix coalescing none checks

* code quality

* add docstrings

* fix

* fix deploys issue

* update scripts

* add delay

* address reviews

* address review comments

* address review comments

* address final comments

* fix import error

* fix tests

* remove unused imports

* fix tests

* fix task test

* remove unused return value

* remove unused special migrations code from migrate_clickhouse

* tweaks to support fresh deployments
2021-12-13 13:00:27 -03:00
Karl-Aksel Puulmann
75a508b4a3
Resolve another insights N+1 issue (#7628)
* Resolve another insights N+1 issue

Using `prefetch_related` to avoid loading the same dashboard/user
multiple times if referred to by different insights. More queries _can_
be better! :)

* Improve the test

* Get test stable, add created_by user
2021-12-10 14:57:05 +01:00
Marius Andra
1696ed5950
Update mypy and typed-ast, fail early if db version not in range (#7599)
* error if unsupported db version

* upgrade mypy

* fix various types for mypy

* you can have it in any color you want, as long as it's black

* fix mypy

* Update `kafka-python`

* Format with Black

* Fix mypy after merge

Co-authored-by: Michael Matloka <dev@twixes.com>
2021-12-10 09:29:04 +01:00
Karl-Aksel Puulmann
0cc07ab581
Groups: Improve list experience (#7600)
* Order by created_at over id in groups list, similar to persons

* Change table column name to be consistent with persons

* Default to `.name` property if one is passed for groups

This improves a usability issue with groups temporarily
2021-12-10 00:28:35 +02:00
Neil Kakkar
ea361bab9d
Experimentations List view (#7584) 2021-12-09 15:25:26 +00:00
Eric Duong
a051f7ee1f
[actors] retention actors (#7495)
* convert to actor form

* change var name

* remove unused imports

* typing issue

* use subquery

* bad import

* groups for general retention query

* actor in period

* update imports

* update test

* remove comment
2021-12-09 10:11:21 -05:00
Karl-Aksel Puulmann
c32f214d63
Track organization groups usage (#7597) 2021-12-09 15:51:24 +02:00
Neil Kakkar
c32b3a88c8
Experimentation backend (#7492) 2021-12-09 10:24:03 +00:00
Karl-Aksel Puulmann
d8a3b9e89f
Groups: Introduction banner and empty state in persons page (#7520)
* Add group analytics to list of paid features

* Add team-level property for if any group types exist

* WIP: Groups introduction page

* Finish initial empty state page

* Hide upsell if not CH or flag not live

* Extract upsell-related logic into a separate logic to avoid loading data unless needed

* Extract upgradeLink

* Extract announcement logic

* Overcomplicate announcements

* Show initial groups announcement.

* Vary banner content according to groups access status

* Clean up access logic

* Misc announcements improvement

* Add a feature flag for groups announcement given docs are not yet ready

* Keep color for visited button links

* Get groupsList logic tests working

teamLogic <-> userLogic test connection needed to be severed alongside
this
2021-12-09 08:37:39 +02:00
Paolo D'Amico
73809d54b1
Fix EE serializer for EventDefinition (last seen at) (#7580) 2021-12-08 09:03:34 -07:00
Karl-Aksel Puulmann
78a787bc3b
Create and populate person_distinct_id2 table, add versioning to person_distinct_id (#7576)
* Migration to add version to person_distinct_id

* Update plugin-server type

* Use queueMessages instead of for loops

* Update distinct id versions in postgres

* Add commented out new query

* Add person_distinct_id2 table setup/migration

This will be used for more efficient person_distinct_id queries

* Avoid sharding person_distinct_id2 on cloud

* Write to new distinct ids topic

* Attempt to use version in tests

* Tests attempt 2

* Fixup version - dont send with all messages

* Flush kafka more frequently

* Actually fix tests

* Add another await

* Add partition to person_distinct_id2 table
2021-12-08 16:47:57 +02:00
Karl-Aksel Puulmann
ba405c823c
Add snapshot tests for clickhouse table schemas (#7572)
* Add a comment to keep topics in sync

* Clean up code relating to table engines

* Add snapshots for table creation queries

* Remove optional import

* Add snapshot tests for CLICKHOUSE_REPLICATION schemas

Note that these are out of sync with cloud in most cases

* Add another warning comment

* Improve naming
2021-12-08 16:07:34 +02:00
Karl-Aksel Puulmann
3a4beda2ad
Speed up person_distinct_id queries for select clients (#7577)
* Create a new way to get distinct id queries thats gated by team_id

* Update most cases to use the new query

* Convert EVENT_JOIN_PERSON_SQL to new query

* Mostly convert GET_DISTINCT_IDS_BY_PERSON_ID_FILTER

* Mostly convert GET_DISTINCT_IDS_BY_PROPERTY_SQL

* Convert GET_PERSON_IDS_BY_FILTER

* Flag benchmarks

* Resolve circular imports

* Update a snapshot test

* Add a test for the new query logic
2021-12-08 15:59:41 +02:00
Eric Duong
cb470c160e
Change timeout to check execution time to 60 seconds (#7562)
* change timeout to 60 seconds

* update snapshots
2021-12-07 18:23:39 +00:00