이 페이지에서

파생 속성

파생 속성은 Amplitude 데이터의 함수와 연산자를 사용하여 기존 속성으로부터 소급적으로 새로운 이벤트 및 사용자 속성을 생성합니다. Amplitude는 쿼리 시간에 동적으로 계산하며 원시 데이터를 변경하지 않습니다. 파생 속성을 사용하여 원래 이벤트 페이로드에서 전송하지 않은 값에 대한 분석을 실행할 수 있습니다.

기존 속성에서 계산된 값이 필요하지만 데이터를 재계측하거나 다시 수집하지 않으려면, 파생 속성을 사용하세요. 클라이언트가 이벤트 시에 전송하는 값을 원할 경우 대신 일반 이벤트 속성을 사용하십시오. 여러 원시 이벤트에서 생성된 큐레이트된 이름 있는 이벤트가 필요한 경우 사용자 지정 이벤트를 대신 사용하십시오.

예를 들어 카트 항목의 가격이 임계값을 초과하는지 여부를 기반으로 값이 부울인 파생 속성을 생성합니다.

파생 속성 생성

파생 속성을 작성하려면 프로젝트의 main 브랜치에 있어야 합니다.

파생 속성을 작성하려면 다음 단계를 수행하십시오.

  1. Amplitude 데이터에서 추적 계획 > 속성으로 이동한 다음 파생 속성 탭을 선택합니다.
  2. 파생 속성 추가를 선택합니다.
  3. 파생 특성에 이름을 지정합니다.
  4. 이 프로젝트 첫 사용 후 차트에서 속성의 가시성을 비롯한 설명(선택 사항, 제안 기능을 사용하려는 경우를 제외하고)과 같은 전체 관련 메타데이터를 속성에 추가합니다.
  5. 수식을 입력합니다. 하단의 유효한 함수 및 연산자 목록을 검토합니다.
  6. 저장을 선택합니다.

결과 미리 보기

입력한 수식이 유효한 경우 수식 편집기 아래의 공간에서 결과를 테스트할 수 있습니다. 수식에 사용된 속성의 기존 값을 선택하거나 자유형 값을 입력하여 테스트합니다. 생성/편집 모달 또는 측면 패널에서 불러오기 파생 속성을 테스트할 수 있습니다.

파생된 속성 사용 사례

참조자 URL 예제를 사용하면 다음과 같은 문자열 연산자를 사용하여 수식을 작성할 수 있습니다.

SPLIT(PROPERTY('referrer_url','event'), "/", 2)

이 수식은 "https://www.google.com/search?q=amplitude"와 같은 값을 "www.google.com"이라는 값으로 변환합니다. 이를 "google"로 더 줄이려면 SPLIT 함수의 결과를 다른 SPLIT 함수 안에 감싸십시오. 결과 수식은 다음과 같습니다.

SPLIT(SPLIT(PROPERTY('referrer_url','event'), "/", 2), ".", 1)

Amplitude는 수학 연산자도 지원합니다. 예를 들어, 소계 및 팁 속성이 포함된 이벤트가 있고 총 금액을 기준으로 분석을 실행하려는 경우 다음 수식을 사용하십시오.

SUM(PROPERTY('subtotal','event'), PROPERTY('tip','event'))

총 주문 규모가 $50을 초과할 때 특정 주문에 할인이 적용되는지 여부를 결정하려면 다음 수식을 사용하십시오.

IF(SUM(PROPERTY('subtotal','event'), PROPERTY('tip','event')) >= 50, 'true')

파생 속성을 사용하는 쿼리는 공식의 복잡성에 따라 쿼리 시간이 더 길어질 수 있습니다. 파생 특성당 최대 10개의 특성 참조를 제한하는 것도 적용됩니다.

함수 및 연산자

