InterSystems IRIS-da Python Gateway

Ushbu maqola Python Gateway, InterSystems IRIS ma'lumotlar platformasi uchun ochiq manbali hamjamiyat loyihasi haqida. Ushbu loyiha sizga Python-da yaratilgan har qanday mashinani o'rganish algoritmlarini (ko'plab ma'lumotlar olimlari uchun asosiy muhit) tartibga solishga, InterSystems IRIS platformasida tezda moslashuvchan, robotlashtirilgan AI / ML-analitik echimlarni yaratish uchun ko'plab tayyor kutubxonalardan foydalanishga imkon beradi. Ushbu maqolada men InterSystems IRIS Python-da jarayonlarni qanday boshqarishi, ikki tomonlama ma'lumotlarni samarali ravishda uzatishi va aqlli biznes jarayonlarini yaratishi mumkinligini ko'rsataman.

Reja

  1. Kirish.
  2. Asboblar.
  3. O'rnatish
  4. API.
  5. O'zaro hamkorlik.
  6. Jupyter daftar.
  7. Natijalar.
  8. Havolalar.
  9. MLToolkit.

kirish

Python yuqori darajadagi, umumiy maqsadli dasturlash tili bo'lib, ishlab chiquvchilarning unumdorligini va kodni o'qish qobiliyatini yaxshilashga qaratilgan. Ushbu maqolalar turkumida men InterSystems IRIS platformasida Python-dan foydalanish imkoniyatlarini muhokama qilaman, ushbu maqolaning asosiy yo'nalishi Python-dan mashina o'rganish modellarini yaratish va ishga tushirish uchun til sifatida foydalanishdir.

Mashinani o'rganish (ML) - bu sun'iy intellekt usullari sinfi bo'lib, uning xarakterli xususiyati muammoni to'g'ridan-to'g'ri hal qilish emas, balki ko'plab shunga o'xshash muammolarni hal qilish jarayonida o'rganishdir.

Mashinani o'rganish algoritmlari va modellari keng tarqalgan. Buning sabablari juda ko'p, ammo barchasi mavjudlik, soddalik va amaliy natijalarga erishish bilan bog'liq. Klasterlash yoki hatto neyron tarmoqlarni modellashtirish yangi texnologiyami?

Albatta yo'q, lekin hozirgi kunda bitta modelni ishga tushirish uchun yuz minglab kod satrlarini yozishning hojati yo'q, modellarni yaratish va ulardan foydalanish xarajatlari tobora kamayib bormoqda.

Asboblar rivojlanmoqda - bizda to'liq GUI-markazli AI/ML vositalari mavjud bo'lmasa-da, biz BI (kod yozishdan tortib ramkalar va GUI-markazli sozlanishi mumkin bo'lgan echimlar) kabi boshqa ko'plab axborot tizimlari sinflarida ko'rgan yutuqlarimizdir. AI/ML yaratish vositalarida ham kuzatilgan. Biz allaqachon kod yozish bosqichidan o'tdik va bugun biz modellarni yaratish va o'qitish uchun ramkalardan foydalanamiz.

Oldindan o'qitilgan modelni tarqatish qobiliyati kabi boshqa yaxshilanishlar, bunda oxirgi foydalanuvchi o'zining maxsus ma'lumotlari bo'yicha modelni o'qitishni tugatishi kerak, shuningdek, mashinani o'rganishni boshlashni osonlashtiradi. Ushbu yutuqlar professionallar va umuman kompaniyalar uchun mashinani o'rganishni ancha osonlashtiradi.

Boshqa tomondan, biz ko'proq va ko'proq ma'lumotlarni to'playmiz. InterSystems IRIS kabi yagona ma'lumotlar platformasi bilan ushbu ma'lumotlarning barchasi darhol tayyorlanishi va mashinani o'rganish modellariga kirish sifatida ishlatilishi mumkin.

Bulutga o'tish bilan AI/ML loyihalarini ishga tushirish har qachongidan ham osonlashmoqda. Biz faqat kerakli resurslarni iste'mol qila olamiz. Bundan tashqari, bulutli platformalar tomonidan taqdim etilgan parallelizatsiya tufayli biz sarflangan vaqtni tejashimiz mumkin.

Ammo natijalar haqida nima deyish mumkin? Bu erda ishlar yanada murakkablashadi. Modellarni qurish uchun ko'plab vositalar mavjud, men ularni keyinroq muhokama qilaman. Yaxshi model yaratish oson emas, ammo keyin nima qilish kerak? Biznes modelidan foyda olish ham ahamiyatsiz vazifadir. Muammoning ildizi analitik va tranzaksiyaviy ish yuklarini va ma'lumotlar modellarini ajratishdir. Biz modelni o'rgatganimizda, odatda, biz buni tarixiy ma'lumotlar asosida qilamiz. Ammo tuzilgan model uchun joy tranzaktsion ma'lumotlarni qayta ishlashda. Agar biz uni kuniga bir marta ishlatsak, firibgarlik tranzaksiyalarini aniqlashning eng yaxshi modelidan nima foyda? Firibgarlar uzoq vaqtdan beri pul bilan ketishgan. Biz modelni tarixiy ma'lumotlarga o'rgatishimiz kerak, lekin biz uni real vaqt rejimida yangi kiruvchi ma'lumotlarga qo'llashimiz kerak, shunda bizning biznes jarayonlarimiz model tomonidan bashorat qilingan prognozlarga asoslanadi.

ML asboblar to'plami aynan shu maqsadni amalga oshirishga qaratilgan vositalar to'plamidir: tuzilgan modellar bevosita biznes jarayonlaringizda osongina ishlatilishi uchun modellar va tranzaksiya muhitini birlashtiradi. Python Gateway ML Toolkit tarkibiga kiradi va Python tili bilan integratsiyani ta'minlaydi (R Gateway kabi, ML Toolkit tarkibiga kiruvchi R tili bilan integratsiyani ta'minlaydi).

