Выберите строки для импорта

Область применения: зелёная галочка соединители SaaS красный значок X соединители баз данных зелёная галочка соединители на основе запросов

Фильтрация строк позволяет использовать только необходимые данные, применяя условия, аналогичные предложению SQL WHERE . Это повышает производительность (особенно для начальных нагрузок с историческими данными) и сводит к минимуму дублирование данных (особенно в средах разработки).

Поддерживаемые соединители

Как работает фильтрация строк

Фильтрация строк действует как 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 нет
< <= Да
> >= Да

Поведение фильтрации строк в пограничных случаях

В следующей таблице описывается поведение фильтрации строк в сценариях пограничных вариантов.

Сценарий Поведение Требуется обновление
Строка не соответствует фильтру при начальной загрузке, а затем обновляется так, чтобы соответствовать фильтру при последующей загрузке. Строка обрабатывается при следующем обновлении конвейера. нет
Строка соответствует фильтру при изначальной загрузке, а затем обновляется так, что она больше ему не соответствует. Строка не удаляется во время следующего обновления конвейера. нет
Запрос обновляется, а ранее неиспользаемая строка теперь совпадает. Строка не обрабатывается при следующем обновлении конвейера. Да (требуется полное обновление)
Запрос был обновлён, и ранее загруженная строка больше не совпадает. Строка не удаляется во время следующего обновления конвейера. нет

Дополнительные ресурсы