askill
rt-config

rt-configSafety 95Repository

Configure RT 2.0 (Real-Time Personalization) for parent segments including event tables, key events, RT attributes, and ID stitching using tdx ps rt commands or API

8 stars
1.2k downloads
Updated 2/15/2026

Package Files

Loading files...
SKILL.md

RT 2.0 Configuration

Configure real-time personalization for parent segments: event tables, RT attributes, batch attributes, and ID stitching.

Prerequisites

  • tdx CLI installed and authenticated
  • Parent segment created in Data Workbench
  • RT 2.0 enabled by CSM (contact CSM if not enabled)
  • Streaming event tables configured and receiving data

Quick Start

# Check RT status
tdx ps view <parent_segment_id> --json

# Initialize configuration template
tdx ps pz init <parent_segment_id> -o rt_config.yaml

# Validate configuration
tdx ps rt validate rt_config.yaml

# Push configuration
tdx ps push rt_config.yaml

Configuration Structure

parent_segment_id: "394649"

# Event tables to track
events:
  - name: "page_view"
    database: "events_db"
    table: "web_events"
    filter:
      field: "td_path"
      pattern: "^/pageview/"

  - name: "purchase"
    database: "events_db"
    table: "commerce_events"
    filter:
      field: "event_type"
      pattern: "^purchase$"

# Real-time attributes
attributes:
  # Single - Latest value
  - name: "last_product_viewed"
    type: "single"
    source_event: "page_view"
    source_field: "product_id"
    aggregation: "last"
    sensitivity: "non-sensitive"

  # List - Array with expiry
  - name: "viewed_products_30d"
    type: "list"
    source_event: "page_view"
    source_field: "product_id"
    aggregation: "distinct_list"
    max_items: 50
    expiry_days: 30
    sensitivity: "non-sensitive"

  # Counter - Event counts
  - name: "purchase_count_7d"
    type: "counter"
    source_event: "purchase"
    window_duration: "7d"
    aggregation: "count"
    sensitivity: "non-sensitive"

  # Imported batch - From parent segment
  - name: "customer_tier"
    type: "imported_batch"
    source: "parent_segment"
    sensitivity: "non-sensitive"

# ID stitching
id_stitching:
  primary_key: "td_client_id"
  stitching_keys:
    - name: "td_client_id"
      exclude_regex: "^test_.*"
    - name: "email"
      exclude_regex: ".*@test\\.com$"
    - name: "user_id"
  ext_lookup_key: "email"

Attribute Types

Single Attributes

Latest or first value from event field:

- name: "last_page_url"
  type: "single"
  source_event: "page_view"
  source_field: "url"
  aggregation: "last"  # or "first", "sum", "min", "max"

List Attributes

Distinct values with expiry:

- name: "browsed_categories"
  type: "list"
  source_event: "page_view"
  source_field: "category"
  aggregation: "distinct_list"
  max_items: 100
  expiry_days: 60

Counter Attributes

Event counts over time window:

- name: "clicks_24h"
  type: "counter"
  source_event: "click"
  window_duration: "24h"  # 24h, 7d, 30d
  aggregation: "count"    # or "sum" with source_field

Imported Batch Attributes

From parent segment (updated on schedule):

- name: "total_lifetime_value"
  type: "imported_batch"
  source: "parent_segment"
  sensitivity: "non-sensitive"

Event Filters

Filter events by field pattern:

events:
  - name: "add_to_cart"
    database: "events_db"
    table: "web_events"
    filter:
      field: "td_path"
      pattern: "^/cart/add"

Common patterns:

  • ^/pageview/ - Starts with /pageview/
  • ^purchase$ - Exactly "purchase"
  • .*product.* - Contains "product"

ID Stitching

id_stitching:
  primary_key: "td_client_id"        # Unique, stable identifier
  stitching_keys:
    - name: "td_client_id"
      exclude_regex: "^test_.*"      # Exclude test IDs
    - name: "email"
      exclude_regex: ".*@example\\.com$"
    - name: "user_id"
  ext_lookup_key: "email"            # External lookup (optional)

Requirements:

  • primary_key must be in stitching_keys
  • All keys should exist in event tables
  • Use exclude_regex to filter invalid values

View Configuration

# View current RT config
tdx ps view <parent_segment_id> --json

# Check event tables
tdx ps view <parent_segment_id> --json | jq '.realtime_config.events'

# List RT attributes (API)
tdx api "/audiences/<parent_segment_id>/realtime_attributes" --type cdp