Uskunalar to'plami

Davom etishdan oldin, men keyinroq ishlatadigan bir nechta Python vositalari va kutubxonalarini tasvirlab bermoqchiman.

texnologiya

  • Python - bu talqin qilinadigan, yuqori darajadagi, umumiy maqsadli dasturlash tili. Tilning asosiy afzalligi uning matematik, ML va AI kutubxonalarining katta kutubxonasidir. ObjectScript kabi, u ob'ektga yo'naltirilgan tildir, lekin hamma narsa statik emas, balki dinamik tarzda aniqlanadi. Bundan tashqari, hamma narsa ob'ektdir. Keyinchalik maqolalar til bilan o'tkinchi tanishishni nazarda tutadi. Agar siz o'rganishni boshlamoqchi bo'lsangiz, men boshlashni tavsiya qilaman hujjatlar.
  • Keyingi mashqlarimiz uchun o'rnating Python 3.6.7 64 bit.
  • IDE: Men foydalanaman PyCharm, lekin umuman olganda ular много. Agar siz Atelier dan foydalansangiz, Python ishlab chiquvchilari uchun Eclipse plagini mavjud. Agar siz VS kodidan foydalansangiz, Python uchun kengaytma mavjud.
  • Notebook: IDE o'rniga siz skriptlaringizni onlayn daftarlarda yozishingiz va almashishingiz mumkin. Ulardan eng mashhuri Yupyter.

Kutubxonalar

Bu erda mashina o'rganish kutubxonalarining (to'liq bo'lmagan) ro'yxati:

  • Yomon — aniq hisob-kitoblar uchun asosiy paket.
  • Pandas — yuqori samarali maʼlumotlar tuzilmalari va maʼlumotlarni tahlil qilish vositalari.
  • matplotlib - grafiklarni yaratish.
  • Dengiz tug'ilishi — matplotlib asosidagi maʼlumotlarni vizuallashtirish.
  • Sklearn - mashinani o'rganish usullari.
  • XGBoost — gradientni oshirish metodologiyasi doirasida mashinani oʻrganish algoritmlari.
  • Gensim - NLP.
  • Keras - neyron tarmoqlar.
  • Tensor oqimi — mashinani oʻrganish modellarini yaratish platformasi.
  • PyTorch Python-ga yo'naltirilgan mashinani o'rganish modellarini yaratish uchun platformadir.
  • Nyoka - Turli modellardan PMML.

AI/ML texnologiyalari biznesni yanada samarali va moslashuvchan qiladi. Bundan tashqari, bugungi kunda ushbu texnologiyalarni ishlab chiqish va amalga oshirish osonroq bo'ladi. AI/ML texnologiyalari va ular tashkilotingizni rivojlantirishga qanday yordam berishi haqida o‘rganishni boshlang.

sozlama

Python Gatewayni o'rnatish va undan foydalanishning bir necha yo'li mavjud:

  • OS
    • Windows
    • Linux
    • Mac
  • Docker
    • DockerHub-dan rasmdan foydalaning
    • O'zingizning ko'rinishingizni yarating

O'rnatish usulidan qat'i nazar, sizga manba kodi kerak bo'ladi. Kodni yuklab olish uchun yagona joy chiqaradigan sahifa. Unda sinovdan o'tgan barqaror versiyalar mavjud, faqat oxirgisini oling. Ayni paytda u 0.8, lekin vaqt o'tishi bilan yangilari paydo bo'ladi. Repozitariyni klonlamang/yuklab olmang, eng so‘nggi versiyasini yuklab oling.

OS

Agar siz Python Gateway-ni operatsion tizimga o'rnatayotgan bo'lsangiz, birinchi navbatda (operatsion tizimdan qat'iy nazar) Python-ni o'rnatishingiz kerak. Buning uchun:

  1. Python 3.6.7 64 bitni o'rnating. Python-ni standart katalogga o'rnatish tavsiya etiladi.
  2. Modulni o'rnating dill: pip install dill.
  3. ObjectScript kodini yuklab oling (masalan, do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) mahsulotlar bilan istalgan hududga. Mavjud hududni mahsulotlarni qo'llab-quvvatlashni istasangiz, quyidagilarni bajaring: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Joy qo'ng'iroq DLL/SO/DYLIB jildga bin InterSystems IRIS misolingiz. Kutubxona fayli qaytarilgan yo'lda mavjud bo'lishi kerak write ##class(isc.py.Callout).GetLib().

Windows

  1. Atrof-muhit o'zgaruvchisiga ishonch hosil qiling PYTHONHOME Python 3.6.7 ga ishora qiladi.
  2. Tizim muhiti o'zgaruvchisi ekanligiga ishonch hosil qiling PATH o‘zgaruvchini o‘z ichiga oladi PYTHONHOME (yoki u ko'rsatgan katalog).

