Итераторы

Введение

Итераторы используются для генерации списка наборов аргументов, который используется для итерации по основному блоку логики диггера. То есть диггер выполняет основную логику для каждого элемента этого списка, где элементом является набор аргументов.

Обычно итератор используется, когда вам нужно искать данные на сайте доноре используя различные наборы параметров для поисковой формы, или когда вам нужно забирать данные по определенным датам, используя дату как аргумент запроса.

В настоящий момент поддерживаются итераторы трех типов:
date - итератор по датам
csv - содержит одно поле и несколько значений этого поля в csv формате
fieldset - содержит набор полей и значений.

Можно использовать сразу несколько итераторов разных или одинаковых типов, в этом случае система объединит все итераторы и создаст единый итератор со всеми возможными наборами полей и значений. Это позволяет создавать более короткие записи для повторяющихся значений, например, если мы хотим создать итератор который имеет несколько полей, оптимальный вариант был бы использовать fieldset, но если одно из полей у нас примимает значения скажем от 1 до 10, то нам пришлось бы прописывать в конфигурации все возможные наборы, то есть все 10 наборов. Используя комбинацию из csv и fieldset итераторов, мы сможем укоротить запись итератора:

              iterator:
# ОПИСЫВАЕМ ОСНОВНОЙ НАБОР ПОЛЕЙ И ЗНАЧЕНИЙ
- type: fieldset
    fields:
    - season: fall
      category: athletics

# ОПИСЫВАЕМ ПОЛЕ КОТОРОЕ ПРИНИМАЕТ НЕСКОЛЬКО ЗНАЧЕНИЙ
- type: csv
  name: age
  value: 1,2,3,4,5,6,7,8,9,10
              

В результате получится следующий список наборов полей со значениями, для каждого из которых диггер будет исполнять основной логический блок:

              [
    { "season": "fall", "category": "athletics", "age": 1 },
    { "season": "fall", "category": "athletics", "age": 2 },
    { "season": "fall", "category": "athletics", "age": 3 },
    { "season": "fall", "category": "athletics", "age": 4 },
    { "season": "fall", "category": "athletics", "age": 5 },
    { "season": "fall", "category": "athletics", "age": 6 },
    { "season": "fall", "category": "athletics", "age": 7 },
    { "season": "fall", "category": "athletics", "age": 8 },
    { "season": "fall", "category": "athletics", "age": 9 },
    { "season": "fall", "category": "athletics", "age": 10 }
]
                

Как вы видите, используя комбинацию итераторов, можно быстро и удобно записывать различные наборы аргументов. Далее мы рассмотрим каждый тип итераторов более делально и начнем мы с итераторов типа date.