Міндет және алғышарттар

Тапсырыстарды сома бойынша басым және қалыптыға бөліп, әр тармаққа жеке файл жасау.

Бұл мысал демонстрациялық деректер мен баптауларды қолданады. Өндірістік қабылдаушыларды қоспас бұрын күтілетін нәтижені өз ортаңызда тексеріңіз. Мына идентификаторлар: demo_* мысал ретінде берілген: редакторда өз оқу қосылымдарыңызды немесе дереккөздеріңізді таңдаңыз. Төмендегі JSON дайын тасымалдау архивін емес, блоктар мен байланыстар құрылымын көрсетеді.

Оқу кіріс деректері

orders.csv

Order;Amount
O1;1200
O2;450
O3;1000

Блоктар, байланыстар және нақты баптаулар

Түсіндірме схемаҮлкейту ↗10. Ірі тапсырыстарды бағыттау. Мысал құрылымы: 4 блок, 3 байланыс. Түйін идентификаторлары мен порттары сақталған.
10-ағын схемасы

10-мысал құрылымы: 4 блок, 3 байланыс. Бапталған графтың түйін идентификаторлары мен порттары сақталған.

Конструкторға көрсетілген блоктарды қосып, әрқайсының қасиеттерін ашыңыз және осы мәндерді орнатыңыз. Мына атаулар: demo_* оқу дереккөздері мен қосылымдарын анықтайды.

БлокБаптау
1
Файл
src
  • Рөл: source
  • Дереккөз: demo_orders
  • Оқу баптаулары:
    • Парақ: CSV
    • Ауқым: A1:B4
    • Алғашқы жол — тақырып: так
    • Бөлгіш: ;
2
Бағыттау
router
  • Режим: first
  • Әдепкі бағыт: так
  • Бағыттар:
      • Идентификатор: priority
      • Белгі: Від 1000
      • Режим: all
      • Таңдау шарттары:
          • column: Amount
          • Пайдалану: gte
          • Мәні: 1000
          • Сандық салыстыру: так
          • value_mode: constant
3
Деректер экспорты
priority_out
  • Пішім: csv
  • Файл атауы: priority_orders
  • Мақсаты: download
  • Бөлгіш: ;
  • Уақыт белдеуі: Europe/Kyiv
4
Деректер экспорты
regular_out
  • Пішім: csv
  • Файл атауы: regular_orders
  • Мақсаты: download
  • Бөлгіш: ;
  • Уақыт белдеуі: Europe/Kyiv

Порт байланыстары

  • src out → router in
  • router priority → priority_out in
  • router else → regular_out in
JSON түріндегі толық граф конфигурациясы
{
  "version": 3,
  "nodes": [
    {
      "id": "src",
      "type": "file",
      "label": "src",
      "config": {
        "role": "source",
        "source_id": "demo_orders",
        "options": {
          "sheet": "CSV",
          "range": "A1:B4",
          "header": true,
          "delimiter": ";"
        }
      }
    },
    {
      "id": "router",
      "type": "router",
      "label": "router",
      "config": {
        "mode": "first",
        "default_route": true,
        "routes": [
          {
            "id": "priority",
            "label": "Від 1000",
            "mode": "all",
            "predicates": [
              {
                "column": "Amount",
                "op": "gte",
                "value": 1000,
                "numeric": true,
                "value_mode": "constant"
              }
            ]
          }
        ]
      }
    },
    {
      "id": "priority_out",
      "type": "export",
      "label": "priority_out",
      "config": {
        "format": "csv",
        "filename": "priority_orders",
        "destination": "download",
        "delimiter": ";",
        "timezone": "Europe/Kyiv"
      }
    },
    {
      "id": "regular_out",
      "type": "export",
      "label": "regular_out",
      "config": {
        "format": "csv",
        "filename": "regular_orders",
        "destination": "download",
        "delimiter": ";",
        "timezone": "Europe/Kyiv"
      }
    }
  ],
  "edges": [
    {
      "source": "src",
      "target": "router",
      "source_port": "out",
      "target_port": "in"
    },
    {
      "source": "router",
      "target": "priority_out",
      "source_port": "priority",
      "target_port": "in"
    },
    {
      "source": "router",
      "target": "regular_out",
      "source_port": "else",
      "target_port": "in"
    }
  ]
}

Күтілетін нәтиже

priority_orders.csv: O1=1200 және O3=1000. regular_orders.csv: O2=450. 1000 шекарасы gte арқылы қамтылады.

Іске қосу және тексеру

  1. priority_out шығысын нақты priority портына, regular_out шығысын else портына жалғаңыз.
  2. Салыстыру сандық болуы үшін numeric=true тексеріңіз.
  3. Орындап, шығыс жолдарының қосындысы кіріс санына тең екенін тексеріңіз: 2+1=3.

Жиі қателер

  • gte орнына gt қолдану 1000 сомасын else бағытына жіберер еді.
  • Бірнеше қабаттасқан бағытпен mode=all бір жолды бірнеше тармаққа көшіре алады.
  • Бағытқа бірде-бір жол жетпесе, экспорты өткізілуі мүмкін; файлдың жоқтығы міндетті түрде қате емес.