For the complete documentation index, see llms.txt. This page is also available as Markdown.

Variation Distribution

When running an A/B Test, you need to distribute users across Variations and implement the logic for each Variation. You can perform this user distribution through the Hackle SDK.

variation

When using the Python SDK, duplicate exposure events for the same A/B Test Variation Distribution result generated by the same user within 1 minute are deduplicated.

Events within 1 minute are counted as one.

By passing an Experiment Key and User Identifier to the variation() method, you can distribute the user and receive the result.

Parameter
Type
Required
Constraints

Experiment Key (key)

int

Required

-

Example

In the example code below, Experiment Key 42 is passed and two Variations, A and B, exist.

from hackle.model import HackleUser

# 실험 키가 42인 A/B 테스트에서
# "ae2182e0"라는 식별자를 가진 사용자에게 노출할 테스트 그룹을 결정합니다.
# 결정하지 못하는 상황인 경우 테스트 그룹 A를 반환합니다.

user = HackleUser.builder() \
                 .device_id('ae2182e0') \
                 .build()

variation = hackle_client.variation(experiment_key=42, user=user)

# 할당받은 그룹에 대한 로직
if variation == 'A':
    # 그룹 A 로직
elif variation == 'B':
    # 그룹 B 로직

variation_detail

The variation_detail() method works the same as the variation() method and additionally provides the reason for distribution. This method is useful for checking whether distribution is working correctly.

Parameter
Type
Required
Constraints

Experiment Key (key)

int

Required

-

Example

You must pass the Experiment Key as a parameter. In the example code below, Experiment Key 42 is passed.

Distribution Reason

The distribution decision reason is returned in the form of SDK_NOT_READY. Refer to the table below for details.

Distribution Reason
Description
Distribution Result

SDK_NOT_READY

The SDK is not ready to use.

(e.g., initialization attempted with an invalid SDK Key)

A (Control Group)

EXPERIMENT_NOT_FOUND

No A/B Test was found for the provided Experiment Key. The Experiment Key may be incorrect, or the experiment may be archived.

A (Control Group)

NOT_IN_MUTUAL_EXCLUSION_EXPERIMENT

The experiment is included in Mutually Exclusive Settings, but the user was not assigned to that Mutually Exclusive Group.

A (Control Group)

EXPERIMENT_DRAFT

The A/B Test is in draft state.

A (Control Group)

EXPERIMENT_PAUSED

The A/B Test is paused.

A (Control Group)

EXPERIMENT_COMPLETED

The A/B Test has ended.

Winning Variation selected at completion

OVERRIDDEN

The user was assigned to a specific group by Override.

Override-assigned group

NOT_IN_EXPERIMENT_TARGET

The user is not an A/B Test target.

A (Control Group)

TRAFFIC_NOT_ALLOCATED

The A/B Test is running, but the user was not allocated to the test.

A (Control Group)

TRAFFIC_ALLOCATED

The user has been allocated to the A/B Test.

Allocated group

VARIATION_DROPPED

The originally allocated group has been removed from the test.

A (Control Group)

INVALID_INPUT

The input value is invalid.

A (Control Group)

EXCEPTION

An unknown error occurred.

A (Control Group)

Parameter Settings

  • You can also receive the parameter values of the distributed Variation through the variation_detail() method.

  • You can use the config object and get() method to retrieve and use the Parameter Settings values configured on the A/B Test screen. If you change a value on the A/B Test parameter settings screen, the updated value is applied to your code.

  • The parameterKey of the get() method is the key configured in the A/B Test parameter settings, and defaultValue is the value returned when the distribution decision fails or an invalid parameter type value is provided.

  • To receive the configured information correctly, you must enter a value of the type that matches the parameter type you configured in defaultValue.

Method
Value Type
Description

get

string, number, boolean

* Returns the configured parameter value. * JSON type can be received as a string. * The default value for JSON type must be entered as a string type.

Example

Last updated