fierce-tent-11841
07/27/2025, 5:09 PMPROXY_HOST_INTERNAL/PROXY_HOST_PUBLIC
only support one proxy address.bitter-airport-72278
07/28/2025, 8:08 AMmelodic-megabyte-84210
07/28/2025, 9:24 AMbrash-football-99337
07/28/2025, 12:24 PMpolite-hairdresser-26298
07/29/2025, 8:23 AMbillions-house-96196
07/29/2025, 10:47 PM{{date startDateISO "yyyyMMdd" "America/Denver"}}
Context: data source query
I'm just now realizing that with GA4, the table_suffix used in the where clause by the query is in local timezone.gentle-house-39268
07/30/2025, 1:07 PMnutritious-garden-91325
07/30/2025, 6:49 PMval trackingCallback = object : TrackingCallback {
override fun <ValueType : Any?> onTrack(
experiment: Experiment<ValueType?>,
experimentResult: ExperimentResult<ValueType?>,
) {
println("[TrackingCallback] Experiment is: $experiment")
println("[TrackingCallback] ExperimentResult is: ${experimentResult.toJson()}")
}
}
val stickyBucketService = object : StickyBucketService {
override fun getAssignments(
attributeName: String?,
attributeValue: String?,
): StickyAssignmentsDocument? {
println("[StickyBucketService] Getting assignments")
return StickyAssignmentsDocument(
"id",
"b0c7f2f4-7575-4c31-88b2-823d2c88484f",
mapOf("test__0" to "0"),
)
}
override fun saveAssignments(doc: StickyAssignmentsDocument?) {
println("[StickyBucketService] Saving assignments $doc")
}
override fun getAllAssignments(attributes: Map<String?, String?>?): Map<String?, StickyAssignmentsDocument?>? {
println("[StickyBucketService] Getting all assignments")
return null
}
}
fun main() {
val featuresRepository = GBFeaturesRepository
.builder()
.apiHost("MY_HOST")
.clientKey("MY_CLIENT_KEY")
.refreshStrategy(FeatureRefreshStrategy.STALE_WHILE_REVALIDATE)
.build()
.apply {
initialize()
}
val ctx = GBContext
.builder()
.featuresJson(featuresRepository.featuresJson)
.attributesJson(
"""
{
"id": "b0c7f2f4-7575-4c31-88b2-823d2c88484f"
}
""".trimIndent(),
)
.trackingCallback(trackingCallback)
.enabled(true)
.isQaMode(false)
.stickyBucketService(stickyBucketService)
.build()
val gb = GrowthBook(ctx)
val result = gb.getFeatureValue("test", "error")
println("Result is: $result")
}
nutritious-garden-91325
07/30/2025, 6:50 PM[TrackingCallback] ExperimentResult is: {"value":"ON","variationId":1,"inExperiment":true,"hashAttribute":"id","hashValue":"b0c7f2f4-7575-4c31-88b2-823d2c88484f","featureId":"test","hashUsed":true,"key":"1","name":"Variation 1","bucket":0.993,"stickyBucketUsed":false}
adorable-balloon-99556
07/30/2025, 10:22 PMGBNetworkDispatcherKtor
rather than GBNetworkDispatcherOkHttp
, I tried wrap the code within runBlocking
, tried to call refreshCache
manually, but the features can't get loaded. Here's the dependencies:
// build.gradle.kts
dependencies {
implementation("io.growthbook.sdk:GrowthBook:5.0.1")
implementation("io.growthbook.sdk:NetworkDispatcherOkHttp:1.0.2")
}
The program can't load the features although I can fetch them properly through the host url. Also, the status is "Connected" in the SDK Connections page. gb.getFeatures()
is always empty. Could anybody please help?
The code is in the snippet belowmost-beard-6772
07/31/2025, 1:12 PMelegant-solstice-68604
07/31/2025, 8:41 PMIf a metric uses this Filter, GrowthBook will add it to the WHERE clause automatically. If there are multiple Filters, they will be ANDed together.However, inspecting the generated SQL query reveals filters are inserted as a column in the SELECT statement as
SELECT CASE WHEN [[filter]] ELSE NULL
. I believe these are functionally different with respect to certain table operations involving indexes. Curious if anyone knows why this design decision was made and/or if the documentation needs to be updated to describe this discrepancy?magnificent-furniture-52657
08/01/2025, 10:00 AMgifted-eye-87311
08/01/2025, 12:19 PMplain-cat-20969
08/02/2025, 8:50 AMstraight-honey-15210
08/04/2025, 12:57 AMthousands-activity-913
08/05/2025, 7:28 AMthousands-activity-913
08/05/2025, 7:30 AMbusy-psychiatrist-5181
08/05/2025, 10:06 AMacceptable-king-82846
08/05/2025, 4:33 PMwitty-rocket-75751
08/07/2025, 3:02 PM2.1.0+0
3.9.10
@freezing-postman-69602 can you help here.bulky-oil-75691
08/07/2025, 3:12 PMFig.1
), I'm struggling to replicate the same with the fact metrics approach (Fig.2
), were apparently a user doesn't have to belong to the denominator to be eligible for the numerator -indeed you can end up having results which are bigger than 1 (Fig.3
).
Is this expected or am I doing something wrong? Thanks
fyi @stocky-zoo-87795quick-student-63473
08/07/2025, 7:28 PMwooden-farmer-44624
08/07/2025, 9:12 PMstocky-zoo-87795
08/08/2025, 8:58 AMmetrics.yml
and I noticed some potential bug on this integration.
1. I had written an entire factMetric in my file, which later I removed from the .yml
2. Even though the metric didn't exist into the file, I still could see it into my UI
3. For being an official fact metric, I could not edit not delete it from the UI. So I ran a CURL DELETE on this specific metric.
4. Even though I had a positive response from the API, the metric still lives into our self-hosted environment.
How can we clean that up? Any advices?plain-cat-20969
08/08/2025, 8:45 PMflaky-lion-33569
08/12/2025, 5:16 AMnarrow-afternoon-3154
08/13/2025, 7:24 AMquick-ability-87647
08/13/2025, 11:47 PMRUN_VISUAL_EXPERIMENTS
@ edge
vs browser
is?adorable-bear-66287
08/14/2025, 7:49 AM