문자열 함수

  • REGEXEXTRACT (text_property, regular_expression)
    • 설명: 정규식과 일치하는 하위 문자열을 추출합니다.
    • : REGEXEXTRACT("shirt-150", "[0-9]+")
    • 결과: 150
  • REGEXREPLACE (text_property, regular_expression, replacement_text)
    • 설명: 속성 값을 정규 표현식과 일치하는 텍스트에서 대체 텍스트로 바꿉니다.
    • : REGEXREPLACE("en-US", "-.*", "")
    • 결과: en
  • CONCAT(property1, property2)
    • 설명: 속성을 다른 속성 또는 텍스트 값과 연결합니다.
    • : CONCAT("firstName", "lastName")
    • 결과: firstName lastName
  • LOWERCASE (text_property)
    • 설명: 속성 값의 모든 문자를 소문자로 변환합니다.
    • : LOWERCASE("John")
    • 결과: john
  • UPPERCASE (text_property)
    • 설명: 속성 값의 모든 문자를 대문자로 변환합니다.
    • : UPPERCASE("John")
    • 결과: JOHN
  • SPLIT (property, separator, [index])
    • 설명: 구분 기호를 기반으로 속성을 분할하고 분할된 요소의 배열을 반환합니다.  해당 인덱스의 요소를 반환하는 선택적 인덱스를 사용합니다.
    • :
      • `SPLIT("a_b_c", "_")
      • SPLIT("john@example.com", "@", 0)`
    • 결과:
      • `["a", "b", "c"]
      • "john"`
  • REMOVE (property, text)
    • 설명: 속성에서 텍스트가 발생하는 모든 항목을 제거합니다.
    • : REMOVE("en-US", "en-")
    • 결과: US
  • EXTRACT_FROM_DICT (property, text)
    • 설명: 특정 키를 기반으로 사전 문자열에서 값을 추출합니다.
    • : EXTRACT_FROM_DICT("{'id': 1, 'name': 'John', 'country': 'US'}", "name")
    • 결과: John

수학 함수

객체 함수

날짜/시간 함수

Amplitude를 사용하려면 모든 Unix 타임스탬프가 밀리초 단위여야 합니다.

배열 함수

배열 속성에서 생성된 파생 속성에 대해 커스텀 계산을 수행할 때 Amplitude는 첫 번째 자식만 배열 속성이라고 가정합니다. Amplitude는 다른 하위 항목도 배열 속성인 경우에도 다른 하위 항목의 첫 번째 값만 고려합니다. 다음은 몇 가지 예입니다.

plaintext
Example 1  
 propA = [1,2,3], propB = [a,b,c]  
 CONCAT(propA, propB) = [1a, 2a, 3a]  
Example 2  
 propA = [1, 2, 3], propB = [a]  
 CONCAT(propA, propB) = [1a, 2a, 3a]  
Example 3  
 propA = [1], propB = [a, b, c]  
 CONCAT(propA, propB) = [1a]

속성 함수

속성 삽입 드롭다운에서 속성을 선택하면 Amplitude는 해당 속성을 참조하는 속성 함수를 편집기에 직접 삽입합니다. 다른 Amplitude 속성을 참조하려는 위치에 이 함수를 수동으로 삽입할 수도 있습니다.

이러한 함수는 다른 함수 내에서 사용할 수 있습니다.

참조 이벤트 시간

파생 속성 수식에서 이벤트의 타임스탬프를 사용하려면 파생 속성 빌더의 속성 삽입 드롭다운에서 이벤트 시간을 선택합니다.

파생 속성 수식 내에서 이벤트 시간은 에포크 밀리초 단위의 Long 값입니다. 읽기 쉬운 날짜로 표시하려면 해당 값을 LONG_TO_TIME 또는 LONG_TO_DATE(으)로 감싸십시오. 이벤트 시간TIME_TO_LONG 또는 DATE_TO_LONG으로 감싸지 마십시오. 값이 이미 Long 형식이며 전환 시 none을(를) 반환하기 때문입니다. 이벤트 시간을 날짜 또는 날짜 시간 속성과 비교하려면 TIME_TO_LONG 또는 DATE_TO_LONG 대신 다른 속성을 Long으로 변환하십시오.

조건부 연산자

문자열/숫자 연산자

집합 연산자

집합 리터럴("apple", "orange")은 연산자의 오른쪽에 나타나야 합니다.

  • ==
    • :
      • IF(product == ("apple","orange"), "true", "false")
      • 제품 = "apple", "true"를 반환합니다
  • !=
    • :
      • IF(product != ("apple","orange"), "true", "false")
      • 제품 = "banana", "true"를 반환합니다

병렬 연산자

데이터 배열에 대한 작업을 수행하여 장바구니 분석을 수행하는 데 도움을 줍니다.

병렬 연산자를 사용하려면 하나 이상의 속성이 하위 카트 속성이어야 하며 두 속성이 동일한 상위 속성 아래에 있어야 합니다.

예를 들어 products.priceproducts.quantity은(는) 호환됩니다. products.priceshoppinglist.quantity은(는) 상위 속성이 서로 다르므로 호환되지 않습니다.

두 개의 배열에 병렬 연산자를 사용할 경우, IT는 각 위치에서 대응하는 값을 더하거나 곱하거나 비교합니다. 예를 들어 PARALLEL_SUM([1, 3, 5], [2, 4, 6])은(는) [3, 7, 11]을(를) 반환합니다.

