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

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

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

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

sales.csv

ID;Qty
1;2
2.0;5
4;1

prices.csv

ID;Price
1.0;5
2;3
3;4

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

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

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

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

БлокБаптау
1
Файл
sales
  • Рөл: source
  • Дереккөз: demo_join_sales
  • Оқу баптаулары:
    • Парақ: CSV
    • Ауқым: A1:B4
    • Алғашқы жол — тақырып: так
    • Бөлгіш: ;
2
Файл
prices
  • Рөл: source
  • Дереккөз: demo_join_prices
  • Оқу баптаулары:
    • Парақ: CSV
    • Ауқым: A1:B4
    • Алғашқы жол — тақырып: так
    • Бөлгіш: ;
3
Join — кілт бойынша біріктіру
join
  • Кірістер:
      • Идентификатор: sales
      • alias: sales
      • Идентификатор: prices
      • alias: prices
      • Біріктіру түрі: left
      • Кілттер қатынасы: many_to_one
      • Кілттер:
          • Сол өріс: sales.ID
          • Оң өріс: ID
          • Сандық салыстыру: так
  • Null кілттер тең: ні
  • Ондық бөлгіш: .
4
Деректер экспорты
out
  • Пішім: json
  • Файл атауы: sales_with_prices
  • Мақсаты: download
  • Бөлгіш: ;
  • Уақыт белдеуі: Europe/Kyiv

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

  • sales out → join sales
  • prices out → join prices
  • join out → out in
JSON түріндегі толық граф конфигурациясы
{
  "version": 3,
  "nodes": [
    {
      "id": "sales",
      "type": "file",
      "label": "sales",
      "config": {
        "role": "source",
        "source_id": "demo_join_sales",
        "options": {
          "sheet": "CSV",
          "range": "A1:B4",
          "header": true,
          "delimiter": ";"
        }
      }
    },
    {
      "id": "prices",
      "type": "file",
      "label": "prices",
      "config": {
        "role": "source",
        "source_id": "demo_join_prices",
        "options": {
          "sheet": "CSV",
          "range": "A1:B4",
          "header": true,
          "delimiter": ";"
        }
      }
    },
    {
      "id": "join",
      "type": "join",
      "label": "join",
      "config": {
        "inputs": [
          {
            "id": "sales",
            "alias": "sales"
          },
          {
            "id": "prices",
            "alias": "prices",
            "how": "left",
            "cardinality": "many_to_one",
            "keys": [
              {
                "left": "sales.ID",
                "right": "ID",
                "numeric": true
              }
            ]
          }
        ],
        "nulls_equal": false,
        "decimal": "."
      }
    },
    {
      "id": "out",
      "type": "export",
      "label": "out",
      "config": {
        "format": "json",
        "filename": "sales_with_prices",
        "destination": "download",
        "delimiter": ";",
        "timezone": "Europe/Kyiv"
      }
    }
  ],
  "edges": [
    {
      "source": "sales",
      "target": "join",
      "source_port": "out",
      "target_port": "sales"
    },
    {
      "source": "prices",
      "target": "join",
      "source_port": "out",
      "target_port": "prices"
    },
    {
      "source": "join",
      "target": "out",
      "source_port": "out",
      "target_port": "in"
    }
  ]
}

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

sales.IDsales.Qtyprices.IDprices.Price
121.05
2.0523
41NULLNULL

Сандық салыстыру 1 және 1.0 мәндерін тең деп есептейді. LEFT JOIN ID=4 жолын бос бағамен сақтайды.

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

  1. Екі дереккөзді қосып, бөлек атаулы Join кірістеріне жалғаңыз.
  2. sales бірінші кірісін кілтсіз орнатыңыз; екінші prices кірісіне кілттерді анықтаңыз.
  3. Орындап, 3 жолды тексеріңіз; ID=4 үшін кездейсоқ қойылған баға емес, NULL болуы керек.

Жиі қателер

  • Сол кілт бүркеншік атауды қамтуы керек: жай ID емес, sales.ID.
  • Бір ID үшін екі баға many_to_one талабын бұзады және анықтамалықта түзетілуі керек.
  • numeric өшірулі болса, "2.0" және "2" мәтіндік мәндері тең емес.