Skip to content

Commit 1ddf2bb

Browse files
authored
Merge pull request #6353 from segmentio/develop
Release 24.14.2
2 parents cd8c2bd + 95df906 commit 1ddf2bb

File tree

18 files changed

+149
-122
lines changed

18 files changed

+149
-122
lines changed

src/_data/catalog/destination_categories.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# AUTOGENERATED FROM PUBLIC API. DO NOT EDIT
2-
# destination categories last updated 2024-04-02
2+
# destination categories last updated 2024-04-04
33
items:
44
- display_name: A/B Testing
55
slug: a-b-testing

src/_data/catalog/destinations.yml

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# AUTOGENERATED FROM PUBLIC API. DO NOT EDIT
2-
# destination data last updated 2024-04-02
2+
# destination data last updated 2024-04-04
33
items:
44
- id: 637e8d185e2dec264895ea89
55
display_name: 1Flow
@@ -16939,7 +16939,7 @@ items:
1693916939
label: Only Track Known Users
1694016940
- name: devicePropertyAllowlist
1694116941
type: array
16942-
defaultValue: ''
16942+
defaultValue: []
1694316943
description: >-
1694416944
By default, the Braze SDK automatically detects and collects all device
1694516945
properties in DeviceProperties. To override this behavior, provide an
@@ -54842,7 +54842,7 @@ items:
5484254842
browser: true
5484354843
mobile: false
5484454844
server: true
54845-
warehouse: false
54845+
warehouse: true
5484654846
cloudAppObject: false
5484754847
components: []
5484854848
browserUnbundlingSupported: false
@@ -58096,7 +58096,7 @@ items:
5809658096
screen: false
5809758097
page: true
5809858098
platforms:
58099-
browser: false
58099+
browser: true
5810058100
mobile: true
5810158101
server: true
5810258102
warehouse: false
@@ -58111,7 +58111,7 @@ items:
5811158111
mobile: false
5811258112
server: false
5811358113
cloud:
58114-
web: false
58114+
web: true
5811558115
mobile: true
5811658116
server: true
5811758117
settings: []
@@ -58124,7 +58124,7 @@ items:
5812458124
hidden: false
5812558125
defaultTrigger: type = "track"
5812658126
fields:
58127-
- id: 6xJkT6L1ma1A2a1xsiu9sV
58127+
- id: ttZFa3ePvTMVgpiKiEKRxb
5812858128
sortOrder: 0
5812958129
fieldKey: conversionHappenedAt
5813058130
label: Timestamp
@@ -58141,7 +58141,7 @@ items:
5814158141
choices: null
5814258142
dynamic: false
5814358143
allowNull: false
58144-
- id: mJVRJ9sGcqURTQSVmrBXeM
58144+
- id: qDa2X6fpjD2HjGRCLKr7aV
5814558145
sortOrder: 1
5814658146
fieldKey: conversionValue
5814758147
label: Conversion Value
@@ -58150,12 +58150,17 @@ items:
5815058150
The monetary value for this conversion. Example: {“currencyCode”: “USD”,
5815158151
“amount”: “50.0”}.
5815258152
placeholder: ''
58153+
defaultValue:
58154+
currencyCode:
58155+
'@path': $.properties.currency
58156+
amount:
58157+
'@path': $.properties.revenue
5815358158
required: false
5815458159
multiple: false
5815558160
choices: null
5815658161
dynamic: false
5815758162
allowNull: false
58158-
- id: foEFxXqvQhpVUNcqSdGbVm
58163+
- id: 9vnTyhN6sQKsn83mbbfRtt
5815958164
sortOrder: 2
5816058165
fieldKey: eventId
5816158166
label: Event ID
@@ -58171,7 +58176,7 @@ items:
5817158176
choices: null
5817258177
dynamic: false
5817358178
allowNull: false
58174-
- id: qe8iPAgX1Yp2n7JxSHqRQu
58179+
- id: 3vFYDU8SiJU7JkRVfcbEfM
5817558180
sortOrder: 3
5817658181
fieldKey: email
5817758182
label: Email
@@ -58181,12 +58186,14 @@ items:
5818158186
Segment will hash this value before sending it to LinkedIn. One of email
5818258187
or LinkedIn UUID or Axciom ID or Oracle ID is required.
5818358188
placeholder: ''
58189+
defaultValue:
58190+
'@path': $.traits.email
5818458191
required: false
5818558192
multiple: false
5818658193
choices: null
5818758194
dynamic: false
5818858195
allowNull: false
58189-
- id: nH1shvmLyMUQiwfUcov9aF
58196+
- id: c38o7gni9dsLvQ2mMNvZLp
5819058197
sortOrder: 4
5819158198
fieldKey: linkedInUUID
5819258199
label: LinkedIn First Party Ads Tracking UUID
@@ -58203,7 +58210,7 @@ items:
5820358210
choices: null
5820458211
dynamic: false
5820558212
allowNull: false
58206-
- id: gQYncwAatWgacGcnu8EssL
58213+
- id: bxz3ZiYN69JtKHRUMV1ZzR
5820758214
sortOrder: 5
5820858215
fieldKey: acxiomID
5820958216
label: Acxiom ID
@@ -58217,7 +58224,7 @@ items:
5821758224
choices: null
5821858225
dynamic: false
5821958226
allowNull: false
58220-
- id: dsF9HyBJqj9cfCQ7q69gSc
58227+
- id: nQrNduKvXEDzeZLiCFpetj
5822158228
sortOrder: 6
5822258229
fieldKey: oracleID
5822358230
label: Oracle ID
@@ -58232,7 +58239,7 @@ items:
5823258239
choices: null
5823358240
dynamic: false
5823458241
allowNull: false
58235-
- id: atbJuQr3oRC45fzvNntpWj
58242+
- id: oEHnop4FE7g1K3v58mXKUH
5823658243
sortOrder: 7
5823758244
fieldKey: userInfo
5823858245
label: User Info
@@ -58246,7 +58253,7 @@ items:
5824658253
choices: null
5824758254
dynamic: false
5824858255
allowNull: false
58249-
- id: rHspfR462eT5nuGiYyaVaf
58256+
- id: 8XbbzvWqfHS2CnP5xroUnv
5825058257
sortOrder: 8
5825158258
fieldKey: adAccountId
5825258259
label: Ad Account
@@ -58258,7 +58265,7 @@ items:
5825858265
choices: null
5825958266
dynamic: true
5826058267
allowNull: false
58261-
- id: 2tG5SqwxLQrAD2uLge7ST2
58268+
- id: a9cix4ajiPCkRrzK2GskF9
5826258269
sortOrder: 9
5826358270
fieldKey: campaignId
5826458271
label: Add Campaigns to Conversion
@@ -58274,7 +58281,7 @@ items:
5827458281
choices: null
5827558282
dynamic: true
5827658283
allowNull: false
58277-
- id: wNa77N2nT9dhpkLBkYjsdB
58284+
- id: xmmAibWFnzdjAQRtmVhPnp
5827858285
sortOrder: 10
5827958286
fieldKey: conversionRuleId
5828058287
label: Existing Conversion Rule ID
@@ -58288,7 +58295,7 @@ items:
5828858295
choices: null
5828958296
dynamic: true
5829058297
allowNull: false
58291-
- id: 4ZUF6BoCMMX21hqKk9DSA8
58298+
- id: sqRRMDCBS72wqKcj3x1M6n
5829258299
sortOrder: 11
5829358300
fieldKey: name
5829458301
label: Name
@@ -58300,7 +58307,7 @@ items:
5830058307
choices: null
5830158308
dynamic: false
5830258309
allowNull: false
58303-
- id: s9GEnFA2RYU4HorfUikmJi
58310+
- id: 9Rvza87eBc7vQHXLK6HGEb
5830458311
sortOrder: 12
5830558312
fieldKey: conversionType
5830658313
label: Conversion Type
@@ -58384,7 +58391,7 @@ items:
5838458391
value: SALES_QUALIFIED_LEAD
5838558392
dynamic: false
5838658393
allowNull: false
58387-
- id: onxEXKiN22jfWMJkVb8o1j
58394+
- id: wNkv9vT1FDVoXWkQKQcoSo
5838858395
sortOrder: 13
5838958396
fieldKey: attribution_type
5839058397
label: Attribution Type
@@ -58400,7 +58407,7 @@ items:
5840058407
value: LAST_TOUCH_BY_CONVERSION
5840158408
dynamic: false
5840258409
allowNull: false
58403-
- id: wC6GZhNeSdp9kAkkEMjgcF
58410+
- id: rv8ryaiuQC78cK9hnFSANv
5840458411
sortOrder: 14
5840558412
fieldKey: post_click_attribution_window_size
5840658413
label: Post-Click Attribution Window Size
@@ -58424,7 +58431,7 @@ items:
5842458431
value: 90
5842558432
dynamic: false
5842658433
allowNull: false
58427-
- id: h2jjHaUZucSe37sC4ZLSj7
58434+
- id: 8FbAEBwkMEvBuR7tzp1ujs
5842858435
sortOrder: 15
5842958436
fieldKey: view_through_attribution_window_size
5843058437
label: View-Through Attribution Window Size
@@ -58448,7 +58455,7 @@ items:
5844858455
value: 90
5844958456
dynamic: false
5845058457
allowNull: false
58451-
- id: 9K8s7kGDmqVE9USNHsJCab
58458+
- id: xx4ATBDA2cawRcmrCNHV7P
5845258459
sortOrder: 16
5845358460
fieldKey: onMappingSave
5845458461
label: Create a Conversion Rule

