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

Жоқ мәндер мен теріс сандарды түзету, Excel қателерін алмастыру және жарамсыз мәтіні бар жолдарды қабылдамау.

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

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

quality.csv

ID;Qty;Price
A;;10
B;-2;5
C;3;#N/A
D;4;unknown

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

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

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

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

БлокБаптау
1
Файл
src
  • Рөл: source
  • Дереккөз: demo_quality
  • Оқу баптаулары:
    • Парақ: CSV
    • Ауқым: A1:C5
    • Алғашқы жол — тақырып: так
    • Бөлгіш: ;
2
Деректерді тазалау және тексеру
quality
  • Ережелер:
      • Өрістер: Qty
      • Шарт: empty
      • Әрекет: replace
      • Мәні: 0
      • Өрістер: Qty
      • Шарт: negative
      • Әрекет: positive
      • Өрістер: Price
      • Шарт: excel_error
      • Әрекет: null
      • Өрістер: Price
      • Шарт: invalid_number
      • Әрекет: skip_row
  • whitespace_empty: так
  • log_limit: 20
3
Деректер экспорты
out
  • Пішім: json
  • Файл атауы: quality_clean
  • Мақсаты: download
  • Бөлгіш: ;
  • Уақыт белдеуі: Europe/Kyiv

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

  • src out → quality in
  • quality out → out in
JSON түріндегі толық граф конфигурациясы
{
  "version": 3,
  "nodes": [
    {
      "id": "src",
      "type": "file",
      "label": "src",
      "config": {
        "role": "source",
        "source_id": "demo_quality",
        "options": {
          "sheet": "CSV",
          "range": "A1:C5",
          "header": true,
          "delimiter": ";"
        }
      }
    },
    {
      "id": "quality",
      "type": "quality",
      "label": "quality",
      "config": {
        "rules": [
          {
            "fields": [
              "Qty"
            ],
            "condition": "empty",
            "action": "replace",
            "value": 0
          },
          {
            "fields": [
              "Qty"
            ],
            "condition": "negative",
            "action": "positive"
          },
          {
            "fields": [
              "Price"
            ],
            "condition": "excel_error",
            "action": "null"
          },
          {
            "fields": [
              "Price"
            ],
            "condition": "invalid_number",
            "action": "skip_row"
          }
        ],
        "whitespace_empty": true,
        "log_limit": 20
      }
    },
    {
      "id": "out",
      "type": "export",
      "label": "out",
      "config": {
        "format": "json",
        "filename": "quality_clean",
        "destination": "download",
        "delimiter": ";",
        "timezone": "Europe/Kyiv"
      }
    }
  ],
  "edges": [
    {
      "source": "src",
      "target": "quality",
      "source_port": "out",
      "target_port": "in"
    },
    {
      "source": "quality",
      "target": "out",
      "source_port": "out",
      "target_port": "in"
    }
  ]
}

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

IDQtyPrice
A010
B25
C3NULL

D жолы қабылданбайды. Ережелер ретімен орындалады: #N/A алдымен NULL болады және келесі ереже оны жарамсыз сан деп қабылдамайды.

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

  1. quality.csv жүктеп, ережелерді көрсетілген ретпен сақтаңыз.
  2. Ағынды орындап, сапа блогының мәліметтері мен алмастыру журналын ашыңыз.
  3. 3 нәтиже жолын, Qty(A)=0, Qty(B)=2 және Price(C)=NULL тексеріңіз; журнал 20 өзгеріс мысалымен шектелген.

Жиі қателер

  • Соңғы екі ереженің орнын ауыстыру нәтижені өзгертеді: #N/A NULL-ға алмастырылғанға дейін қабылданбауы мүмкін.
  • condition=invalid_number сандық емес мәндерді қабылдамайды. condition=text кез келген бос емес мәтінді, соның ішінде CSV сандық жолдарын қабылдамайды; бұл мысалға жарамайды.
  • log_limit өңделетін жол санын емес, журнал мысалдарын шектейді.