Linux (Debian/Ubuntu)

  1. Atrof-muhit o'zgaruvchisi ekanligini tekshiring PATH o'z ichiga oladi /usr/lib и /usr/lib/x86_64-linux-gnu. Fayldan foydalaning /etc/environment muhit o'zgaruvchilarini o'rnatish uchun.
  2. Xatolar bo'lsa undefined symbol: _Py_TrueStruct sozlamani o'rnating PythonLib. Shuningdek Readme "Muammolarni bartaraf etish" bo'limi mavjud.

Mac

  1. Hozirda faqat Python 3.6.7 qo'llab-quvvatlanadi python.org. O'zgaruvchini tekshiring PATH.

Agar siz muhit o'zgaruvchilarini o'zgartirgan bo'lsangiz, InterSystems mahsulotingizni qayta ishga tushiring.

Docker

Konteynerlardan foydalanish bir qator afzalliklarga ega:

  • Portativlik
  • Samaradorlik
  • Izolyatsiya
  • Yengillik
  • O'zgarmaslik

Buni tekshiring maqolalar turkumi Docker-dan InterSystems mahsulotlari bilan foydalanish haqida ko'proq ma'lumot olish uchun.

Barcha Python Gateway tuzilmalari hozirda konteynerga asoslangan 2019.4.

Tayyor rasm

Yugurish: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestInterSystems IRIS Community Edition bilan Python Gateway-ni yuklab oling va ishga tushiring. Ana xolos.

O'zingizning ko'rinishingizni yarating

Docker tasvirini yaratish uchun omborning ildizida ishga tushiring: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Odatiy bo'lib, rasm tasvir asosida qurilgan store/intersystems/iris-community:2019.4.0.383.0, ammo o'zgaruvchini o'rnatish orqali buni o'zgartirishingiz mumkin IMAGE.
InterSystems IRIS-dan qurish uchun quyidagilarni bajaring: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemcommmunity/irispy:latest ".

Shundan so'ng siz docker tasvirini ishga tushirishingiz mumkin:

docker run -d 
  -p 52773:52773 
  -v /<HOST-DIR-WITH-iris.key>/:/mount 
  --name irispy 
  intersystemscommunity/irispy:latest 
  --key /mount/iris.key

InterSystems IRIS Community Edition-ga asoslangan rasmdan foydalanayotgan bo'lsangiz, kalitni o'tkazib yuborishingiz mumkin.

Comments

  • Sinov jarayoni isc.py.test.Process bir qancha tasvirlarni vaqtinchalik katalogga saqlaydi. Siz ushbu yo'lni o'rnatilgan katalogga o'zgartirishingiz mumkin. Buning uchun sozlamani tahrirlang WorkingDir o'rnatilgan katalogni belgilash.
  • Terminal ishga kirish uchun: docker exec -it irispy sh.
  • Tizimni boshqarish portaliga kirish orqali kirish SuperUser/SYS.
  • Konteynerni to'xtatish uchun quyidagilarni bajaring: docker stop irispy && docker rm --force irispy.

O'rnatishni tekshirish

Python Gateway-ni o'rnatganingizdan so'ng, u ishlayotganligini tekshirishga arziydi. InterSystems IRIS terminalida ushbu kodni bajaring:

set sc = ##class(isc.py.Callout).Setup() 
set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).
write var

Natija quyidagicha bo'lishi kerak: HELLO - Python o'zgaruvchan qiymati x. Qaytish holati bo'lsa sc xato yoki var bo'sh, tekshiring Readme - Muammolarni bartaraf etish bo'limi.

API

Python Gateway o'rnatildi va siz uning ishlashini tasdiqladingiz. Undan foydalanishni boshlash vaqti keldi!
Python-ning asosiy interfeysi isc.py.Main. U quyidagi usullar guruhlarini taklif qiladi (barchasi qaytar %Status):

  • Kodning bajarilishi
  • Ma'lumot uzatish
  • Filial

Kodning bajarilishi

Bu usullar ixtiyoriy Python kodini bajarishga imkon beradi.

SimpleString

SimpleString - bu asosiy usul. Buning uchun 4 ta ixtiyoriy argument kerak:

  • code — bajariladigan kod qatori. Satr tasma belgisi: $c(10).
  • returnVariable — qaytariladigan oʻzgaruvchining nomi.
  • serialization - qanday qilib seriallashtirish kerak returnVariable. 0 — string (standart), 1 — repr.
  • result — Qiymat yozilgan oʻzgaruvchiga ByRef havolasi returnVariable.

Yuqorida biz shunday qildik:

set sc = ##class(isc.py.Main).SimpleString("x='HELLO'", "x", , .var).