src/_data/catalog/destinations_private.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# AUTOGENERATED FROM PUBLIC API. DO NOT EDIT
2-
# destination data last updated 2024-04-02
2+
# destination data last updated 2024-04-04
33
items:
44
- id: 54521fd925e721e32a72eee1
55
display_name: Pardot

src/_data/catalog/source_categories.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# AUTOGENERATED FROM PUBLIC API. DO NOT EDIT
2-
# source categories last updated 2024-04-02
2+
# source categories last updated 2024-04-04
33
items:
44
- display_name: A/B Testing
55
slug: a-b-testing

src/_data/catalog/sources.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# AUTOGENERATED FROM PUBLIC API. DO NOT EDIT
2-
# sources last updated 2024-04-02
2+
# sources last updated 2024-04-04
33
items:
44
- id: 8HWbgPTt3k
55
display_name: .NET

src/_includes/components/actions-fields.html

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,6 @@
3939
</tbody>
4040
</table>
4141

42-
{% else %}
43-
<em>No settings available. The destination may not be publicly visible.</em>
44-
45-
4642
{% endif %}
4743

4844

src/connections/destinations/catalog/actions-kafka/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,4 +100,4 @@ The **Send** Action provides multiple ways to specify which Partition an event s
100100

101101
### What is the "SSL - Reject Unauthorized Certificate Authority" field for?
102102