# List key events (API)
tdx api "/audiences/<parent_segment_id>/realtime_key_events" --type cdp

Update Configuration

Update via API (no YAML update available yet):

# Update event tables
tdx api "/audiences/<parent_segment_id>/realtime_setting" --type cdp --method PATCH --data '{
  "event_tables": [
    {
      "database": "events_db",
      "table": "web_events",
      "event_name": "page_view",
      "filter_field": "td_path",
      "filter_pattern": "^/pageview/"
    }
  ],
  "key_columns": {
    "primary_key": "td_client_id",
    "stitching_keys": ["td_client_id", "email", "user_id"]
  }
}'

# Add RT attribute
tdx api "/audiences/<parent_segment_id>/realtime_attributes" --type cdp --method POST --data '{
  "name": "last_product_viewed",
  "type": "single",
  "source_event": "page_view",
  "source_field": "product_id",
  "aggregation": "last",
  "sensitivity": "non-sensitive"
}'

# Add key event
tdx api "/audiences/<parent_segment_id>/realtime_key_events" --type cdp --method POST --data '{
  "name": "purchase",
  "event_name": "purchase",
  "description": "Customer completed purchase"
}'

Validation

# Validate YAML syntax
tdx ps rt validate rt_config.yaml

# Check for common issues:
# - primary_key not in stitching_keys
# - duplicate attribute names
# - invalid regex patterns
# - missing required fields

Discover Available Data

# List databases
tdx databases --json

# List tables in database
tdx tables list <database_name> --json

# View table schema
tdx table describe <database_name> <table_name>

# Preview table data
tdx query "select * from <database>.<table> limit 10"

# Check parent segment attributes (batch layer)
tdx ps view <parent_segment_id> --json | jq '.attributes'

Common Patterns

E-commerce

events:
  - name: "product_view"
    database: "events"
    table: "web_events"
    filter: {field: "event_type", pattern: "^product_view$"}

  - name: "add_to_cart"
    database: "events"
    table: "web_events"
    filter: {field: "event_type", pattern: "^add_to_cart$"}

  - name: "purchase"
    database: "events"
    table: "commerce_events"
    filter: {field: "event_type", pattern: "^purchase$"}

attributes:
  - name: "last_product_viewed"
    type: "single"
    source_event: "product_view"
    source_field: "product_id"
    aggregation: "last"

  - name: "cart_value"
    type: "single"
    source_event: "add_to_cart"
    source_field: "total_amount"
    aggregation: "sum"

  - name: "purchase_count_30d"
    type: "counter"
    source_event: "purchase"
    window_duration: "30d"

Media/Content

events:
  - name: "content_view"
    database: "events"
    table: "content_events"
    filter: {field: "action", pattern: "^view$"}

attributes:
  - name: "viewed_content_ids"
    type: "list"
    source_event: "content_view"
    source_field: "content_id"
    aggregation: "distinct_list"
    max_items: 100
    expiry_days: 90

  - name: "favorite_category"
    type: "single"
    source_event: "content_view"
    source_field: "category"
    aggregation: "last"

Common Errors

ErrorSolution
"RT 2.0 not enabled"Contact CSM to enable RT 2.0 for parent segment
"Parent segment not found"Verify parent segment ID with tdx ps list
"Event table not accessible"Check table exists: tdx tables list <database>
"Invalid regex pattern"Test regex separately, escape special characters
"Duplicate attribute name"Remove duplicate or rename attribute
"Primary key not in stitching_keys"Add primary_key to stitching_keys list
"Unknown event name"Verify event defined in events section

Next Steps

After RT configuration:

  • RT Triggers: Create event-triggered journeys → Use rt-triggers skill
  • RT Personalization: Create personalization services → Use rt-personalization skill

Detailed Guides

Resources

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

92/100Analyzed 2/19/2026

Comprehensive technical reference skill for configuring RT 2.0 Real-Time Personalization in Treasure Data CDP. Excellent structure with prerequisites, quick start, detailed YAML configuration examples, attribute types, event filters, ID stitching, validation, common patterns, and error troubleshooting. High actionability with copy-paste ready commands and clear step-by-step guidance. Well-suited for reusability with multiple use cases (e-commerce, media) and no internal project dependencies. Minor deduction for being product-specific to Treasure Data.

95
90
90
95
92

Metadata

Licenseunknown
Version-
Updated2/15/2026
Publishertreasure-data

Tags

apidatabasegithub-actionstesting