Ushbu misolda biz Python o'zgaruvchisini tayinlaymiz x ma'no Hello va Python o'zgaruvchisining qiymatini qaytarishni xohlaysiz x ObjectScript o'zgaruvchisiga var.

ExecuteCode

ExecuteCode xavfsizroq va kamroq cheklovchi muqobildir SimpleString.
InterSystems IRIS platformasidagi satrlar 3 belgi bilan cheklangan va agar siz uzunroq kod qismini bajarishni istasangiz, iplardan foydalanishingiz kerak.
Ikki dalil qabul qilinadi:

  • code — bajariladigan Python kodining satri yoki oqimi.
  • variable — (ixtiyoriy) bajarilish natijasini belgilaydi code bu Python o'zgaruvchisi.

Foydalanishga misol:

set sc = ##class(isc.py.Main).ExecuteCode("2*3", "y").

Ushbu misolda biz 2 ni 3 ga ko'paytiramiz va natijani Python o'zgaruvchisiga yozamiz y.

Ma'lumot uzatish

Python-ga va undan ma'lumotlarni uzatish.

Python -> InterSystems IRIS

InterSystems IRIS-da Python o'zgaruvchisi qiymatini olishning 4 yo'li mavjud, bu sizga kerak bo'lgan ketma-ketlashtirishga bog'liq:

  • String oddiy ma'lumotlar turlari va disk raskadrovka uchun.
  • Repr oddiy ob'ektlarni saqlash va disk raskadrovka uchun.
  • JSON InterSystems IRIS tomonida ma'lumotlarni oson manipulyatsiya qilish uchun.
  • Pickle ob'ektlarni saqlash uchun.

Ushbu usullar Python'dan o'zgaruvchilarni satr yoki oqim sifatida olish imkonini beradi.

  • GetVariable(variable, serialization, .stream, useString) - ol serialization o'zgaruvchan variable в stream. agar useString 1 bo'ladi va ketma-ketlashtirish satrga joylashtiriladi, keyin oqim emas, balki satr qaytariladi.
  • GetVariableJson(variable, .stream, useString) - o'zgaruvchining JSON seriyasini olish.
  • GetVariablePickle(variable, .stream, useString, useDill) -o'zgaruvchining Pickle (yoki Dill) seriyasini oling.

Keling, o'zgaruvchimizni olishga harakat qilaylik y.

set sc = ##class(isc.py.Main).GetVariable("y", , .val, 1)
write val
>6

InterSystems IRIS -> Python

InterSystems IRIS-dan Python-ga ma'lumotlarni yuklash.

  • ExecuteQuery(query, variable, type, namespace) - ma'lumotlar to'plamini yaratadi (pandas dataframe yoki list) sql so'rovidan va uni Python o'zgaruvchisiga o'rnatadi variable. Plastik sumka isc.py hududda mavjud bo'lishi kerak namespace — so‘rov o‘sha yerda bajariladi.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - global ma'lumotlarni yuklaydi global subscriptdan start uchun end Pythonda tur o'zgaruvchisi sifatida type: list, yoki pandalar dataframe. Ixtiyoriy argumentlarning tavsifi mask va labels sinf hujjatlari va omborida mavjud Ma'lumotlarni uzatish hujjatlari.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - sinf ma'lumotlarini yuklaydi class id dan start uchun end Pythonda tur o'zgaruvchisi sifatida type: list, yoki pandalar dataframe. properties — maʼlumotlar toʻplamiga yuklanishi kerak boʻlgan sinf xususiyatlarining roʻyxati (vergul bilan ajratilgan). Maskalar qo'llab-quvvatlanadi * и ?. Birlamchi - * (barcha xususiyatlar). Mulk %%CLASSNAME e'tiborga olinmagan.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - jadval ma'lumotlarini yuklaydi table id dan start uchun end Pythonda.

ExecuteQuery — universal (har qanday to'g'ri SQL so'rovi Pythonga uzatiladi). Biroq, ExecuteGlobal va uning o'ramlari ExecuteClass и ExecuteTable bir qator cheklovlar bilan ishlash. Ular ancha tezroq (ODBC drayveridan 3-5 baravar tezroq va 20 baravar tezroq). ExecuteQuery). Batafsil maʼlumot quyidagi manzilda Ma'lumotlarni uzatish hujjatlari.
Ushbu usullarning barchasi istalgan hududdan ma'lumotlarni uzatishni qo'llab-quvvatlaydi. Plastik sumka isc.py maqsadli hududda mavjud bo'lishi kerak.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) - har qanday to'g'ri SQL so'rovi natijalarini Python-ga o'tkazish. Bu ma'lumotlarni uzatishning eng sekin usuli. Agar foydalaning ExecuteGlobal va uning o'ramlari mavjud emas.

Argumentlar:

  • query - sql so'rovi.
  • variable — maʼlumotlar yoziladigan Python oʻzgaruvchisining nomi.
  • type - list yoki Pandalar dataframe.
  • namespace — so‘rov bajariladigan hudud.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - Python-da global o'tish.

