Ingest Segment events directly into your RisingWave database for real-time processing and analytics.
Parameter or clause | Description |
---|---|
data JSONB | Defines the name of column to store the JSON payload from the webhook. Currently, only JSONB type is supported for webhook tables. |
is_batched | Optional, set to true to enable batch ingestion of multiple JSON lines in a single request. |
SECRET <secret> | Use an existing secret to verify incoming webhook requests from Segment. This is optional. You can also use a raw string to verify. |
headers->>'...' | Extracts the signature provided by Segment in the x-signature HTTP header. In secure_compare() function, the whole HTTP header is interpreted as a JSONB object, and you can access the header value using the ->> operator, but only the lower-case header names in the ->> operator, otherwise the verification will fail. |
encode(...) | Computes the expected signature. In the example above, it generates an HMAC SHA-1 hash of the payload (data ) using the secret (test_secret ), encodes it in hexadecimal. |
secure_compare(...) | Validates requests by matching the header signature against the computed signature, ensuring only authenticated requests are processed. The secure_compare() function compares two strings in a fixed amount of time, regardless of whether they are equal or not, ensuring that the comparison is secure and resistant to timing attacks. |
Parameter | Description |
---|---|
HOST | The hostname or IP address where your RisingWave instance is accessible. This could be a domain name or an IP address. |
database | The name of the RisingWave database where your table resides |
schema_name | The schema name of your table, typically public unless specified otherwise. |
table_name | The name of the table you created to receive webhook data, e.g., wbhtable . |
webhook
in the list of available destinations.'TEST_WEBHOOK'
). This ensures that Segment signs the payloads using this secret, allowing RisingWave to validate them.URL
, POST
as Method
.data->'field_name'
in SQL queries.
You can create a materialized view to extract specific fields from the JSON payload.
segmentb_events
like a regular table to perform analytics, generate reports, or trigger further processing.