tall-branch-42668
12/04/2023, 8:51 PM_table_suffix
is a parameter of GB or is this something we need to set up in our own data warehouse for the tables we’re querying? cc @refined-addition-9216billions-xylophone-11752
12/04/2023, 9:03 PM_TABLE_SUFFIX
isn't a GrowthBook-specific parameter.
This is most common with GA4/BigQuery Data Sources. Typically, GA4 stores events in Intraday tables, so most often, the FROM
clause in the query is wildcarded (e.g. it queries FROM events_*
) and the _TABLE_SUFFIX
allows you to filter based on your metrics conversion window specifications.refined-addition-9216
12/05/2023, 7:41 PMrefined-addition-9216
12/05/2023, 7:46 PMbillions-xylophone-11752
12/05/2023, 7:51 PMConversion Delay
for a particular metric. More details on this can be found here.tall-branch-42668
12/05/2023, 7:53 PMrefined-addition-9216
12/05/2023, 7:55 PMbillions-xylophone-11752
12/05/2023, 8:00 PMbillions-xylophone-11752
12/05/2023, 8:07 PMtall-branch-42668
12/05/2023, 9:29 PMtall-branch-42668
12/05/2023, 9:32 PMbillions-xylophone-11752
12/05/2023, 9:35 PMtall-branch-42668
12/05/2023, 9:52 PMtrial_created
or purchase
that happen during the duration of the experiment we're running.
Right now we're not confident that the queries we have in place are doing this. We think we're close to understanding this, however the '{{date startDateISO "yyyyMMdd"}}'
and '{{date endDateISO "yyyyMMdd"}}'
are unclear as to where startDateISO
and endDateISO
are getting defined.
When we keep those in place without editing them, we get an error in the Rendered SQL (screenshots attached). The startDateISO seems to grab today, and endDateISO grabs a date 2 days from now - why is this happening?
Additionally, per the above, we don't have _TABLE_SUFFIX
in our GA4 setup, so we had assumed that potentially using timestamp
in-lieu of this would work - which does not seem to be the case, but in-lieu of _TABLE_SUFFIX
how can we set this up to only display results inside the duration of the test?
@refined-addition-9216 Is this all simply because we don't have timestamp
annotated as "yyyyMMdd"
?tall-branch-42668
12/05/2023, 9:52 PMhelpful-application-7107
12/05/2023, 9:54 PMwe don't haveJust checking, is this because you have some custom export to BQ that has a different schema than the one we assume for most people with GA4?in our GA4 setup_TABLE_SUFFIX
tall-branch-42668
12/05/2023, 9:58 PMhelpful-application-7107
12/05/2023, 10:01 PMtimestamp BETWEEN '{{ startDate }}' AND '{{ endDate}}'
tall-branch-42668
12/05/2023, 10:02 PMISO
in those?helpful-application-7107
12/05/2023, 10:02 PMtimestamp
is DATETIME
or TIMESTAMP
then you don't want to use the formatting that we use for most people's GA4 Schemas where we need to filter the table_suffix down to ensure we aren't scanning too much data. You need formatting for the string literal that comes is more like yyyy-MM-dd
and comes with time as well.
https://docs.growthbook.io/app/metrics#sql-templateshelpful-application-7107
12/05/2023, 10:03 PMhelpful-application-7107
12/05/2023, 10:03 PMhelpful-application-7107
12/05/2023, 10:04 PMWe want to ensure the results of the experiment are only including Metrics built for events we track likeAlso, to clarify, this particular filter we're talking about here only matters for improving query performance to make sure we are only scanning relevant data and hopefully filtering based on some table you have partitioning set up on. We handle the logic to make sure we only track user's metrics for the {exposure -> end of experiment} time window internally in growthbook.ortrial_created
that happen during the duration of the experiment we're running.purchase
tall-branch-42668
12/05/2023, 10:40 PMtrial_created
Metric I've set up is now fixed and seems happy with reducing the line to timestamp BETWEEN '{{startDateISO}}' AND '{{endDateISO}}'
However, the results of the experiment we have this Metric set up on did not change upon updating the data. My next question is: do these start and end dates need to also exist in our Experiment Assignment Queries?
We have some pretty basic queries set for the 'Experiment Assignment Queries'.
For 'Anonymous Visitors', we have:
SELECT
user_pseudo_id,
TIMESTAMP_MICROS(event_timestamp) as timestamp,
experiment_name AS experiment_id,
experiment_variation AS variation_id,
geo.country AS country,
traffic_source.source AS source,
traffic_source.medium AS medium,
device.category AS device,
device.web_info.browser AS browser
device.operating_system AS os
FROM
``puck-data-platform`.analytics
.`int_fct_ga_events``
WHERE
event_name = 'experiment-viewed'
AND user_pseudo_id is not null
For 'Logged-in Users', we have:
SELECT
user_pseudo_id,
TIMESTAMP_MICROS(event_timestamp) as timestamp,
experiment_name AS experiment_id,
experiment_variation AS variation_id,
geo.country AS country,
traffic_source.source AS source,
traffic_source.medium AS medium,
device.category AS device,
device.web_info.browser AS browser
device.operating_system AS os
FROM
``puck-data-platform`.analytics
.`int_fct_ga_events``
WHERE
event_name = 'experiment-viewed'
AND user_id is not null
However, since we had set these up in GB first before diving as deep as we have, we had commented out the templated (_TABLE_SUFFIX BETWEEN '{{date startDateISO "yyyyMMdd"}}' etc etc etc
So because this is a novel, question is here again: Do we need the startDateISO
and endDateISO
in our Assignment Queries as well?helpful-application-7107
12/06/2023, 1:12 AMtall-branch-42668
12/07/2023, 7:29 PM'load-viz-changeset-failed'
- any ideas how to remedy? I had set a new Admin Secret Key for the Chrome extension to implement changes with the Visual Editor but now I'm running into thisswift-helmet-3648
12/07/2023, 7:33 PMtall-branch-42668
12/07/2023, 7:34 PM<https://cdn.growthbook.io>
From our SDK Config -> SDK Connectionsswift-helmet-3648
12/07/2023, 7:35 PMswift-helmet-3648
12/07/2023, 7:36 PM<https://api.growthbook.io>
)tall-branch-42668
12/07/2023, 7:37 PMswift-helmet-3648
12/07/2023, 7:38 PMtall-branch-42668
12/07/2023, 7:39 PMswift-helmet-3648
12/07/2023, 7:39 PMswift-helmet-3648
12/07/2023, 7:39 PMtall-branch-42668
12/07/2023, 7:39 PMtall-branch-42668
12/07/2023, 7:41 PMOpen Visual Editor
, it loaded my URL and then I clicked the extension in my pinned extensions bar which prompted me for the credentialsswift-helmet-3648
12/07/2023, 7:42 PMtall-branch-42668
12/07/2023, 7:43 PM<chrome://extensions/?etcetc>
where I entered that infoswift-helmet-3648
12/07/2023, 7:44 PMtall-branch-42668
12/07/2023, 7:45 PMswift-helmet-3648
12/07/2023, 7:46 PMtall-branch-42668
12/07/2023, 7:46 PMI don't see a way to only run this test when the anon first paywall is visible. To do that, we need to be able to target the test to the result of a JS expression. I can only find ways to target based on URLs and attributes. If you see the same thing, I guess we need to check with GB but it doesn't seem possible from what I see so farIs there another implementation route we can take for making this visual change for this test?
swift-helmet-3648
12/07/2023, 9:09 PMswift-helmet-3648
12/07/2023, 9:10 PMtall-branch-42668
12/07/2023, 9:26 PMtall-branch-42668
12/07/2023, 9:26 PMtall-branch-42668
12/07/2023, 11:18 PMtall-branch-42668
12/08/2023, 12:07 AMtall-branch-42668
12/08/2023, 1:45 AMtall-branch-42668
12/12/2023, 7:38 PM[object Object]
when I've set 2 variation_id's for the experiment as bucket-a
(for my Control) and bucket-b
(for my Variant). Any idea what might be causing this?
Experiment runs as designed on the site, we get control/variant to display properly. But something odd is happening with sending variation_id's to GA. This is happening with this particular experiment using GB's Visual Editor. We did not have this issue when setting up our A/A test that used GB's Feature Flagsfresh-football-47124
tall-branch-42668
12/12/2023, 7:40 PMtall-branch-42668
12/12/2023, 8:23 PMit may be that there is an error trying to run the experiment, and the tracking callback is sending the error object instead of a variation name in that caseAny thoughts?
helpful-application-7107
12/12/2023, 8:24 PMtrackingCallback
is not sending the variation names as expected.tall-branch-42668
12/12/2023, 10:23 PMhelpful-application-7107
12/12/2023, 10:28 PMhelpful-application-7107
12/12/2023, 10:28 PMswift-helmet-3648
12/12/2023, 10:31 PMtall-branch-42668
12/12/2023, 10:38 PMtall-branch-42668
12/12/2023, 10:41 PMhelpful-application-7107
12/12/2023, 10:42 PMresult.value
for the variation id, but that's going to return the actual value rather than the variation key. Like this example shows, you want to submit result.key
to gtag
, not result.value
tall-branch-42668
12/12/2023, 11:01 PMkey
to value
a month ago based on a Zoom call we had with @fresh-football-47124.. we're sure that's the change?tall-branch-42668
12/12/2023, 11:12 PMtall-branch-42668
12/12/2023, 11:12 PMhelpful-application-7107
12/12/2023, 11:13 PMvalue
may have just "happened" to work before if the value for each feature was the same as the id for each feature. But I'm not 100% confident on what @fresh-football-47124 saw in that call.tall-branch-42668
12/13/2023, 3:40 PMtall-branch-42668
12/13/2023, 7:31 PMswift-helmet-3648
12/13/2023, 7:38 PMfresh-football-47124
tall-branch-42668
12/13/2023, 8:55 PMhelpful-application-7107
12/13/2023, 9:05 PMtall-branch-42668
12/13/2023, 9:07 PMhelpful-application-7107
12/13/2023, 9:09 PMtall-branch-42668
12/13/2023, 9:13 PMtall-branch-42668
12/13/2023, 9:15 PMhelpful-application-7107
12/13/2023, 9:17 PMtall-branch-42668
12/13/2023, 9:19 PMtall-branch-42668
12/13/2023, 10:32 PMtall-branch-42668
12/13/2023, 11:10 PMfresh-football-47124
tall-branch-42668
12/13/2023, 11:22 PMtall-branch-42668
12/14/2023, 3:36 PMhelpful-application-7107
12/14/2023, 4:34 PMhelpful-application-7107
12/14/2023, 4:39 PM{
in it (e.g. just drop rows that look like JSON).
You can do that by adding something like the following to your experiment assignment queries WHERE clause:
experiment_variation NOT LIKE '{%}'
That will drop any rows where the experiment variation looks like JSON instead of just a string.helpful-application-7107
12/14/2023, 4:40 PMtall-branch-42668
12/14/2023, 5:40 PMhelpful-application-7107
12/14/2023, 7:52 PMAs in, should Phase 2 start 96hrs later to make sure that we don't get the incorrect variation ID returns from Phase 1?No. The phases will filter out the experiment exposures, and your 96 hour conversion window will be from the first experiment exposure we can find in the phase 2 date range.
helpful-application-7107
12/14/2023, 7:53 PMwe don't always have customers convert on Day 0, sometimes they take 30 days to convert. If we ran a test for 30 days, how does GB monitor results of users who experienced the experiment on, say, Day 28 but who then converted on, say, Day 45 when the experiment is no longer running?Generally, I would advise against trying to end an experiment and then having data change afterwards. You can change the experiemnt attribution model to "Experiment Duration" to ignore conversion windows and get all values for each user from {first_exposure -> experiment_end_date}, or you can use Fact Table metrics to define conversion windows as on or off by metric.