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

Өнім кодтарын бір жазылымға келтіріп, әр кодтың соңғы жазбасын сақтау.

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

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

products.csv

SKU;Name
  t01 ;Tea old
T01;Tea new
 c01;Coffee

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

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

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

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

БлокБаптау
1
Файл
src
  • Рөл: source
  • Дереккөз: demo_products
  • Оқу баптаулары:
    • Парақ: CSV
    • Ауқым: A1:B4
    • Алғашқы жол — тақырып: так
    • Бөлгіш: ;
2
Мәтінді түрлендіру
text
  • Өрістер: SKU
  • operations:
      • Түрі: trim
      • Түрі: upper
  • null: preserve
3
Қайталанымдарды жою
dedup
  • Кілттер: SKU
  • Сақтау: last
  • comparison: text
  • case_sensitive: так
  • trim: ні
4
Деректер экспорты
out
  • Пішім: csv
  • Файл атауы: products_clean
  • Мақсаты: download
  • Бөлгіш: ;
  • Уақыт белдеуі: Europe/Kyiv

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

  • src out → text in
  • text out → dedup in
  • dedup out → out in
JSON түріндегі толық граф конфигурациясы
{
  "version": 3,
  "nodes": [
    {
      "id": "src",
      "type": "file",
      "label": "src",
      "config": {
        "role": "source",
        "source_id": "demo_products",
        "options": {
          "sheet": "CSV",
          "range": "A1:B4",
          "header": true,
          "delimiter": ";"
        }
      }
    },
    {
      "id": "text",
      "type": "text",
      "label": "text",
      "config": {
        "fields": [
          "SKU"
        ],
        "operations": [
          {
            "kind": "trim"
          },
          {
            "kind": "upper"
          }
        ],
        "null": "preserve"
      }
    },
    {
      "id": "dedup",
      "type": "deduplicate",
      "label": "dedup",
      "config": {
        "keys": [
          "SKU"
        ],
        "keep": "last",
        "comparison": "text",
        "case_sensitive": true,
        "trim": false
      }
    },
    {
      "id": "out",
      "type": "export",
      "label": "out",
      "config": {
        "format": "csv",
        "filename": "products_clean",
        "destination": "download",
        "delimiter": ";",
        "timezone": "Europe/Kyiv"
      }
    }
  ],
  "edges": [
    {
      "source": "src",
      "target": "text",
      "source_port": "out",
      "target_port": "in"
    },
    {
      "source": "text",
      "target": "dedup",
      "source_port": "out",
      "target_port": "in"
    },
    {
      "source": "dedup",
      "target": "out",
      "source_port": "out",
      "target_port": "in"
    }
  ]
}

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

SKUАтау
T01Tea new
C01Coffee

3 кіріс жолынан 2-еуі қалады. «Соңғы» күн бойынша ең жаңасы емес, ағымдағы кіріс ретіндегі соңғысын білдіреді.

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

  1. products.csv файлын бос орындарын алдын ала қолмен жоймай жүктеңіз.
  2. Амал реті: trim, содан кейін upper, содан кейін SKU бойынша қайталанымдарды жою.
  3. Tea old жойылып, Tea new қалғанын және c01 мәні C01 болғанын тексеріңіз.

Жиі қателер

  • Қалыпқа келтіруден бұрын қайталанымдарды жою t01/T01 екі нұсқасын да сақтар еді.
  • keep=unique қайталанатын кілттің барлық жолын жояр еді; бұл — басқа міндет.
  • Дереккөз реті тұрақсыз болса, keep=last ең жаңа бизнес-жазбаны кепілдемейді.