103-
This field specifies if Segment should reject server connections when a certificate is notsigned by a trusted Certificate Authority (CA). This can be useful for testing purposes or when using a self-signed certificate.
103+
This field specifies if Segment should reject server connections when a certificate is not signed by a trusted Certificate Authority (CA). This can be useful for testing purposes or when using a self-signed certificate.

src/connections/functions/insert-functions.md

Lines changed: 26 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -371,50 +371,40 @@ The editor displays logs and request traces from the batch handler.
371371

372372
The [Public API](/docs/api/public-api) Functions/Preview endpoint also supports testing batch handlers. The payload must be a batch of events as a JSON array.
373373

374+
### Handling filtering in a batch
375+
Events in a batch can be filtered out using custom logic. The filtered events will be surfaced in the [Event Delivery](/docs/connections/event-delivery/) page with reason as `Filtered at insert function`
374376

375-
### Handling batching errors
377+
```js
378+
async function onBatch(events, settings) {
379+
let response = [];
380+
try {
381+
for (const event of events) {
382+
// some business logic to filter event. Here filtering out all the events with name `drop`
383+
if (event.properties.name === 'drop') {
384+
continue;
385+
}
376386

377-
Standard [function error types](/docs/connections/functions/destination-functions/#destination-functions-error-types) apply to batch handlers. Segment attempts to retry the batch in the case of Timeout or Retry errors. For all other error types, Segment discards the batch. It's also possible to report a partial failure by returning status of each event in the batch. Segment retries only the failed events in a batch until those events are successful or until they result in a permanent error.
387+
// some enrichments if needed
388+
event.properties.message = "Enriched from insert function";
378389

379-
```json
380-
[
381-
{
382-
"status": 200
383-
},
384-
{
385-
"status": 400,
386-
"errormessage": "Bad Request"
387-
},
388-
{
389-
"status": 200
390-
},
391-
{
392-
"status": 500,
393-
"errormessage": "Error processing request"
394-
},
395-
{
396-
"status": 500,
397-
"errormessage": "Error processing request"
398-
},
399-
{
400-
"status": 200
401-
},
402-
]
390+
// Enriched events are pushed to response
391+
response.push(event);
392+
}
393+
} catch (error) {
394+
console.log(error)
395+
throw new RetryError('Failed function', error);
396+
}
397+
398+
// return a subset of transformed event
399+
return response;
400+
}
403401
```
404402

405-
For example, after receiving the responses above from the `onBatch` handler, Segment only retries **event_4** and **event_5**.
406403

407-
| Error Type | Result |
408-
| ---------------------- | ------- |
409-
| Bad Request | Discard |
410-
| Invalid Settings | Discard |
411-
| Message Rejected | Discard |
412-
| RetryError | Retry |
413-
| Timeout | Retry |
414-
| Unsupported Event Type | Discard |
404+
### Handling batching errors
415405

406+
Standard [function error types](/docs/connections/functions/destination-functions/#destination-functions-error-types) apply to batch handlers. Segment attempts to retry the batch in the case of Timeout or Retry errors. For all other error types, Segment discards the batch.
416407

417-
{% comment %}
418408

419409
## Destination insert functions logs and errors
420410

src/connections/reverse-etl/reverse-etl-source-setup-guides/databricks-setup.md

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,29 +4,33 @@ title: Databricks Reverse ETL Setup
44

55
Set up Databricks as your Reverse ETL source.
66

7-
At a high level, when you set up Databricks for Reverse ETL, the configured user needs read permissions for any resources (databases, schemas, tables) the query needs to access. Segment keeps track of changes to your query results with a managed schema (`__SEGMENT_REVERSE_ETL`), which requires the configured user to allow write permissions for that schema.
7+
At a high level, when you set up Databricks for Reverse ETL, the configured service-principal needs read permissions for any resources (databases, schemas, tables) the query needs to access. Segment keeps track of changes to your query results with a managed schema (`__SEGMENT_REVERSE_ETL`), which requires the configured service-principal to allow write permissions for that schema.
8+
9+
> info ""
10+
> Segment supports only OAuth (M2M) authentication. To generate a client ID and Secret, follow the steps listed in Databricks' [OAuth machine-to-machine (M2M) authentication](https://docs.databricks.com/en/dev-tools/auth/oauth-m2m.html){:target="_blank"} documentation.
11+
812

913
## Required permissions
10-
* Make sure the user or the service principal you use to connect to Segment has permissions to use that warehouse. In the Databricks console go to **SQL warehouses** and select the warehouse you're using. Navigate to **Overview > Permissions** and make sure the user or the service principal you use to connect to Segment has *can use* permissions.
14+
* Make sure the service principal you use to connect to Segment has permissions to use that warehouse. In the Databricks console go to **SQL warehouses** and select the warehouse you're using. Navigate to **Overview > Permissions** and make sure the service principal you use to connect to Segment has *can use* permissions.
1115

1216
* To grant access to read data from the tables used in the model query, run:
1317

1418
```
15-
GRANT USAGE ON SCHEMA <schema_name> TO `<user or service principal you are using to connect to Segment>`;
16-
GRANT SELECT, READ_METADATA ON SCHEMA <schema_name> TO `<user or service principal you are using to connect to Segment>`;
19+
GRANT USAGE ON SCHEMA <schema_name> TO `<service principal you are using to connect to Segment>`;
20+
GRANT SELECT, READ_METADATA ON SCHEMA <schema_name> TO `<service principal you are using to connect to Segment>`;
1721
```
1822
1923
* To grant Segment access to create a schema to keep track of the running syncs, run:
2024
2125
```
22-
GRANT CREATE on catalog <name of the catalog, usually hive_metastore or main if using unity-catalog> TO `<user or service principal you are using to connect to Segment>`;
26+
GRANT CREATE on catalog <name of the catalog, usually hive_metastore or main if using unity-catalog> TO `<service principal you are using to connect to Segment>`;
2327
```
2428
2529
* If you want to create the schema yourself instead and then give Segment access to it, run:
2630
2731
```
2832
CREATE SCHEMA IF NOT EXISTS __segment_reverse_etl;
29-
GRANT ALL PRIVILEGES ON SCHEMA __segment_reverse_etl TO `<user or service principal you are using to connect to Segment>`;
33+
GRANT ALL PRIVILEGES ON SCHEMA __segment_reverse_etl TO `<service principal you are using to connect to Segment>`;
3034
```
3135
3236
## Set up guide
@@ -46,12 +50,14 @@ To set up Databricks as your Reverse ETL source:
4650
* Hostname: `adb-xxxxxxx.azuredatabricks.net`
4751
* Http Path: `/sql/1.0/warehouses/xxxxxxxxx`
4852
* Port: `443` (default)
49-
* Token: `<your-token>`
50-
* Catalog [optional]: `hive_metastore` (default)
53+
* Service principal client ID: `<your client ID>`
54+
* OAuth secret: `<OAuth secret used during connection>`
55+
* Catalog [optional]: If not specified, Segment will use the default catalog
5156
11. Click **Test Connection** to see if the connection works. If the connection fails, make sure you have the right permissions and credentials, then try again.
5257
12. Click **Add source** if the test connection is successful.
5358
54-
> info ""
55-
> To generate a token, follow the steps listed in the [Databricks docs](https://docs.databricks.com/dev-tools/auth.html#pat){:target="_blank"}. Segment recommends you create a token with no expiration date by leaving the lifetime field empty when creating it. If you already have a token with an expiration date, be sure to keep track of the date and renew it on time.
59+
> warning ""
60+
> Segment previously supported token-based authentication, but now uses OAuth (M2M) authentication at the recommendation of Databricks.
61+
> If you previously set up your source using token-based authentication, Segment will continue to support it. If you want to create a new source or update the connection settings of an existing source, Segment only supports [OAuth machine-to-machine (M2M) authentication](https://docs.databricks.com/en/dev-tools/auth/oauth-m2m.html){:target="_blank"}.
5662
5763
Once you've succesfully added your Databricks source, [add a model](/docs/connections/reverse-etl/#step-2-add-a-model) and follow the rest of the steps in the Reverse ETL setup guide.

0 commit comments

Comments
 (0)