한 입력값이 배열이고 다른 하나가 스칼라(단일 숫자)인 경우 스칼라는 배열의 길이에 맞게 브로드캐스트됩니다. 예를 들어 PARALLEL_SUM([1, 3, 5], 1)은(는) [2, 4, 6]을(를) 반환하고, PARALLEL_PRODUCT(2, [4, 5, 6])은(는) [8, 10, 12]을(를) 반환합니다.

병렬 연산자가 생성한 파생 속성은 수식에 사용된 상위 카트 속성의 하위 속성이 됩니다. 예를 들어, revenue이(가) 있는 revenue 파생 속성 PARALLEL_PRODUCT(PROPERTY('products.price', 'event'), PROPERTY('products.quantity', 'event'))을(를) 생성하면 products의 하위 속성이 됩니다.

차트에서 병렬 연산자를 사용하여 생성된 파생 속성을 사용하려면 먼저 상위 카트 속성({:} 로 표시됨)을 선택합니다. 그러면 파생 특성이 하위 특성 선택 리스트에 나타납니다.

병렬 연산자 예제

다음과 같은 카트 속성을 가진 구매 이벤트가 있습니다.

json
"Products": [{
    "brand": "Apple","categories": "Digital Content","department": "Electronics",
    "price": 24.99,"quantity": 1
}, {
    "brand": "Adidas","categories": "Newsletter","department": "Electronics",
    "price": 24.99,"quantity": 1
}, {
    "brand": "Fossil","categories": "Digital Content","department": "Women's Clothing",
    "price": 24.99,"quantity": 2
}]

PARALLEL_PRODUCT을(를) 사용하여 Revenue 파생 속성을 생성합니다.

plaintext
PARALLEL_PRODUCT(
    PROPERTY('Products.price', 'event'),
    PROPERTY('Products.quantity','event')
)

이 속성을 차트에 추가하는 경우, Brand(으)로 그룹화하여 브랜드별 수익을 확인할 수 있습니다.

Revenue의 파생된 속성에서 SUM_ARRAY을(를) 사용하여 총 카트 값을 계산할 수도 있습니다.

plaintext
SUM_ARRAY(PROPERTY('Revenue', 'derived'))

이 옵션은 장바구니에 있는 항목에 대한 모든 수익 값의 합계를 반환합니다. 이는 총 장바구니 금액별로 필터링하거나 그룹화하는 데 유용합니다.

일반적인 파생 속성 수식

이 절에서는 파생 속성 수식의 몇 가지 일반적인 사용 사례에 대해 설명합니다.

고객의 나이를 계산합니다.

plaintext
CEIL(
    DIVIDE(
        MINUS(
            PROPERTY('server_upload_time', 'amplitude_user'),
            TIME_TO_LONG(PROPERTY('Created At', 'user'))
        ),
        86400000
    )
)

날짜-시간 데이터 유형을 사용하여 사용자 속성을 추적할 때 이 수식을 사용하며, 이 사용자 속성이 설정될 때 트리거된 이벤트 발생 시간 이후의 해당 사용자의 연령(해당 사용자가 시스템에 존재한 기간)을 계산하려는 경우에 이 수식을 사용하십시오.

등록 이후 일수 계산

이벤트 시간을 날짜 또는 날짜시간 속성과 함께 사용하면 이벤트와 사용자 등록 날짜 같은 고정 날짜 사이에 경과한 일 수를 계산할 수 있습니다. 파생 속성 빌더의 속성 삽입 드롭다운에서 이벤트 시간을 선택한 다음 다음과 같은 수식을 작성합니다.

plaintext
DIVIDE(
    MINUS(
        PROPERTY('Event Time', 'event'),
        TIME_TO_LONG(PROPERTY('registration_date', 'user'))
    ),
    86400000
)

이 예제에서는 registration_date가 날짜/시간 문자열(예: "2023-08-18 17:37:39")으이라고 가정합니다. 수식 내에서 이벤트 시간은 에포크 밀리초 단위의 Long 형식으로 작동합니다. 이 수식은 등록 날짜를 TIME_TO_LONG이 있는 Long로 변환하고 이벤트 시간에서 뺀 다음 하루의 밀리초 단위인 86400000으로 나눕니다.

두 날짜의 대상 구간 차이를 확인하세요

plaintext
DIVIDE(  
  MINUS(  
    DATE_TO_LONG(  
        PROPERTY(  
            'start_date', 'user'  
        )  
    ),  
    DATE_TO_LONG(  
        PROPERTY(  
            'end_date', 'user'  
        )  
    )  
  ),  
  86400000   
)

샘플 출력.

