Powerful product analytics for data teams, with full control over data & models.
Adds support for building & running data models directly on Amazon Athena with Objectiv.
to_pandas
by @KathiaBarahona in https://github.com/objectiv/objectiv-analytics/pull/1427
from_pandas()
by making convert_objects=True
by default by @thijs-obj in https://github.com/objectiv/objectiv-analytics/pull/1423
Full Changelog: https://github.com/objectiv/objectiv-analytics/compare/20221027...20221103
Introduces a central Validation service that is now used by all Objectiv components to ensure data is collected according to the open analytics taxonomy.
Full Changelog: https://github.com/objectiv/objectiv-analytics/compare/20221020...20221027
To easily analyze the performance of your funnels on your product goals, this release adds a new model hub operation called funnel_conversion
. With this new operation, you can get an easy-to-digest overview that shows all the relevant metrics in one go, for each step in the funnel:
n_users
: The number of users who started the funnel;n_users_completed_step
: The number of users who completed the step (defined as whether the user went to any other step in the funnel);step_conversion_rate
: The conversion rate to completing the step;full_conversion_rate
: The conversion rate to completing the step, looking at all users who started the funnel (= the ‘full’ conversion rate); anddropoff_share
: The percentage of users in the entire funnel, who dropped off in that step.drop_off_locations
method by @vard-obj in https://github.com/objectiv/objectiv-analytics/pull/1361
funnel-discovery
operation by @hendrik-obj in https://github.com/objectiv/objectiv-analytics/pull/1372
skip_athena_todo
marker by @KathiaBarahona in https://github.com/objectiv/objectiv-analytics/pull/1297
skip_athena_todo
marker" by @thijs-obj in https://github.com/objectiv/objectiv-analytics/pull/1348
Series.mode
by @KathiaBarahona in https://github.com/objectiv/objectiv-analytics/pull/1350
skip_athena_todo
marker"" by @thijs-obj in https://github.com/objectiv/objectiv-analytics/pull/1373
basic-product-analytics
notebook to product-analytics
by @ivarpruijn in https://github.com/objectiv/objectiv-analytics/pull/1332
sphinx-exec-code
for SQL output generation in example notebooks by @ivarpruijn in https://github.com/objectiv/objectiv-analytics/pull/1362
Full Changelog: https://github.com/objectiv/objectiv-analytics/compare/20221006...20221020
This release enables you to use Objectiv to collect privacy-friendly anonymized user behavior data, without setting any cookies.
Full Changelog: https://github.com/objectiv/objectiv-analytics/compare/20220929...20221006
In this release, we’re enabling you to self-host Objectiv's open-source analytics platform in under five minutes - 100% free & open-source, preconfigured with pre-built models, dashboards, and demo data.
Objectiv Up is a pre-packaged, dockerized version of Objectiv. It comes with everything you need to run powerful product analytics from your notebook with full control over data and models.
Objectiv Up includes:
All the necessary infrastructure comes pre-configured and is ready to go.
ObjectivStack.get_contexts_with_type
by @KathiaBarahona in https://github.com/objectiv/objectiv-analytics/pull/1273
Full Changelog: https://github.com/objectiv/objectiv-analytics/compare/20220920...20220929
In this release we add an operation to the open model hub called drop_off_locations, that enables you to quickly find which locations/features drive users to drop off on any of your product goals, and how (relatively) often this happens.
You can directly slice on any part of the location stack in your product, or just analyze the full product, and you get the locations where users drop off with their count/share.
display_sql_as_md
operation to example notebooks by @ivarpruijn in https://github.com/objectiv/objectiv-analytics/pull/1246
Full Changelog: https://github.com/objectiv/objectiv-analytics/compare/20220915...20220920
This release enables adding Objectiv tracking to your existing React Components library, making it possible to instrument all your Components just once, and reuse them anywhere in your application with full analytics tracking support.
Any JSX element or custom Element/Component can now be tracked, while automatically capturing all relevant context, plus information about where an event exactly happened in the UI. You also also get the same autocompletion, typing, and validation tools as for Objectiv Components.
makeIdFromString
has been renamed to makeId
and supports making identifiers from numbers as well.Apart from the TypeScript improvements and support for Component types via generics, we also received quite some feedback on the Tracked Context HOCs API:
forwardId
, forwardTitle
and forwardHref
properties were not so intuitive to use and easy to forget.While the basic concepts remain the same, the signature of Tracked Context HOCs changed a little.
All Objectiv related options are now grouped under a single prop called objectiv
.
This is an object containing all the options that previously had to be set via props directly on the HOC, e.g. id
, forwardId
, title
, forwardTitle
, href
, forwardHref
, normalizeId
, waitUntilTracked
, and so on.
Here are some practical examples of what this means:
v0.0.24:
<TrackedContentContext
Component={'div'}
id={'identifier'}
normalizeId={false}
/>
…
</TrackedContentContext>
V0.0.25:
<TrackedContentContext
objectiv={{
Component: 'div',
id: 'identifier',
normalizeId: false
}}
>
…
</TrackedContentContext>
The biggest change is that props forwarding has been removed.
The SDK doesn’t fiddle with attributes anymore, instead we rely 100% on what’s set on the objectiv
prop and only read attributes as fallbacks. Here is an example to illustrate how the new syntax differs from the previous one.
In v0.0.24 one could decide to specify the id prop and optionally apply it also to the native underlying element by using the forwardId
option:
<TrackedContextContext
Component={'div'}
id={'identifier'}
forwardId={true}
>
…
</TrackedContextContext>
In v0.0.25 forwardId has been deprecated. The tracking identifier must be specified via the objectiv
object and the id
property can be set on the HOC itself.
<TrackedContextContext
id={'html-identifier'}
objectiv={{
Component: 'div',
id: 'html-identifier'
}}
>
…
</TrackedContextContext>
One last note on HTML attributes detection. We still have some logic in place for common HTML attributes detection. For example the previous HOC functions also if we remove the id
option from the objectiv
prop, because we fallback to reading the native id
attribute as a fallback:
<TrackedContextContext
id={'html-identifier'}
objectiv={{
Component: 'div'
}}
>
…
</TrackedContextContext>
Note that specifying both identifiers is still a use case when the tracking identifier is different from the id
attribute.
The same logic has been applied to all props that could be forwarded, namely: title and href.
Nothing changed. The SDK will still make sure all required attributes are present. It will log an error if the id
attribute is removed entirely from both attributes and the objectiv
prop.
With these changes we hope to simplify the usability of the Tracked Context HOCs and eliminate prop collision issues.
See the full release log below.
test_positional_slicing()
, and enable for BigQuery and Athena by @thijs-obj in https://github.com/objectiv/objectiv-analytics/pull/1213
Full Changelog: https://github.com/objectiv/objectiv-analytics/compare/20220902...20220915
This release introduces a breaking change in working with Global Contexts data.
modelhub = ModelHub(time_aggregation='%Y-%m-%d', global_contexts=['application', 'marketing'])
Which in this example results in a dataframe that has both application
and marketing
columns that contain the JSON for the respective global context.
context
accessor. For example to get the ID of the application as a Series, you use:df.application.context.id
Similarly, the application ID can be set as regular (text) column in your DataFrame:
df['application_id'] = df.application.context.id
When doing this simple migration, please make sure that you do not overwrite contexts that you have retrieved earlier, e.g. check that assigned columns don’t have the same name as the global context column, or modelhub might raise errors when it needs the context that was overwritten.
For more info, see the open taxonomy example notebook for how to use the new global contexts.
We’ve opted for making a breaking change, because maintaining backward compatibility is not possible long-term, and short-term it has a huge impact on performance. The required changes to existing analysis should be minimal, and of course we’re happy to assist on Slack!
This change paves the way for deeper Snowplow integration, allowing anyone to run Objectiv in parallel with an existing SP pipeline. Check out the Snowplow pipeline docs for how to set that up.
DataFrame
creation by @jansentom in https://github.com/objectiv/objectiv-analytics/pull/1165
Full Changelog: https://github.com/objectiv/objectiv-analytics/compare/20220901...20220902
Makes it possible to quickly build BI dashboards with common product & marketing analytics metrics, using the pre-built data models from the open model hub. Examples of these models are unique users, session duration, retention, top used features, funnel discovery, user behavior prediction, and more.
view_sql
by @KathiaBarahona in https://github.com/objectiv/objectiv-analytics/pull/1198
view_sql
format update by @ivarpruijn in https://github.com/objectiv/objectiv-analytics/pull/1200
Full Changelog: https://github.com/objectiv/objectiv-analytics/compare/20220826...20220901
Adds a ‘Marketing Analytics’ notebook that shows how you can fully analyze behavior of users who enter your site/app via marketing efforts.
Full Changelog: https://github.com/objectiv/objectiv-analytics/compare/20220818...20220826