Argumentlar:

  • global - global nomsiz ^
  • variable — maʼlumotlar yoziladigan Python oʻzgaruvchisining nomi.
  • type - list yoki Pandalar dataframe.
  • start — globalning birinchi obunasi. Majburiy %Integer.
  • end — globalning oxirgi obunasi. Majburiy %Integer.
  • mask - global qiymat niqobi. Niqob global maydonlar sonidan qisqaroq bo'lishi mumkin (bu holda oxiridagi maydonlar o'tkazib yuboriladi). Maskani qanday formatlash mumkin:
    • + qiymatni avvalgidek o'tkazing.
    • - qiymatni o'tkazib yuborish.
    • b — mantiqiy turi (0 - False, qolganlari - True).
    • d — Sana ($horolog dan, Windowsda 1970 yildan, Linuxda 1900 yildan).
    • t — Vaqt ($horolog, yarim tundan keyin soniyalar).
    • m — Vaqt tamg‘asi (YIL-OY-KUN SOAT:MINUTE:SECOND formati).
  • labels — % Ustun nomlari roʻyxati. Birinchi element - subscriptning nomi.
  • namespace — so‘rov bajariladigan hudud.

ExecuteClass

O'rash ExecuteGlobal. Sinf ta'rifiga asoslanib, qo'ng'iroqni tayyorlaydi ExecuteGlobal va uni chaqiradi.

ExecuteClass(class, variable, type, start, end, properties, namespace) - Python-da sinf ma'lumotlarini uzatish.

Argumentlar:

  • class - sinf nomi
  • variable — maʼlumotlar yoziladigan Python oʻzgaruvchisining nomi.
  • type - list yoki Pandalar dataframe.
  • start - boshlang'ich identifikatori.
  • end - yakuniy identifikator
  • properties — maʼlumotlar toʻplamiga yuklanishi kerak boʻlgan sinf xususiyatlarining roʻyxati (vergul bilan ajratilgan). Maskalar qo'llab-quvvatlanadi * и ?. Birlamchi - * (barcha xususiyatlar). Mulk %%CLASSNAME e'tiborga olinmagan.
  • namespace — so‘rov bajariladigan hudud.

Tur xususiyatlaridan tashqari barcha xususiyatlar uzatiladi %Date, %Time, %Boolean и %TimeStamp - ular tegishli Python sinflariga aylantiriladi.

Execute Table

O'rash ExecuteClass. Jadval nomini sinf nomiga va qo'ng'iroqlarga tarjima qiladi ExecuteClass. Imzo:

ExecuteTable(table, variable, type, start, end, properties, namespace) - jadval ma'lumotlarini Pythonga uzatish.

Argumentlar:

  • table - jadval nomi.
    Boshqa barcha argumentlar avvalgidek uzatiladi ExecuteClass.

Eslatmalar

  • ExecuteGlobal, ExecuteClass и ExecuteTable bir xil tezlikda ishlang.
  • ExecuteGlobal dan 20 marta tezroq ExecuteQuery katta ma'lumotlar to'plamlarida (uzatish vaqti > 0.01 soniya).
  • ExecuteGlobal, ExecuteClass и ExecuteTable ushbu tuzilma bilan globallarda ishlash: ^global(key) = $lb(prop1, prop2, ..., propN) qayerda key - butun son.
  • uchun ExecuteGlobal, ExecuteClass и ExecuteTable qo'llab-quvvatlanadigan qiymatlar diapazoni %Date diapazonga mos keladi mktime va operatsion tizimga bog'liq (windows: 1970-01-01, Linux 1900-01-01, Mac). Foydalanish %TimeStampbu diapazondan tashqarida ma'lumotlarni uzatish yoki pandas dataframe-dan foydalanish, chunki bu faqat ro'yxatdagi cheklovdir.
  • uchun ExecuteGlobal, ExecuteClass и ExecuteTable ma'lumotlar manbai (global, sinf yoki jadval) va o'zgaruvchidan tashqari barcha argumentlar ixtiyoriydir.

misollar

Sinov sinfi isc.py.test.Person barcha ma'lumotlarni uzatish imkoniyatlarini ko'rsatadigan usulni o'z ichiga oladi:

set global = "isc.py.test.PersonD"
set class = "isc.py.test.Person"
set table = "isc_py_test.Person"
set query = "SELECT * FROM isc_py_test.Person"

// Общие аргументы
set variable = "df"
set type = "dataframe"
set start = 1
set end = $g(^isc.py.test.PersonD, start)

// Способ 0: ExecuteGlobal без аргументов
set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 0, type)

// Способ 1: ExecuteGlobal с аргументами    
// При передаче глобала названия полей задаются вручную
// globalKey - название сабсткрипта 
set labels = $lb("globalKey", "Name", "DOB", "TS", "RandomTime", "AgeYears", "AgeDecimal", "AgeDouble", "Bool")

// mask содержит на 1 элемент меньше чем labels потому что "globalKey" - название сабскипта
// Пропускаем %%CLASSNAME
set mask = "-+dmt+++b"

set sc = ##class(isc.py.Main).ExecuteGlobal(global, variable _ 1, type, start, end, mask, labels)