위의 파생 속성에서 Amplitude는 end_datestart_date 속성을 UNIX 타임스탬프로 변환하여 그 대상 구간의 차이를 계산합니다. 그런 다음 Amplitude는 그 결과를 하루의 밀리초 단위인 86400000으로 나눕니다.

이 출력은 double 유형입니다(예: 2.0).

표준화된 날짜 형식 출력

plaintext
IF(  
    DATE_TIME_FORMATTER(  
        PROPERTY(  
            'publishDate',  
            'event'  
        ),  
        "yyyy-MM-dd'T'HH:mm:ssX",  
        'yyyy-MM-dd'  
    )
    contains '-',  
    DATE_TIME_FORMATTER(  
        PROPERTY(  
            'publishDate',  
            'event'  
        ),  
        "yyyy-MM-dd'T'HH:mm:ssX",  
        'yyyy-MM-dd'  
    ),  
    IF(  
        DATE_TIME_FORMATTER(  
            PROPERTY(  
                'publishDate',  
                'event'  
            ),  
            "yyyy-MM-dd HH:mm:ss",  
            'yyyy-MM-dd'  
        )
        contains '-',  
        DATE_TIME_FORMATTER(  
            PROPERTY(  
                'publishDate',  
                'event'  
            ),  
            "yyyy-MM-dd HH:mm:ss",  
            'yyyy-MM-dd'  
        ),  
        DATE_TIME_FORMATTER(  
            PROPERTY(  
                'publishDate',  
                'event'  
            ),  
            "yyyy-MM-dd",  
            'yyyy-MM-dd'  
        )  
    )  
)

샘플 출력.

표준 날짜 형식으로 날짜를 포맷하는 한 가지 방법은 일련의 IF 문을 사용하는 것입니다. 명시도가 더 높은 조건이 먼저 오도록 하십시오. 여기서 $<number>을(를) 실제 속성으로 바꿉니다.

고객이 가입한 연도와 월을 가져옵니다.

plaintext
CONCAT(  
    REGEXEXTRACT(  
        PROPERTY(  
            'start_date',  
            'user'  
        ),  
        'dddd-dd'  
    ), "-01"  
)

이 예제에서 파생 속성은 보다 자세한 값을 포함하는 속성에서 가입 월과 연도를 가져온 다음 "-01"을 추가하여 해당 값을 월의 시작 부분으로 설정합니다. REGEXEXTRACT()을(를) 사용하여 값에서 연도와 월을 가져오고, CONCAT()을(를) 사용하여 "-01"을 추가합니다. 여기서 $<number>을(를) 실제 속성으로 바꿉니다.

기존 속성 값 바꾸기

plaintext
IF(
    OR(
        REGEXEXTRACT(
            PROPERTY(
                "package",
                "event"
                ),
            'Casual'
        ) =='Casual',
        REGEXEXTRACT(
            PROPERTY(
                "package",
                "event"
            ),
            '1 Job Posting'
        )=='1 Job Posting',
        REGEXEXTRACT(
            PROPERTY(
                "package",
                "event"
            ),
            '1 Basic'
        )=='1 Basic'
    ),
    'Casual',
    'False'
)

샘플 출력.

여러 속성 값을 바꾸려면 속성에서 문자열을 가져오고, IF 문 내에서 OR 문을 사용하여 속성에서 가져온 값에 대체하려는 전체 값이 포함되어 있는지 확인하십시오REGEXEXTRACT(). 이 예제에서 속성 값이 지정된 전체 값과 일치하는 경우 수식은 해당 값을 로 Casual바꿉니다. 그렇지 않으면 수식은 해당 속성을 로 False바꿉니다. 여기서 $<number>을(를) 실제 속성으로 바꿉니다.

실수로 문자열로 수집된 배열의 길이 수행 회수가

SPLIT을 사용하여 문자열을 배열 형식으로 변환합니다.

plaintext
SPLIT(  
PROPERTY('color', 'event'),  
','  
)

샘플 출력:

스크린샷 2023-09-28 @ 14.39.54.png

속성 color가 Amplitude에 "Red, Green, Blue" 문자열로 수집되었습니다. SPLIT을 사용한 후의 결과 값은 [Red, Green, Blue]입니다.

ITEM_COUNT를 사용하는 새 파생 특성 첫 사용 후 위의 파생 특성을 사용하십시오.

plaintext
ITEM_COUNT(  
PROPERTY("Transform into Array", "derived")  
)

샘플 출력:

스크린샷 2023-09-28 14.42.30.png

이제 기본 데이터는 배열입니다. ITEM_COUNT는 배열을 구성하는 항목 수를 계산합니다.

이 내용이 도움이 되었나요?