Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: соединители SaaS
соединители баз данных
соединители на основе запросов
Фильтрация строк позволяет использовать только необходимые данные, применяя условия, аналогичные предложению SQL WHERE . Это повышает производительность (особенно для начальных нагрузок с историческими данными) и сводит к минимуму дублирование данных (особенно в средах разработки).
Поддерживаемые соединители
- Google Analytics
- Salesforce
- ServiceNow
- Все коннекторы на основе запросов, включая Oracle, Teradata, SQL Server, MySQL, MariaDB и PostgreSQL
Как работает фильтрация строк
Фильтрация строк действует как WHERE фильтр в SQL. Значения в источнике можно сравнить с целыми числами, логическими значениями, строками и другими типами данных. Вы также можете использовать сложные сочетания предложений для извлечения только необходимых данных.
Фильтрация строк применяется как во время начальной загрузки, так и последующих добавочных обновлений.
Ограничения
Фильтрация строк имеет следующие ограничения:
Salesforce: фильтрация строк поддерживается только в двух столбцах: первичный ключ (идентификатор, если он доступен) и столбец курсора. Соединитель выбирает столбец курсора из следующего списка в порядке предпочтений:
SystemModstamp,LastModifiedDate,CreatedDateиLoginTime.ServiceNow:
- Поддерживается только оператор
AND. ОператорORв настоящее время недоступен. Например,u_age = 40 AND u_active = TRUEработает, ноu_age = 40 OR u_active = TRUEне работает. - Метки времени в фильтрах должны быть в следующем формате:
YYYY-MM-DD HH: mm:SS(например,2004-03-02 17:14:59). - Чтобы отфильтровать поле ссылки, сравните его
valueподфилд сsys_idуказанной записью (например,assigned_to.value = '5137153cc611227c000bbd1bd8cd2005'). Соединитель применяет фильтры ссылочных полей после извлечения строк из ServiceNow, поэтому объем данных, считываемых соединителем из источника, не ограничен.
- Поддерживается только оператор
Обновления строк или запросов: соединитель не удаляет строку, если она соответствует фильтру при начальной загрузке, но обновляется строка или запрос, так что они больше не соответствуют при последующей загрузке. Конвейер также не загружает строку, которая не соответствовала запросу в предыдущем обновлении, но теперь соответствует запросу в последующем обновлении.
Настройка фильтрации строк
Чтобы настроить конвейер с фильтрацией строк, добавьте row_filter конфигурацию в спецификацию конвейера. Рассмотрим пример.
pipeline_spec = """
{
"name": "...",
"ingestion_definition": {
"connection_name": "...",
"objects": [
{
"table": {
"source_schema": "...",
"source_table": "...",
"destination_catalog": "...",
"destination_schema": "...",
"destination_table": "...",
"table_configuration": {
"row_filter": "..."
}
}
}
]
},
"channel": "PREVIEW"
}
"""
create_pipeline(pipeline_spec)
Примеры
Salesforce
Прием данных после определенной системной метки времени:
"row_filter": "SystemModstamp > '2025-06-10T23:40:11.000-07:00'"
Загрузка конкретной строки
"row_filter": "Id = 'a00Qy00000vps2NIAQ'"
Google Analytics
Замечание
Числовые столбцы, такие как event_timestamp (a long), должны использовать неквотируемые числовые литералы в значении фильтра (например, event_timestamp >= 1712224270703246). Кавычки числовых значений предотвращают фильтрацию на стороне сервера, что приводит к медленным первоначальным загрузкам. Строковые столбцы, такие как event_date, должны быть заключены в кавычки (например, event_date >= '20240101').
Прием данных после определенной метки времени события:
"row_filter": "event_timestamp >= 1712224270703246"
Прием данных для определенной даты события:
"row_filter": "event_date = '2025-01-01'"
Ингест данных для активных пользователей:
"row_filter": "is_active_user = TRUE"
Прием данных для не веб-платформ:
"row_filter": "platform != 'WEB'"
Прием данных с несколькими условиями:
"row_filter": "event_timestamp >= 1712224270703246 AND (platform != 'WEB' OR is_active_user = FALSE)"
ServiceNow
Прием данных после определенной метки времени события:
"row_filter": "sys_updated_on > '2004-03-02 17:14:59'"
Ингест данных для активных пользователей:
"row_filter": "u_active = TRUE"
Прием данных для конкретных пользователей:
"row_filter": "u_name = 'johnsmith'"
Прием данных с несколькими условиями:
"row_filter": "u_active = TRUE AND u_name = 'johnsmith'"
Загрузка строк, ссылающихся на определенную запись:
"row_filter": "assigned_to.value = '5137153cc611227c000bbd1bd8cd2005'"
Поддерживаемые операторы
В следующей таблице показано, какие операторы поддерживаются для фильтрации строк:
| Operator | Поддерживается |
|---|---|
AND |
Да |
OR |
Только Salesforce и Google Analytics |
= |
Да |
!= |
Да |
LIKE |
нет |
IN |
нет |
<
<=
|
Да |
>
>=
|
Да |
Поведение фильтрации строк в пограничных случаях
В следующей таблице описывается поведение фильтрации строк в сценариях пограничных вариантов.
| Сценарий | Поведение | Требуется обновление |
|---|---|---|
| Строка не соответствует фильтру при начальной загрузке, а затем обновляется так, чтобы соответствовать фильтру при последующей загрузке. | Строка обрабатывается при следующем обновлении конвейера. | нет |
| Строка соответствует фильтру при изначальной загрузке, а затем обновляется так, что она больше ему не соответствует. | Строка не удаляется во время следующего обновления конвейера. | нет |
| Запрос обновляется, а ранее неиспользаемая строка теперь совпадает. | Строка не обрабатывается при следующем обновлении конвейера. | Да (требуется полное обновление) |
| Запрос был обновлён, и ранее загруженная строка больше не совпадает. | Строка не удаляется во время следующего обновления конвейера. | нет |