// Способ 2: ExecuteClass
set sc = ##class(isc.py.Main).ExecuteClass(class, variable _ 2, type, start, end)

// Способ 3: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteTable(table, variable _ 3, type, start, end)

// Способ 4: ExecuteTable
set sc = ##class(isc.py.Main).ExecuteQuery(query, variable _ 4, type)

Usulni chaqiring do ##class(isc.py.test.Person).Test() barcha ma'lumotlarni uzatish usullari qanday ishlashini ko'rish uchun.

Yordamchi usullar

  • GetVariableInfo(variable, serialization, .defined, .type, .length) — oʻzgaruvchi haqida maʼlumot oling: u aniqlanganmi, klassi va seriyalanish uzunligi.
  • GetVariableDefined(variable, .defined) — o‘zgaruvchining aniqlanganligi.
  • GetVariableType(variable, .type) - o'zgaruvchining sinfini oling.
  • GetStatus() - Python tomonidagi oxirgi istisnoni oling va olib tashlang.
  • GetModuleInfo(module, .imported, .alias) — modul oʻzgaruvchisini va import holatini olish.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) — funksiya haqida ma’lumot olish.

O'zaro ishlash qobiliyati

Siz terminaldan Python Gateway-ga qanday qo'ng'iroq qilishni o'rgandingiz, endi uni ishlab chiqarishda qo'llashni boshlaylik. Ushbu rejimda Python bilan ishlash uchun asos isc.py.ens.Operation. Bu bizga imkon beradi:

  • Python-da kodni bajaring
  • Python kontekstini saqlash/qayta tiklash
  • Python-dan ma'lumotlarni yuklang va oling

Asosan, Python operatsiyasi - bu o'rash isc.py.Main. Operatsiya isc.py.ens.Operation InterSystems IRIS mahsulotlaridan Python jarayoni bilan o'zaro ishlash imkoniyatini beradi. Beshta so'rov qo'llab-quvvatlanadi:

  • isc.py.msg.ExecutionRequest Python kodini bajarish uchun. Qaytadi isc.py.msg.ExecutionResponse bajarilish natijasi va so'ralgan o'zgaruvchilarning qiymatlari bilan.
  • isc.py.msg.StreamExecutionRequest Python kodini bajarish uchun. Qaytadi isc.py.msg.StreamExecutionResponse bajarilish natijasi va so'ralgan o'zgaruvchilarning qiymatlari. Analog isc.py.msg.ExecutionRequest, lekin satrlar o'rniga oqimlarni qabul qiladi va qaytaradi.
  • isc.py.msg.QueryRequest SQL so'rovini bajarish natijasini uzatish uchun. Qaytadi Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest global/sinf/jadval ma'lumotlarini uzatish uchun. Qaytadi Ens.Response.
  • isc.py.msg.SaveRequest Python kontekstini saqlash uchun. Qaytadi Ens.StringResponse kontekst identifikatori bilan.
  • isc.py.msg.RestoreRequest Python kontekstini tiklash uchun.

    Bundan tashqari, isc.py.ens.Operation ikkita sozlamalar mavjud:

    • Initializer — interfeysni amalga oshiradigan sinfni tanlash isc.py.init.Abstract. U funksiyalarni, modullarni, sinflarni va hokazolarni yuklash uchun ishlatilishi mumkin. Jarayon boshlanganda bir marta bajariladi.
    • PythonLib - (Faqat Linuxda) yuklashda xatoliklarni ko'rsangiz, uning qiymatini o'rnating libpython3.6m.so yoki hatto Python kutubxonasiga to'liq yo'lda.

Biznes jarayonlarini yaratish

Biznes jarayonlarini rivojlantirishga yordam beradigan ikkita sinf mavjud:

  • isc.py.ens.ProcessUtils o'zgaruvchan almashtirish bilan faoliyatdan izohlarni chiqarish imkonini beradi.
  • isc.py.util.BPEmulator Python bilan biznes jarayonlarini sinab ko'rishni osonlashtiradi. U joriy jarayonda biznes jarayonini (Python qismlari) bajarishi mumkin.

O'zgaruvchan almashtirish

Barcha biznes jarayonlari meros qilib olingan isc.py.ens.ProcessUtils, usulidan foydalanishi mumkin GetAnnotation(name) faoliyat annotatsiyasi qiymatini uning nomi bilan olish uchun. Faoliyat izohida Python-ga o'tishdan oldin InterSystems IRIS tomonida hisoblab chiqiladigan o'zgaruvchilar bo'lishi mumkin. Mana o'zgaruvchini almashtirish sintaksisi:

  • ${class:method:arg1:...:argN} - usul chaqiruvi
  • #{expr} — ObjectScript tilida kodni bajarish.

Sinov biznes jarayonida misol mavjud isc.py.test.Process, masalan, faoliyatda Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Ushbu misolda:

  • #{process.WorkDirectory} ob'ektning WorkDirectory xususiyatini qaytaradi process, bu sinfning namunasi isc.py.test.Process bular. joriy biznes jarayoni.
  • ${%PopulateUtils:Integer:1:100} usulni chaqiradi Integer daraja %PopulateUtils, o'tish argumentlari 1 и 100, diapazonda tasodifiy butun sonni qaytarish 1...100.

