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

780 Commits

Author SHA1 Message Date
James Greenhill
5c1baa039b
Resurrect "Persons table schema migration" (#7199)
* Revert "Revert "Persons table schema migration (#6667)" (#7198)"

This reverts commit 311452bca5.

* CREATE TABLE AS

* ON CLUSTER

* prefix database
2021-11-17 23:09:11 -08:00
James Greenhill
311452bca5
Revert "Persons table schema migration (#6667)" (#7198)
This reverts commit 54f23498dc.
2021-11-17 22:29:38 -08:00
Yakko Majuri
54f23498dc
Persons table schema migration (#6667)
* WIP persons table schema migration

* add version to create_person

* test increased timeout

* Update ee/clickhouse/migrations/0019_person_table_version_column.py

* remove flaky kafka test

* format

* test a new approach - make this a non-large migration?

* Update ee/clickhouse/migrations/0021_person_table_version_column.py

* update
2021-11-17 21:19:50 -08:00
Tim Glaser
1d7477f512
Make project based permissioning an enterprise feature (#7163) 2021-11-17 08:08:31 -06:00
Karl-Aksel Puulmann
88db4845f4
Speed up stickiness queries & allow aggregating/filtering by groups (#7117)
* Refactor stickiness to have its own event_query

This will speed up queries significantly and allow for filtering by
group properties

* Use same event_query for stickiness people

* Minor cleanup

* Add tests (and missing file) to group filtering in stickiness

* Allow aggregating by groups in stickiness

* Show group property filters in FE for stickiness
2021-11-17 12:49:49 +02:00
Paul D'Ambra
626efb9490
Convert funnel tests to journey helper (#7111)
* convert the smallest of the funnel test files

* convert unorder funnel person test to journey for helper

* convert another file

* convert another file

* convert another file

* convert another file

* convert another file

* undelete snapshot files

* undelete snapshot files

* Revert "convert another file"

This reverts commit ef08511509.
2021-11-17 08:18:16 +00:00
Eric Duong
b7667f528f
fix issue when breaking down on group property and trying to return persons (#7145) 2021-11-16 09:39:48 +02:00
Rick Marron
c55e834bc1
include elements chain in recordings query when needed (#7147) 2021-11-15 18:35:45 -08:00
Rick Marron
60545e9c93
Recording query improvements (#7006)
* seperate clickhouse and postgres queries

* move to single query

* remove ununsed imports

* fix cohort + subquery issues

* some cleanup

* fix mypy issue

* fixes to query + tests

* add test for person and cohort properties

* remove cruft

* fix api tests

* Remove cohort + person prop filter from postgres

* move cohort and person property tests to clickhouse

* Filter down events

* typing fix

* fix test

* remove unneeded snapshot

* tests working with snapshots

* switch limit to property

* use materialized columns

* move to new distinct_id query

* add snapshots

* fix materialized column bug

* support cohort and person prop filters

* add person and cohort filtering

* remove cohort filtering from clickhouse

* small tweaks

* Lint fix
2021-11-15 16:15:37 -08:00
Harry Waye
a9e615cf45
feat(funnels): update frontend to use new people_urls in response (#7099)
* remove cohort comment

* feat(funnels): update frontend to use new people_urls in response

This change updates the `FunnelBarGraph` and `FunnelStepTable`
components to use the new `converted_people_url` and
`dropped_poeple_url` in the funnels response.

I need to check that this covers all the cases for funnels. I've only
added people urls for funnels of type step for ordered/unordered/strict
and haven't yet touched the time bins and conversion time funnel
endpoint variants.

* add /some/people/url/ to tests

* chore: add action back, update tests to reference it

* fix typing
2021-11-15 18:32:23 +00:00
Eric Duong
c7158fc895
[testing] Organize api tests (#7110)
* move tests

* update compare test

* use latest format

* typing
2021-11-15 13:12:18 -05:00
Karl-Aksel Puulmann
bf28d14aed
Add some benchmarks for stickiness (#7116)
* Add benchmarks for stickiness

* Don't require get_earliest_timestamp always

* Improve benchmark
2021-11-15 13:38:11 +02:00
Li Yi Yu
e0fe499a05
Groups pages table (#7039)
* wip

* get list of groups

* move backend endpoints

* frontend wip

* fix routes for groups

* add groups file

* try to fix tab nav

* fix groups query

* reformat results, add limits and offsets and next url

* move groups pages logic into own file

* fix and clean up tabs

* account for pagination and response reformatting

* lint fixes

* optional prev input

* typescript errors

* typescript fixes

* address feedback comments

* groups list logic test

* render properties expandable row

* fix test and lints

* prettier

* simplify table column title

* Fix a typing issue

* Use enum > boolean parameter

This makes what's going on more explicit

* Turn off pagination at the bottom of the table

* Rename table column

* Make pagination in groups work

Quite bugs fixed:
1. `previous` page was always shown, even if going into negative offsets
2. query_result could never be larger than `limit` with the code

* Cleanup code

* Make sidenav active under persons

* Use the correct query

* Add tests for pagination

* Update wording again

Co-authored-by: Karl-Aksel Puulmann <oxymaccy@gmail.com>
2021-11-15 11:08:13 +02:00
Paul D'Ambra
3a323f361d
batch insert events in the test journey helper (#7108) 2021-11-12 19:33:55 +00:00
Eric Duong
48a6302f6f
[trends] Cumulative fix (#7041)
* cumulative dau for non breakdown

* breakdown case

* clean up test

* add trends request util

* use simpler test util

* types

* insight tests

* add snapshots

* black
2021-11-12 14:27:28 -05:00
Harry Waye
31b4919177
Make get people test ids sorted, remove flakiness (#7107)
I introduced some flakiness in introducing this, it seems indeterministic so need to sort before compare
2021-11-12 18:48:35 +00:00
Paul D'Ambra
19fd07dc87
Convert breakdown_cases to new test helper (#7098)
* adds a first draft of a test helper for clearer event setup in tests

* one spelling of journeys

* obey the type checker

* convert all of breakdown_cases to the new test helper

* Removes unused helper method
2021-11-12 18:33:20 +00:00
Eric Duong
f2108564e2
[trends] Fix compare persons onclick (#7075)
* fix frontend

* temp test
2021-11-12 13:12:23 -05:00
Harry Waye
2550fb26c6
feat(funnel-people): return converted/dropped people url in funnel (#7057)
* test(funnel-people): add tests for converted/dropped people urls

As per https://github.com/PostHog/posthog/issues/6935 we are adding urls
to responses to attempt to improve consistency between insight responses
and the people we display in the UI.

This simply adds tests for these urls, just for funnel step response
shape. The other two types of response will be handled separately.

* feat(funnel-people): return converted/dropped people url in funnel

Here I have simply added converted / dropped urls in the base funnel.
This touches both clickhouse and postgres functionality, so I will
probably add in tests for postgres also, or just disable to postgres.

It doesn't pass yet as there is an issue in that the order appears to be
ignored by the people endpoint.

* fix(funnels): actually use strict/unordered persons querying

Previously we were always using the standard `ClickhouseFunnelPersons`
class for retrieving people from the `/api/persons/funnel/` endpoint.
This change selects from the unordered and strict variants based on the
`funnel_order_type` setting.

Refers to https://github.com/PostHog/posthog/issues/7058 although there
is a frontend component to add that will truely resolve the issue.

* feat(funnel-people): add people urls for funnels with breakdown

In this I have also removed any changes from the non-clickhouse code.
Note that there are two places I've added the url generation code, one
in the `ClickhouseFunnelBase` and another in the `ClickhouseFunnel`

I think the former covers the unordered and strict cases, and the later
for the breakdown case. I think there are further test that I'll need to
add to validate e.g. if breakdown + strict work as expected.

* Fix people urls for unordered funnels + breakdown

* test: add test for strict breakdown with people urls

* make funnel response assertions not check people url equality

* fix typing

* fix tests

* remove new line in postgres funnel.py

* clear cache on insight test start

* no really, clear the cache

* remove flakiness from strict funnel test

* correct the unordered test

* use absolute uris

* use step.index not step.order

* remove out of date comment

* use step.index, not step.order

* use step.index, remove unordered funnels comment

* use journeys_for instead of create_events
2021-11-12 14:50:39 +00:00
Karl-Aksel Puulmann
6344db46a5
Validate group_type_index in properties/entities (#7087)
* Validate group_type_index in properties/entities

This avoids injection-like problems

* Update import path

* No circular import
2021-11-12 14:31:55 +02:00
Paul D'Ambra
1458f07163
Adds a first draft of a test helper for clearer event setup in tests (#7095)
* adds a first draft of a test helper for clearer event setup in tests

* one spelling of journeys

* obey the type checker
2021-11-12 12:26:07 +00:00
Neil Kakkar
13a93098cc
Enable different Property lists based on group type for Property Correlations (#7093)
* Enable different property lists based on group type

* fix test again
2021-11-12 11:45:31 +00:00
Neil Kakkar
7a5bb93e2a
Enable Correlations for Groups (#7056)
* enable correlations for groups

* address comments, refactor bits

* address comments
2021-11-12 11:32:55 +00:00
Eric Duong
d6d924af1d
[funnel] remove funnel persons on data return (#7044)
* remove funnel persons on data return

* remove person checks

* update tests

* remove comment

* add comment

* snapshots
2021-11-11 13:19:20 -05:00
Paul D'Ambra
f319948b2e
Add test helper method (#7053)
* add test_helper_methods

* move all the tests where the properties are the same for all events to the journey helper

* compare funnel results without caring about person order

* spell words correcterly

* Revert "spell words correcterly"

This reverts commit befb83b183.

* Revert "compare funnel results without caring about person order"

This reverts commit 268927b8ba.

* correct types for test props
2021-11-11 13:34:13 +00:00
Neil Kakkar
200caa6b6a
Correlation Persons for properties (#7052)
* Introduce funnel correlation person properties endpoint

* add snapshots

* address comments
2021-11-11 11:31:14 +00:00
Eric Duong
e5503cfd26
remove changing timestamp (#7046) 2021-11-11 11:30:50 +00:00
Eric Duong
74777d1bee
missing indent (#7042) 2021-11-10 23:52:48 +00:00
Eric Duong
5d264b6c7d
[insights—persons] Trends person urls (#6966)
* basic backend implementation

* fix backend url formatting

* frontend

* provide params alongside url

* remove console log

* remove load function

* aggregate handling

* aggregate test

* update tests

* add pie handling

* type

* aggregate breakdown

* check jsonextract on properties

* make all tests work

* actionsbarvalue

* use new function

* remove url

* typing and cleanup

* use api.get

* typing

* cumulative

* add breakdown
2021-11-10 16:54:51 -05:00
Li Yi Yu
cd10555607
Groups property values (#6967)
* add groups property values

* update groups property tests

* newline

* fix

* update test

* python black

* clean up tests

* rename to endpoint in operator value select

* add empty property values test

* do not return in an array

* fix
2021-11-10 12:03:17 -05:00
Harry Waye
7989fd24b8
Revert "Revert "feat(correlation): use people_url to load people modal (#6992)" (#7029)" (#7032)
This reverts commit de15fcda3f.
2021-11-10 15:50:32 +00:00
Harry Waye
de15fcda3f
Revert "feat(correlation): use people_url to load people modal (#6992)" (#7029)
This reverts commit 7bca1b78c1.
2021-11-10 14:09:45 +00:00
Harry Waye
7bca1b78c1
feat(correlation): use people_url to load people modal (#6992)
* feat(correlation): use people_url to load people modal

This change adds a new method to the `personsModelLogic` to allow for
specifying a url to be used to retrieve people from. I've avoided
overloading the existing `loadPeople` and rather added a new one,
`lostPeopleFromUrl`.

Currenlty this is only being used by correlations, but the intention is
to extend it's usage to anywhere else that is performing drilldowns to
people from, for instance, the trends aggregation.

* add paycard back

* make labels look right

* remove unused code

* fix typing in test

* fix typing in personsModelLogic

* refactor to make eventUsageLogic work

* fix typing

* fix typing again

* remove some funnel stories

* get storybook working with paycard

* cleaned up the interface a little

* chore(correlation): use `api.get` for fetching people

This updates to use api.get, and also converts the returned uri from the
correlation endpoint to an absolut uri, instead of just an absolute
path.

The `api.get` method expects either an abolute uri, or a relative path.
I'd rather not use an relative path as it's not obvious what it should
be relative to.

* fix tests

* make storybook uris absolute
2021-11-10 12:54:48 +00:00
Neil Kakkar
62af72bf22
Paths filtering by Groups backend (#7008)
* Paths filtering by groups backend

* update correlation tests, now that CTEs are included in sqls

* use decorator for materialising to ensure clean up happens

* cleanup offending tests
2021-11-10 09:47:02 +00:00
Harry Waye
d8e1799ed1
feat(correlations): add people by property to correlation response (#6951)
* feat(correlation): add people drill down urls for event correlation

This change simply adds urls in the response of the correlation endpoint
for each correlation returned. Note that this only adds support when
using correlation_type=events, as the
correlation_type=events_with_properties requires further changes that
I'd like the separate out to keep this PR small.

* feat(correlations): add people by property to correlation response

This commit covers the PROPERTIES case for making sure we return a url
that can be used to retrieve the people associated with a correlation,
either success or failure. This case is a completely different url than
for the events people endpoint as we are reusing the funnel people
endpoint, and filtering by "funnel_step_breakdown".

I'm uncertain if this is actually the correct url at this point in time,
as I have just attempted to copy what I have seen in the request from
the live running app.

* fix test

* Remove another param

* fix mypy typing

* Fix tests

* Add url response support for event_with_properties

* remove type assertion

* remove variable hack

* Remove funnel_steps

* use with_data and to_params

* Remove comment regarding complexity, it seems to pass the tests so...

* Add autocapture support for people url

* refactor people url construction a little

* remove properties attr for event people request

* fix if

* no really, fix if not None

* Remove _assert_never, mypy needs updating

* Fix no return mypy error

* Remove json.dumps
2021-11-09 12:10:40 +00:00
Karl-Aksel Puulmann
34264e697f
Log cohort recalculations on clickhouse (#6973)
* Log cohort recalculations on clickhouse

This should help debug both cohort-related data quality issues.

* Modify test query a bit
2021-11-09 12:36:58 +02:00
Neil Kakkar
bd5c74ef03
Funnel groups breakdown (#6944)
* Enable breakdowns

* update team

* clean up

* run all breakdown tests, address review comments
2021-11-09 09:12:17 +00:00
Neil Kakkar
82352c4a62
Funnel Groups filtering (#6940)
* enable groups filtering

* rerun snapshots

* update team

* fix tests
2021-11-09 08:32:55 +00:00
Rick Marron
b78499d61a
Ingest window_id for recordings (#6806)
* add window-id to ingestion

* move window_id into snapshot data

* Add tests

* add window_id to snapshot_data only if included in the event

* add window_id to session_recording_events table

* revert ph-js downgrade

* fix data generator

* remove partition change

* update window_id defaults for tests

* missed one window_id default

* rename migration for conflict
2021-11-08 14:29:54 -08:00
Eric Duong
06bdd1d486
[local testing] Track executed migrations when locally testing (#6915)
* experiment with saving a migrations table

* change flow

* change names

* missing var
2021-11-08 10:40:05 -05:00
Karl-Aksel Puulmann
a39596c092
Groups: Use materialized columns for groups (#6938)
* Migration to use materialized columns for groups

Workaround for https://github.com/PostHog/posthog/issues/6422

* Use groups materialized columns in queries

* Update mat column creation tests

* Simplify aggregation_target_field

* Fix migration

* Update snapshots
2021-11-08 15:49:39 +02:00
Neil Kakkar
d2fe491bfc
Funnel Groups: Rename person_id to aggregation_target (#6939)
* smallest change to make aggregation work

* address comments

* add snapshot

* move function to groups model

* update funnel snapshot

* rename person_id to aggregation_target

* update snapshots as well

* dont support persons query mods for now

* update snapshot

* make array orders deterministic
2021-11-08 14:45:13 +02:00
Neil Kakkar
a400296266
Backend: Groups Aggregation on Funnels (#6937)
* smallest change to make aggregation work
* use team in filter
2021-11-08 11:29:56 +00:00
Karl-Aksel Puulmann
0353b2f26f
BE (Groups/Trends): Testing follow-up PR (#6923)
* Improve process_math

* Add test for overlapping group keys

* Improve event query tests

* Add test for filtering by person properties together with groups

* Avoid flaky tests due to cohort_id changing

* Update queries and snapshots
2021-11-08 10:52:10 +02:00
Karl-Aksel Puulmann
7493f76802
BE (Groups/Retention): Support aggregating by groups (#6922)
* Add groups stuff

* Rename column from person_id to `target` in retention queries

No behavioral change, preparing for groups work :)

* Remove dead if statement

* WIP: Retention aggregation by groups

* Handle aggregation by groups in retention

Also handles the case where not every event has a property defined

* Test groups validation mixin

* Reformat

* Improve test for aggregation in retention
2021-11-08 09:23:02 +02:00
Karl-Aksel Puulmann
d5d5fcd32b
WIP: Groups FE filtering (#6764)
* Add /api/projects/@current/groups/property_definitions

To load property definitions for groups

* Add routes for fetching group types

* FE: Group analytics feature flag

* FE: Group analytics base types for properties

* FE: Initial implementation of fetching logics

* add group tabs to filter

* make sure group properties populate and refactor things

* prettier

* disable unused vars

* allow indexing objects by number

* mount group properties logic

Co-authored-by: Li Yi Yu <li@posthog.com>
2021-11-05 10:21:28 -04:00
Karl-Aksel Puulmann
ea956fecae
Support filtering by group properties in retention (#6904) 2021-11-05 13:56:27 +02:00
Karl-Aksel Puulmann
42192e07c7
BE (Groups/Trends): Make breakdowns work with groups (#6899)
* Extract GroupsJoinQuery

* Add test for breakdown filtering

* Unify breakdown mixins

* Allow passing breakdown_type == 'group' with breakdown_group_type_index

* Allow breakdown by group props in trends

* Add tests for trends breakdown_props function on group breakdowns

* Solve common issues

* Output snapshot diff into console

* Clean up materialized columns after tests

* Add zero protection

* Solve test failure
2021-11-05 13:47:41 +02:00
Karl-Aksel Puulmann
fa79f8ea67
BE (Groups/Trends): Allow aggregating by groups (#6894)
* Type math in Entity

* Allow passing group_type_index from FE to BE

* Get a initial query running

* Add group value filter if aggregating by groups

* Add snapshot testing for trends queries

* isort

* Update tests

* Add test for column_optimizer

* Update ee/clickhouse/queries/trends/util.py

Co-authored-by: Neil Kakkar <neilkakkar@gmail.com>

Co-authored-by: Neil Kakkar <neilkakkar@gmail.com>
2021-11-05 13:08:32 +02:00
Eric Duong
d423a3ad09
[proposal] suggestion for reducing runtimes (#6725)
* suggestion for reducing runtimes

* refactor tests ingestion

* django tests

* fix types

* add comment
2021-11-04 11:34:40 -04:00