Test biznes jarayoni

Sinov mahsulotlari va test biznes jarayonlari sukut bo'yicha Python Gatewayning bir qismi sifatida mavjud. Ulardan foydalanish uchun:

  1. OS terminalida quyidagilarni bajaring: pip install pandas matplotlib seaborn.
  2. InterSystems IRIS terminalida quyidagilarni bajaring: do ##class(isc.py.test.CannibalizationData).Import() test ma'lumotlarini to'ldirish uchun.
  3. Mahsulotlarni ishga tushirish isc.py.test.Production.
  4. So'rov turini yuborish Ens.Request в isc.py.test.Process.

Keling, barchasi birgalikda qanday ishlashini ko'rib chiqaylik. Ochiq isc.py.test.Process BPL muharririda:

InterSystems IRIS-da Python Gateway

Kodning bajarilishi

Eng muhim muammo Python kodini bajarishdir:

InterSystems IRIS-da Python Gateway

So'rov ishlatilgan isc.py.msg.ExecutionRequest, bu erda uning xususiyatlari:

  • Code - Python kodi.
  • SeparateLines — kodni bajarish uchun satrlarga bo'lish kerakmi. $c(10) (n) qatorlarni ajratish uchun ishlatiladi. Shuni esda tutingki, butun xabarni bir vaqtning o'zida qayta ishlash TAVSIYA EMAS, bu funksiya faqat qayta ishlash uchun mo'ljallangan def va shunga o'xshash ko'p qatorli ifodalar. Standart 0.
  • Variables — javobga qoʻshiladigan oʻzgaruvchilarning vergul bilan ajratilgan roʻyxati.
  • Serialization - Biz qaytarmoqchi bo'lgan o'zgaruvchilarni qanday ketma-ketlashtirish kerak. Variantlar: Str, Repr, JSON, Pickle и Dill, standart Str.

Bizning holatlarimizda biz faqat mulkni o'rnatamiz Code, shuning uchun boshqa barcha xususiyatlar standart qiymatlardan foydalanadi. Biz uni qo'ng'iroq qilish orqali o'rnatdik process.GetAnnotation("Import pandas"), bu ish vaqtida o'zgaruvchilarni almashtirish amalga oshirilgandan so'ng izohni qaytaradi. Axir, kod import pandas as pd Pythonga uzatiladi. GetAnnotation ko'p qatorli Python skriptlarini olish uchun foydali bo'lishi mumkin, ammo kodni olishning ushbu usulida hech qanday cheklovlar yo'q. Siz mulkni o'rnatishingiz mumkin Code siz uchun qulay bo'lgan har qanday usulda.

O'zgaruvchilarni olish

Foydalanishda yana bir qiziqarli muammo isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

InterSystems IRIS-da Python Gateway

U Python tomonidagi korrelyatsiya matritsasini hisoblab chiqadi va o'zgaruvchini chiqaradi corrmat so'rov xususiyatlarini o'rnatish orqali JSON formatida InterSystems IRIS ga qaytish:

  • Variables: "corrmat"
  • Serialization: "JSON"

Natijalarni Visual Trace-da ko'rishimiz mumkin:

InterSystems IRIS-da Python Gateway

Va agar bizga BPda bu qiymat kerak bo'lsa, uni quyidagicha olishimiz mumkin: callresponse.Variables.GetAt("corrmat").

Ma'lumot uzatish

Keyinchalik, InterSystems IRIS-dan Python-ga ma'lumotlarni uzatish haqida gapiraylik; ma'lumotlarni uzatish uchun barcha so'rovlar interfeysni amalga oshiradi. isc.py.msg.DataRequestu quyidagi xususiyatlarni beradi:

  • Variable — ma'lumotlar yoziladigan Python o'zgaruvchisi.
  • Type - o'zgaruvchan turi: dataframe (pandas dataframe) yoki list.
  • Namespace — biz maʼlumot oladigan hudud. Plastik sumka isc.py bu sohada mavjud bo'lishi kerak. Bu mahsulotni qo'llab-quvvatlamaydigan hudud bo'lishi mumkin.

Ushbu interfeys asosida so'rovlarning 4 klassi amalga oshiriladi:

  • isc.py.msg.QueryRequest - mulkni o'rnatish Query SQL so'rovini yuborish uchun.
  • isc.py.msg.ClassRequest - mulkni o'rnatish Class sinf ma'lumotlarini uzatish uchun.
  • isc.py.msg.TableRequest - mulkni o'rnatish Table jadval ma'lumotlarini uzatish uchun.
  • isc.py.msg.GlobalRequest - mulkni o'rnatish Global global ma'lumotlarni uzatish uchun.

Sinov jarayonida faoliyatga qarang RAWqayerda isc.py.msg.QueryRequest harakatda namoyon bo'ladi.

InterSystems IRIS-da Python Gateway

Python kontekstini saqlash/tiklash

Va nihoyat, biz Python kontekstini InterSystems IRIS-da saqlashimiz mumkin, buning uchun biz yuboramiz isc.py.msg.SaveRequest argumentlar bilan:

  • Mask — Faqat niqobga mos keladigan oʻzgaruvchilar saqlanadi. Qo'llab-quvvatlanadi * и ?. Misol: "Data*, Figure?"... Standart *.
  • MaxLength — Saqlangan oʻzgaruvchining maksimal uzunligi. Agar o'zgaruvchining ketma-ketligi uzoqroq bo'lsa, u e'tiborga olinmaydi. Har qanday uzunlikdagi o'zgaruvchilarni olish uchun 0 ga o'rnating. Standart $$$MaxStringLength.
  • Name — Kontekst nomi (ixtiyoriy).
  • Description — Kontekst tavsifi (ixtiyoriy).

Qaytish Ens.StringResponse с Id saqlangan kontekst. Sinov jarayonida faoliyatga qarang Save Context.

Tegishli so'rov isc.py.msg.RestoreRequest InterSystems IRIS-dan Python-ga kontekstni yuklaydi:

  • ContextId — kontekst identifikatori.
  • Clear — qayta tiklashdan oldin kontekstni tozalang.

Yupyter daftarchasi

Yupyter daftarchasi kod, vizualizatsiya va matnni o'z ichiga olgan daftarlarni yaratish va nashr etish imkonini beruvchi ochiq kodli veb-ilovadir. Python Gateway BPL jarayonlarini Jupyter Notebook shaklida ko'rish va tahrirlash imkonini beradi. E'tibor bering, hozirda oddiy Python 3 ijrochisi qo'llaniladi.

Ushbu kengaytma izohlarda Python kodini o'z ichiga oladi va oldingi sarlavhalar sifatida faoliyat nomlaridan foydalanadi. Endi Jupyter Notebook-da PythonGateway biznes jarayonlarini ishlab chiqish mumkin. Mana nima mumkin:

  • Yangi biznes jarayonlarini yarating
  • Biznes jarayonlarini o'chirish
  • Yangi faoliyat yarating
  • Faoliyatni o'zgartirish
  • Faoliyatlarni o'chirish

shu yerda demo video. Va bir nechta skrinshotlar:

Jarayon Explorer

InterSystems IRIS-da Python Gateway

Jarayon muharriri

InterSystems IRIS-da Python Gateway

sozlama

  1. Sizga InterSystems IRIS 2019.2+ kerak bo'ladi.
  2. PythonGateway v0.8+ ni o'rnating (faqat talab qilinadi isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. ObjectScript kodini ombordan yangilang.
  4. Yugur do ##class(isc.py.util.Jupyter).Install() va ko'rsatmalarga amal qiling.

hujjatlar.

topilmalar

MLToolkit - bu o'rnatilgan modellarni bevosita biznes jarayonlaringizda osongina ishlatish uchun modellar va tranzaksiya muhitini birlashtirish bo'lgan vositalar to'plami. Python Gateway MLToolkit-ning bir qismi bo'lib, Python tili bilan integratsiyani ta'minlaydi, bu sizga Python-da yaratilgan har qanday mashinani o'rganish algoritmlarini (ko'plab ma'lumotlar olimlari uchun asosiy muhit) tartibga solishga, moslashuvchan, robotli analitik AIni tezda yaratish uchun ko'plab tayyor kutubxonalardan foydalanishga imkon beradi. InterSystems IRIS platformasida ML yechimlari.

Manbalar

MLToolkit

MLToolkit foydalanuvchi guruhi InterSystems korporativ GitHub tashkilotining bir qismi sifatida yaratilgan shaxsiy GitHub omboridir. U MLToolkit komponentlarini, jumladan, Python Gatewayni oʻrnatadigan, oʻrganadigan yoki foydalanayotgan tashqi foydalanuvchilar uchun moʻljallangan. Guruhda marketing, ishlab chiqarish, tibbiyot va boshqa ko'plab sohalarda bir qator amalga oshirilgan holatlar (manba kodi va test ma'lumotlari bilan) mavjud. ML Toolkit foydalanuvchilar guruhiga qoʻshilish uchun quyidagi manzilga qisqa elektron pochta xabarini yuboring: [elektron pochta bilan himoyalangan] va xatingizga quyidagi ma'lumotlarni kiriting:

  • GitHub foydalanuvchi nomi
  • Tashkilot (siz ishlaysiz yoki o'qiysiz)
  • Lavozim (tashkilotingizdagi haqiqiy mavqeingiz, "Talaba" yoki "Mustaqil").
  • Ishlab chiqaruvchi mamlakati

Maqolani o'qigan va sun'iy intellekt va mashinani o'rganish dvigatellarini ishlab chiqish yoki joylashtirish platformasi sifatida InterSystems IRIS imkoniyatlariga qiziqqanlar uchun sizni korxonangiz uchun qiziqarli bo'lgan stsenariylarni muhokama qilishga taklif qilamiz. Biz kompaniyangiz ehtiyojlarini tahlil qilishdan va birgalikda harakat rejasini belgilashdan mamnun bo'lamiz; AI/ML ekspertlar guruhimizning elektron pochta manzili bilan bog‘lanish – [elektron pochta bilan himoyalangan].

Manba: www.habr.com

a Izoh qo'shish