Gateway Python дар InterSystems IRIS

Ин мақола дар бораи Python Gateway, як лоиҳаи ҷомеаи кушодаасос барои платформаи додаҳои InterSystems IRIS мебошад. Ин лоиҳа ба шумо имкон медиҳад, ки ҳама алгоритмҳои омӯзиши мошиниро, ки дар Python сохта шудаанд (муҳити асосӣ барои бисёре аз маълумотшиносон), истифода баред, китобхонаҳои сершумори омодаро барои зуд эҷод кардани қарорҳои мутобиқшавӣ ва роботии таҳлилии AI/ML дар платформаи InterSystems IRIS истифода баред. Дар ин мақола, ман ба шумо нишон медиҳам, ки чӣ тавр InterSystems IRIS метавонад равандҳои Python-ро ташкил кунад, иртиботи муассири дуҷониба анҷом диҳад ва равандҳои соҳибақлро эҷод кунад.

Нақша

  1. Муқаддима.
  2. Асбобҳо.
  3. Насбкунӣ
  4. API.
  5. Муносибати мутақобила.
  6. Дафтарчаи Юпитер.
  7. Хулоса.
  8. Пайвандҳо.
  9. Toolkit M.L.

Муқаддима

Python як забони барномасозии сатҳи баланд ва умумӣ мебошад, ки ба баланд бардоштани маҳсулнокии таҳиягарон ва хониши код нигаронида шудааст. Дар ин силсила мақолаҳо ман дар бораи имкониятҳои истифодаи забони Python дар платформаи InterSystems IRIS сӯҳбат хоҳам кард, дар ҳоле ки таваҷҷӯҳи асосии ин мақола истифодаи Python ҳамчун забон барои эҷод ва татбиқи моделҳои омӯзиши мошинсозӣ мебошад.

Омӯзиши мошинсозӣ (ML) як синфи усулҳои зеҳни сунъӣ мебошад, ки хусусияти хоси он на ҳалли мустақими масъала, балки омӯзиш дар раванди ҳалли бисёр масъалаҳои шабеҳ мебошад.

Алгоритмҳо ва моделҳои омӯзиши мошинсозӣ торафт маъмултар мешаванд. Сабабҳои зиёде барои ин вуҷуд доранд, аммо ҳамааш ба дастрасӣ, соддагӣ ва ба даст овардани натиҷаҳои амалӣ вобаста аст. Оё кластерсозӣ ё ҳатто моделсозии шабакаи нейронӣ технологияи нав аст?

Албатта не, аммо имрӯзҳо барои иҷро кардани як модел садҳо ҳазор сатри рамз навиштан лозим нест ва хароҷоти эҷоду истифодаи моделҳо рӯз то рӯз кам мешавад.

Асбобҳо таҳаввул меёбанд - дар ҳоле ки мо абзорҳои пурраи GUI нигаронидашудаи AI/ML надорем, пешрафте, ки мо дар бисёр синфҳои дигари системаҳои иттилоотӣ, аз қабили BI (аз навиштани код то истифодаи чаҳорчӯбаҳо ва ҳалли танзимшавандаи ба GUI нигаронидашуда) дидаем, низ дида мешавад. дар воситаҳои эҷоди AI/ML. Мо аллакай аз марҳилаи навиштани код гузаштаем ва имрӯз мо чаҳорчӯбҳоро барои сохтан ва омӯзиши моделҳо истифода мебарем.

Дигар беҳбудиҳо, ба монанди қобилияти таблиғи модели қаблан омӯзонидашуда, ки дар он корбари ниҳоӣ бояд омӯзиши моделро дар маълумоти мушаххаси худ анҷом диҳад, инчунин оғози татбиқи омӯзиши мошинро осонтар мекунад. Ин пешрафтҳо омӯхтани омӯзиши мошинро ҳам барои мутахассисон ва ҳам барои ширкатҳо хеле осон мекунанд.

Аз тарафи дигар, мо бештар ва бештар маълумот ҷамъ мекунем. Бо як платформаи ягонаи додаҳо ба монанди InterSystems IRIS, ҳамаи ин маълумотро фавран омода кардан ва ҳамчун вуруд барои моделҳои омӯзиши мошин истифода бурдан мумкин аст.

Бо гузариш ба абр, оғози лоиҳаҳои AI/ML аз ҳарвақта осонтар аст. Мо метавонем танҳо захираҳои заруриро истеъмол кунем. Ғайр аз он, ба шарофати параллелизатсияи платформаҳои абрӣ, мо метавонем вақти беҳударо сарфа кунем.

Аммо дар бораи натиҷаҳо чӣ гуфтан мумкин аст? Дар ин ҷо корҳо мураккабтар мешаванд. Барои сохтани моделҳо асбобҳои зиёде мавҷуданд, ки ман дар оянда муҳокима хоҳам кард. Сохтани модели хуб осон нест, аммо баъд чӣ? Фоида аз истифодаи модели тиҷорӣ низ як кори ночиз аст. Решаи мушкилот ҷудоии сарбории кории таҳлилӣ ва транзаксионӣ ва моделҳои додаҳост. Вақте ки мо моделро таълим медиҳем, мо одатан онро аз рӯи маълумоти таърихӣ мекунем. Аммо ҷои модели сохташуда коркарди маълумотҳои транзаксионӣ мебошад. Беҳтарин модели ошкор кардани транзаксияҳои қаллобӣ чӣ фоида дорад, агар мо онро дар як рӯз як маротиба иҷро кунем? Қаллобон аллакай пулро партофта рафтанд. Мо бояд моделро дар бораи маълумоти таърихӣ омӯзем, аммо мо инчунин бояд онро дар вақти воқеӣ дар маълумоти нави воридшаванда истифода барем, то равандҳои тиҷоратии мо мувофиқи пешгӯиҳои модел амал кунанд.

ML Toolkit маҷмӯаи абзорест, ки маҳз ҳамин корро мекунад: якҷоя кардани моделҳо ва муҳити транзаксионӣ, то моделҳои сохтаатон мустақиман дар равандҳои тиҷоратии шумо истифода шаванд. Python Gateway як қисми Toolkit ML аст ва ҳамгироиро бо забони Python таъмин мекунад (монанд ба R Gateway, қисми ML Toolkit будан ҳамгироиро бо забони R таъмин мекунад).

Toolkit

Пеш аз он ки мо идома диҳем, ман мехоҳам чанд абзор ва китобхонаҳои Python-ро тавсиф кунам, ки мо дертар истифода хоҳем кард.

технология

  • Python забони барномасозии тафсиршаванда, таъиноти умумӣ ва сатҳи баланд аст. Бартарии асосии забон китобхонаи калони риёзӣ, ML ва AI мебошад. Мисли ObjectScript, он забони ба объект нигаронидашуда аст, аммо ҳама чиз ба таври динамикӣ муайян карда мешавад, на статикӣ. Инчунин ҳама чиз объект аст. Мақолаҳои баъдӣ шиносоии гузаранда бо забонро дар назар доранд. Агар шумо хоҳед, ки омӯзишро оғоз кунед, ман тавсия медиҳам, ки аз он оғоз кунед хуччатхо.
  • Барои машқҳои навбатии мо, муқаррар кунед Python 3.6.7 64бит.
  • IDE: Ман истифода мекунам PyCharm, балки умуман много. Агар шумо Atelier-ро истифода баред, барои таҳиягарони Python як плагини Eclipse мавҷуд аст. Агар шумо VS Code-ро истифода баред, пас барои Python тамдид мавҷуд аст.
  • Ноутбук: Ба ҷои IDE, шумо метавонед скриптҳои худро дар дафтарҳои онлайн нависед ва мубодила кунед. Маъмултаринашон аз онҳост Юпитер.

Китобхонаҳо

Ин аст рӯйхати (қисман) китобхонаҳои омӯзиши мошин:

  • Нумпӣ — маҷмӯи фундаменталӣ барои ҳисобҳои дақиқ.
  • Пандас — сохторҳои баландсифати додаҳо ва воситаҳои таҳлили додаҳо.
  • Матплотлиб - Эҷоди диаграммаҳо.
  • Баҳри баҳр - визуализатсияи маълумот дар асоси matplotlib.
  • Склерн — усулхои омузиши мошинхо.
  • XGBoost — алгоритмҳои омӯзиши мошинсозӣ дар доираи методологияи Gradient Boosting.
  • Генсим - NLP.
  • Керас - шабакаҳои нейрон.
  • Танзими ҷараён платформа барои сохтани моделҳои омӯзиши мошинсозӣ мебошад.
  • PyTorch платформа барои эҷоди моделҳои омӯзиши мошинсозӣ, ки ба Python нигаронида шудааст.
  • Нёка - PMML аз моделҳои гуногун.

Технологияҳои AI/ML тиҷоратро муассиртар ва мутобиқтар мекунанд. Гузашта аз ин, имрӯз ин технологияҳо таҳия ва татбиқи он осонтар мешаванд. Омӯзиш дар бораи технологияҳои AI/ML ва чӣ гуна онҳо метавонанд ба рушди созмони шумо кӯмак расонанд, оғоз кунед.

параметр

Якчанд роҳҳо барои насб ва истифодаи Python Gateway мавҷуданд:

  • OS
    • Windows
    • Linux
    • Мак
  • Доктор
    • Тасвирро аз DockerHub истифода баред
    • Намуди шахсии худро эҷод кунед

Новобаста аз усули насб, ба шумо рамзи манбаъ лозим мешавад. Ягона ҷой барои зеркашӣ кардани код аст саҳифа мебарорад. Он дорои релизҳои устувори санҷидашуда мебошад, танҳо охиринро гиред. Дар айни замон он 0.8 аст, аммо бо мурури замон онҳо нав хоҳанд шуд. Анборро клон накунед/зер накунед, версияи охиринро зеркашӣ кунед.

OS

Агар шумо Python Gateway-ро дар системаи оператсионӣ насб карда бошед, пас аввал (новобаста аз системаи амалиётӣ) ба шумо лозим меояд, ки Python -ро насб кунед. Барои ин:

  1. Python 3.6.7 64 бит насб кунед. Тавсия дода мешавад, ки Python-ро дар феҳристи пешфарз насб кунед.
  2. Модулро насб кунед dill: pip install dill.
  3. Рамзи ObjectScript-ро зеркашӣ кунед (масалан. do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) ба хар район бо махсулот. Агар шумо хоҳед, ки минтақаи мавҷуда барои дастгирии маҳсулот, иҷро кунед: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Ҷой занги DLL/SO/DYLIB ба папка bin намунаи InterSystems IRIS-и шумо. Файли китобхона бояд дар роҳи баргардонидашуда дастрас бошад write ##class(isc.py.Callout).GetLib().

Windows

  1. Боварӣ ҳосил кунед, ки тағирёбандаи муҳити зист аст PYTHONHOME ба Python 3.6.7 ишора мекунад.
  2. Боварӣ ҳосил кунед, ки тағирёбандаи муҳити система аст PATH дорои як тағирёбанда аст PYTHONHOME (ё директорияе, ки ба он ишора мекунад).

Linux (Debian/Ubuntu)

  1. Санҷед, ки оё тағирёбандаи муҳити зист PATH дар бар мегирад /usr/lib и /usr/lib/x86_64-linux-gnu. Файлро истифода баред /etc/environment барои муқаррар кардани тағирёбандаҳои муҳити зист.
  2. Дар сурати хатохо undefined symbol: _Py_TrueStruct танзимотро таъин кунед PythonLib. Инчунин дар Readme қисмати ҳалли мушкилот вуҷуд дорад.

Мак

  1. Дар айни замон танҳо python 3.6.7 аз дастгирӣ карда мешавад python.org. Тағйирёбандаро тафтиш кунед PATH.

Агар шумо тағирёбандаҳои муҳити зистро иваз карда бошед, маҳсулоти InterSystems-ро аз нав оғоз кунед.

Доктор

Истифодаи контейнерҳо як қатор афзалиятҳо дорад:

  • Интиқолпазирӣ
  • Самаранокии
  • Ихтилофот
  • сабукӣ
  • Тағирнопазирӣ

Инро санҷед як силсила мақолаҳо Барои маълумоти бештар дар бораи истифодаи Docker бо маҳсулоти InterSystems.

Ҳама сохтани Python Gateway дар айни замон ба контейнер асос ёфтааст. 2019.4.

Тасвири тайёр

Давидан: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestБарои зеркашӣ ва идора кардани Python Gateway бо InterSystems IRIS Community Edition. Ҳамааш ҳамин.

Намуди шахсии худро эҷод кунед

Барои сохтани тасвири докер, дар решаи анбор иҷро кунед: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Бо нобаёнӣ, тасвир дар асоси тасвир сохта мешавад store/intersystems/iris-community:2019.4.0.383.0, аммо шумо метавонед онро бо гузоштани тағирёбанда тағир диҳед IMAGE.
Барои сохтани InterSystems IRIS иҷро: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemcommunity/irispy:latest'.

Баъд аз ин, шумо метавонед тасвири докерро иҷро кунед:

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 истифода баред, ба шумо калид нишон додан лозим нест.

Назарҳо

  • Раванди санҷиш isc.py.test.Process як қатор тасвирҳоро дар директорияи муваққатӣ захира мекунад. Шумо метавонед ин роҳро ба директорияи насбшуда тағир диҳед. Барои ин, танзимотро таҳрир кунед WorkingDir муайян кардани директорияи насбшуда.
  • Барои дастрасӣ ба терминал, иҷро кунед: docker exec -it irispy sh.
  • Дастрасӣ ба Портали идоракунии система тавассути воридшавӣ SuperUser/SYS.
  • Барои боздоштани контейнер, иҷро кунед: docker stop irispy && docker rm --force irispy.

Санҷиши насб

Пас аз он ки шумо Python Gateway-ро насб кардед, тафтиш кардан лозим аст, ки он кор мекунад. Ин кодро дар терминали InterSystems IRIS иҷро кунед:

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

Натиҷа бояд бошад HELLO - арзиши тағирёбандаи Python x. Агар ҳолати бозгашт sc хато аст ё var холӣ, тафтиш Readme - Бахши ҳалли мушкилот.

API

Python Gateway насб шудааст ва шумо тасдиқ кардед, ки он кор мекунад. Вақти оғози истифодаи он!
Интерфейси асосии Python ин аст isc.py.Main. Он гурӯҳҳои зерини усулҳоро пешниҳод мекунад (ҳама бармегардад %Status):

  • Иҷрои код
  • Интиқоли маълумотҳо
  • Фаръӣ

Иҷрои код

Ин усулҳо ба шумо имкон медиҳанд, ки рамзи Python-и ихтиёриро иҷро кунед.

SimpleString

SimpleString усули асосй мебошад. Он 4 далели ихтиёриро мегирад:

  • code сатри код барои иҷро аст. Аломати навори сатр: $c(10).
  • returnVariable номи тағирёбандаест, ки баргардонида мешавад.
  • serialization - чӣ тавр сериализатсия кардан returnVariable. 0 - сатр (пешфарз), 1 - такрор.
  • result - истинод ByRef ба тағирёбанда, ки дар он арзиш навишта шудааст returnVariable.

Дар боло мо анҷом додем:

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

Дар ин мисол, мо ба як тағирёбандаи Python таъин мекунем x маънои онро дорад Hello ва мехоҳед арзиши тағирёбандаи Python-ро баргардонед x ба тағирёбандаи ObjectScript var.

иҷро кардани код

ExecuteCode алтернативаи бехатартар ва камтар маҳдудкунанда аст SimpleString.
Сатрҳо дар платформаи InterSystems IRIS бо 3 аломат маҳдуданд ва агар шумо хоҳед, ки пораи дарозтари кодро иҷро кунед, шумо бояд ҷараёнҳоро истифода баред.
Он ду далелро талаб мекунад:

  • code — сатр ё ҷараёни рамзи Python барои иҷрошаванда.
  • variable - (ихтиёрӣ) натиҷаи иҷроро таъин мекунад code ин тағирёбандаи Python.

Пешниҳод кардани истифода:

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

Дар ин мисол, мо 2 ба 3 зарб мекунем ва натиҷаро дар тағирёбандаи Python нигоҳ медорем y.

Интиқоли маълумотҳо

Интиқоли маълумот ба Python ва аз он.

Python -> InterSystems IRIS

Дар InterSystems IRIS 4 роҳи ба даст овардани арзиши як тағирёбандаи Python вуҷуд дорад, вобаста ба силсиласозии ба шумо лозим аст:

  • String барои намудҳои оддии додаҳо ва ислоҳи хатогиҳо.
  • Repr барои нигоҳ доштани объектҳои оддӣ ва ислоҳи хатогиҳо.
  • JSON барои коркарди осони маълумот дар тарафи InterSystems IRIS.
  • Pickle барои захира кардани объектхо.

Ин усулҳо ба шумо имкон медиҳанд, ки тағирёбандаҳоро аз Python ҳамчун сатр ё ҷараён гиред.

  • GetVariable(variable, serialization, .stream, useString) - гирифтан serialization тағйирёбанда variable в stream. Агар useString 1 аст ва сериализатсия дар сатр ҷойгир карда мешавад, пас сатр баргардонида мешавад, на ҷараён.
  • GetVariableJson(variable, .stream, useString) — силсилаи JSON-и тағирёбандаро гиред.
  • GetVariablePickle(variable, .stream, useString, useDill) -Сисилаи як тағирёбандаро Pickle (ё бодиён) гиред.

Биёед кӯшиш кунем, ки тағирёбандаи худро ба даст орем y.

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

InterSystems IRIS -> Python

Боркунии маълумот аз InterSystems IRIS ба Python.

  • ExecuteQuery(query, variable, type, namespace) - маҷмӯи додаҳо эҷод мекунад (pandas dataframe ё list) аз дархости sql ва онро ба тағирёбандаи python таъин кунед variable. Халтаи пластикӣ isc.py бояд дар район дастрас бошад namespace — дархост дар он чо ичро карда мешавад.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - маълумоти глобалиро бор мекунад global аз абзор start ба end дар Python ҳамчун тағирёбандаи навъи type: list, ё пандаҳо dataframe. Тавсифи далелҳои ихтиёрӣ mask ва labels дар ҳуҷҷатҳои синф ва анбори дастрас Ҳуҷҷатҳои интиқоли маълумот.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - маълумоти синфро бор мекунад class аз id start ба end дар Python ҳамчун тағирёбандаи навъи type: list, ё пандаҳо dataframe. properties — рӯйхат (бо вергул ҷудо) хосиятҳои синф, ки ба маҷмӯи додаҳо бор карда мешаванд. Маскаҳо дастгирӣ карда мешаванд * и ?. Пешфарз - * (ҳама моликият). Амвол %%CLASSNAME сарфи назар кард.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - маълумоти ҷадвалро бор мекунад table аз id start ба end дар python.

ExecuteQuery - универсалӣ (ҳар дархости дурусти SQL ба Python интиқол дода мешавад). Бо вуҷуди ин, ExecuteGlobal ва пардаҳои ӯ ExecuteClass и ExecuteTable бо як катор махдудиятхо кор мекунанд. Онҳо хеле тезтаранд (3-5 маротиба тезтар аз ронандаи ODBC ва 20 маротиба зудтар ExecuteQuery). Маълумоти бештар дар Ҳуҷҷатҳои интиқоли маълумот.
Ҳамаи ин усулҳо интиқоли маълумотро аз ҳама минтақа дастгирӣ мекунанд. Халтаи пластикӣ isc.py бояд дар минтақаи мавриди ҳадаф дастрас бошад.

ExecuteQuery

ExecuteQuery(request, variable, type, namespace) - интиқоли натиҷаҳои ҳама гуна дархости дурусти SQL ба Python. Ин сусттарин усули интиқоли маълумот аст. Агар онро истифода баред ExecuteGlobal ва печкахои он дастрас нестанд.

Баҳсҳо:

  • query - дархости sql.
  • variable - номи тағирёбандаи Python, ки дар он маълумот навишта шудааст.
  • type - list ё пандаҳо dataframe.
  • namespace - минтақае, ки дар он дархост иҷро карда мешавад.

ExecuteGlobal

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - интиқоли глобалӣ ба Python.

Баҳсҳо:

  • global номи ҷаҳонии бе аст ^
  • variable - номи тағирёбандаи Python, ки дар он маълумот навишта шудааст.
  • type - list ё пандаҳо dataframe.
  • start — аввалин обунаи умумиҷаҳонӣ. Ҳатман %Integer.
  • end охирин зернависи ҷаҳонӣ аст. Ҳатман %Integer.
  • mask — ниқоби арзишҳои ҷаҳонӣ. Ниқоб метавонад аз шумораи майдонҳои глобалӣ кӯтоҳтар бошад (дар ин ҳолат майдонҳои охири он гузаронида мешаванд). Чӣ тавр формат кардани маска:
    • + арзишро тавре гузаронед.
    • - арзишро гузаред.
    • b — навъи булӣ (0 - False, ҳама боқимонда - True).
    • d — Сана (аз $horolog, дар Windows аз соли 1970, дар Linux аз соли 1900).
    • t - Вақт ($horolog, сонияҳо пас аз нисфи шаб).
    • m — Тамғаи вақт (сатри формати СОЛ-Моҳ-РӮЗ: СОАТ: ДАКИКА: ДУЮМ).
  • labels - % Рӯйхати номҳои сутунҳо. Унсури аввал номи зернавис аст.
  • namespace - минтақае, ки дар он дархост иҷро карда мешавад.

ExecuteClass

печонед ExecuteGlobal. Дар асоси таърифи синф занг омода мекунад ExecuteGlobal ва ӯро даъват мекунад.

ExecuteClass(class, variable, type, start, end, properties, namespace) - интиқоли маълумоти синф ба Python.

Баҳсҳо:

  • class - номи синф
  • variable - номи тағирёбандаи Python, ки дар он маълумот навишта шудааст.
  • type - list ё пандаҳо dataframe.
  • start - ибтидо Id.
  • end - ID ниҳоӣ
  • properties — рӯйхат (бо вергул ҷудо) хосиятҳои синф, ки ба маҷмӯи додаҳо бор карда мешаванд. Маскаҳо дастгирӣ карда мешаванд * и ?. Пешфарз - * (ҳама моликият). Амвол %%CLASSNAME сарфи назар кард.
  • namespace - минтақае, ки дар он дархост иҷро карда мешавад.

Ҳама хосиятҳо ба истиснои хосиятҳои намуд интиқол дода мешаванд %Date, %Time, %Boolean и %TimeStamp - онҳо ба синфҳои мувофиқи Python табдил дода мешаванд.

Ҷадвали иҷро

печонед ExecuteClass. Номи ҷадвалро ба номи синф ва зангҳо тарҷума мекунад ExecuteClass. Имзо:

ExecuteTable(table, variable, type, start, end, properties, namespace) - интиқоли маълумоти ҷадвал ба Python.

Баҳсҳо:

  • table - номи ҷадвал.
    Ҳама далелҳои дигар ҳамчунон қабул карда мешаванд. ExecuteClass.

Эзоҳҳо

  • ExecuteGlobal, ExecuteClass и ExecuteTable баробар тез кор мекунанд.
  • ExecuteGlobal 20 маротиба тезтар аз ExecuteQuery дар маҷмӯи додаҳои калон (вақти интиқол > 0.01 сония).
  • ExecuteGlobal, ExecuteClass и ExecuteTable дар глобалҳо бо ин сохтор кор кунед: ^global(key) = $lb(prop1, prop2, ..., propN) ки key адади бутун мебошад.
  • барои ExecuteGlobal, ExecuteClass и ExecuteTable доираи арзиши дастгирӣ %Date ба диапазон мувофиқат мекунад mktime ва аз ОС вобаста асттирезаҳо: 1970-01-01, Linux 1900-01-01, Мак). Истифода баред %TimeStampбарои интиқол додани маълумот берун аз ин диапазон ё истифодаи pandas dataframe ҳамчун ин маҳдудият танҳо барои рӯйхат аст.
  • барои ExecuteGlobal, ExecuteClass и ExecuteTable ҳама далелҳо ба истиснои манбаи маълумот (глобалӣ, синф ё ҷадвал) ва тағирёбанда ихтиёрӣ мебошанд.

намунаи

синфи санҷишӣ isc.py.test.Person дорои усулест, ки ҳамаи имконоти интиқоли маълумотро нишон медиҳад:

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)

усули занг do ##class(isc.py.test.Person).Test() то бубинед, ки тамоми усулҳои интиқоли маълумот чӣ гуна кор мекунанд.

Усулҳои ёрирасон

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - дар бораи тағирёбанда маълумот гиред: оё он муайян шудааст, синф ва дарозии сериализатсия.
  • GetVariableDefined(variable, .defined) - оё тағирёбанда муайян карда шудааст.
  • GetVariableType(variable, .type) - синфи тағирёбандаро гиред.
  • GetStatus() - истиснои охиринро дар тарафи Python гиред ва хориҷ кунед.
  • GetModuleInfo(module, .imported, .alias) — тағирёбандаи модул ва ҳолати воридотро гиред.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - дар бораи функсия маълумот гиред.

Қобилияти мутақобила

Шумо аз терминал чӣ гуна занг задан ба Python Gateway-ро омӯхтед, ҳоло биёед онро дар истеҳсолот истифода барем. Асос барои ҳамкорӣ бо Python дар ин режим аст isc.py.ens.Operation. Он ба мо имкон медиҳад, ки:

  • Рамзи Python-ро иҷро кунед
  • Захира/барқарорсозии контексти Python
  • Маълумотро аз Python бор кунед ва қабул кунед

Асосан, амалиёти Pyhton як печонидашуда аст isc.py.Main. Амалиёт isc.py.ens.Operation имкон медиҳад, ки ҳамкорӣ бо раванди Python аз маҳсулоти InterSystems IRIS. Панҷ дархост дастгирӣ карда мешавад:

  • isc.py.msg.ExecutionRequest барои иҷро кардани рамзи Python. бармегардад isc.py.msg.ExecutionResponse бо натиҷаи иҷро ва арзишҳои тағирёбандаҳои дархостшуда.
  • isc.py.msg.StreamExecutionRequest барои иҷро кардани рамзи Python. бармегардад isc.py.msg.StreamExecutionResponse натиҷаи иҷро ва арзишҳои тағирёбандаҳои дархостшуда. Аналогӣ isc.py.msg.ExecutionRequest, аммо ба ҷои сатр ҷараёнҳоро қабул мекунад ва бармегардонад.
  • isc.py.msg.QueryRequest барои интиқол додани натиҷаи иҷрои дархости SQL. бармегардад Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest барои интиқоли маълумоти глобалӣ / синф / ҷадвал. бармегардад Ens.Response.
  • isc.py.msg.SaveRequest барои захира кардани контексти Python. бармегардад Ens.StringResponse бо ID контекст.
  • isc.py.msg.RestoreRequest барои барқарор кардани контексти Python.

    Илова бар ин, isc.py.ens.Operation ду танзимот дорад:

    • Initializer - интихоби синфе, ки интерфейсро амалӣ мекунад isc.py.init.Abstract. Он метавонад барои бор кардани функсияҳо, модулҳо, синфҳо ва ғайра истифода шавад. Вақте ки раванд оғоз меёбад, он як маротиба иҷро карда мешавад.
    • PythonLib - (танҳо Linux) агар шумо хатогиҳои пурборкуниро бинед, арзиши онро ба он муқаррар кунед libpython3.6m.so ё ҳатто дар роҳи пурра ба китобхонаи Python.

Эҷоди равандҳои бизнес

Ду синф мавҷуданд, ки ба рушди равандҳои тиҷорат мусоидат мекунанд:

  • isc.py.ens.ProcessUtils ба шумо имкон медиҳад, ки эзоҳҳоро аз фаъолиятҳо бо ивазкунии тағирёбанда гиред.
  • isc.py.util.BPEmulator озмоиши равандҳои бизнесро бо Python осон мекунад. Он метавонад як раванди тиҷоратиро (қисмҳои Python) дар раванди ҷорӣ иҷро кунад.

Ивазкунии тағирёбанда

Ҳама равандҳои тиҷоратӣ аз isc.py.ens.ProcessUtils, усулро истифода бурда метавонад GetAnnotation(name) барои гирифтани арзиши шарҳи фаъолият бо номи он. Шарҳи фаъолият метавонад дорои тағирёбандаҳое бошад, ки пеш аз интиқол ба Python дар тарафи InterSystems IRIS арзёбӣ карда мешаванд. Ин аст синтаксиси ивазкунии тағирёбанда:

  • ${class:method:arg1:...:argN} - даъвати усул
  • #{expr} - иҷро кардани код бо забони ObjectScript.

Намунае дар раванди бизнеси санҷишӣ мавҷуд аст isc.py.test.Processмасалан, дар фаъолият Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Дар ин мисол:

  • #{process.WorkDirectory} хосияти WorkDirectory объектро бармегардонад process, ки як мисоли синф аст isc.py.test.Process ки. раванди бизнеси ҷорӣ.
  • ${%PopulateUtils:Integer:1:100} усулро даъват мекунад Integer дараҷа %PopulateUtils, далелхои гузариш 1 и 100, баргардонидани адади тасодуфӣ дар диапазон 1...100.

Санҷиши раванди бизнес

Истеҳсоли санҷиш ва раванди тиҷорати санҷишӣ ба таври нобаёнӣ ҳамчун як қисми Gateway Python дастрас аст. Барои истифода бурдани онҳо:

  1. Дар терминали OS иҷро: pip install pandas matplotlib seaborn.
  2. Дар терминали InterSystems IRIS, иҷро кунед: do ##class(isc.py.test.CannibalizationData).Import() барои пур кардани маълумоти тестӣ.
  3. Маҳсулотро оғоз кунед isc.py.test.Production.
  4. Навъи дархости ирсол Ens.Request в isc.py.test.Process.

Биёед бубинем, ки ин ҳама якҷоя кор мекунад. Кушодан isc.py.test.Process дар муҳаррири BPL:

Gateway Python дар InterSystems IRIS

Иҷрои код

Муҳимтарин занг иҷрои рамзи Python аст:

Gateway Python дар InterSystems IRIS

Дархост истифода бурда мешавад isc.py.msg.ExecutionRequest, инҳоянд хосиятҳои он:

  • Code - Рамзи Python.
  • SeparateLines - оё тақсим кардани код ба сатрҳо барои иҷро. $c(10) (n) барои ҷудо кардани сатрҳо истифода мешавад. Дар хотир доред, ки дар як вақт коркарди тамоми паём тавсия дода намешавад, ин функсия танҳо барои коркард аст def ва ибораҳои ба ҳам монанд. Пешфарз 0.
  • Variables рӯйхати бо вергул ҷудошудаи тағирёбандаҳоест, ки ба ҷавоб илова карда мешаванд.
  • Serialization - Чӣ гуна тағирёбандаҳоеро, ки мо мехоҳем баргардонем, сериал кунем. Имконот: Str, Repr, JSON, Pickle и Dill, пешфарз Str.

Дар ҳолати мо, мо танҳо моликиятро муқаррар мекунем Code, то ки ҳамаи хосиятҳои дигар арзишҳои пешфарзии худро истифода баранд. Мо онро бо занг задан танзим кардем process.GetAnnotation("Import pandas"), ки дар вақти кор шарҳро пас аз иҷро шудани ивазкунии тағирёбанда бармегардонад. Ниҳоят код import pandas as pd ба Python интиқол дода мешавад. GetAnnotation метавонад барои гирифтани скриптҳои бисёрсатраи Python муфид бошад, аммо дар ин роҳи гирифтани код ҳеҷ гуна маҳдудият вуҷуд надорад. Шумо метавонед амволро танзим кунед Code бо ҳар роҳе, ки барои шумо қулай аст.

Гирифтани тағирёбандаҳо

Боз як мушкилоти ҷолиб истифода isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Gateway Python дар InterSystems IRIS

Он матритсаи коррелятсияро дар тарафи Python ҳисоб мекунад ва тағирёбандаро хориҷ мекунад corrmat баргаштан ба InterSystems IRIS дар формати JSON бо гузоштани хосиятҳои дархост:

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

Мо метавонем натиҷаҳоро дар Visual Trace бубинем:

Gateway Python дар InterSystems IRIS

Ва агар ба мо ин арзиш дар BP лозим бошад, онро метавон чунин ба даст овард: callresponse.Variables.GetAt("corrmat").

Интиқоли маълумотҳо

Минбаъд, биёед дар бораи интиқоли маълумот аз InterSystems IRIS ба Python сӯҳбат кунем, ҳама дархостҳои интиқоли маълумот интерфейсро амалӣ мекунанд. isc.py.msg.DataRequest, ки хосиятҳои зеринро таъмин мекунад:

  • Variable як тағирёбандаи Python аст, ки ба он маълумот навишта мешавад.
  • Type - навъи тағирёбанда: dataframe (pandas dataframe) ё list.
  • Namespace - минтақае, ки мо аз он маълумот мегирем. Халтаи пластикӣ isc.py бояд дар ин минтақа дастрас бошад. Ин метавонад минтақае бошад, ки дастгирии маҳсулот надорад.

Дар асоси ин интерфейс, 4 синфи дархостҳо амалӣ карда мешаванд:

  • isc.py.msg.QueryRequest - таъин кардани моликият Query барои фиристодани дархости SQL.
  • isc.py.msg.ClassRequest - таъин кардани моликият Class барои гузарондани маълумоти синф.
  • isc.py.msg.TableRequest - таъин кардани моликият Table барои интиқол додани маълумоти ҷадвал.
  • isc.py.msg.GlobalRequest - таъин кардани моликият Global барои интиқоли маълумот дар саросари ҷаҳон.

Дар раванди санҷиш, ба фаъолият назар кунед RAWки дар isc.py.msg.QueryRequest дар амал нишон дода шудааст.

Gateway Python дар InterSystems IRIS

Захира/барқарор кардани контексти Python

Дар ниҳоят, мо метавонем контексти Python-ро дар InterSystems IRIS нигоҳ дорем, то ин корро фиристед isc.py.msg.SaveRequest бо далелҳо:

  • Mask — Танҳо тағирёбандаҳое захира карда мешаванд, ки ниқобро қонеъ мекунанд. Дастгир карда шудааст * и ?. Мисол: "Data*, Figure?"... Стандарт *.
  • MaxLength — Дарозии максималии тағирёбандаи захирашуда. Агар силсиласозии тағирёбанда дарозтар бошад, он нодида гирифта мешавад. Барои ба даст овардани тағирёбандаҳои дарозии дилхоҳ ба 0 таъин кунед. Пешфарз $$$MaxStringLength.
  • Name — Номи контекст (ихтиёрӣ).
  • Description — Тавсифи контекст (ихтиёрӣ).

Бармегардад Ens.StringResponse с Id контексти захирашуда. Дар раванди санҷиш, ба фаъолият назар кунед Save Context.

Дархости марбут isc.py.msg.RestoreRequest контекстро аз InterSystems IRIS ба Python бор мекунад:

  • ContextId идентификатори контекст мебошад.
  • Clear — пеш аз барқарорсозӣ контекстро тоза кунед.

Дафтарчаи Юпитер

Дафтарчаи Юпитер як веб-барномаи кушодаасос мебошад, ки ба шумо имкон медиҳад дафтарҳои дорои код, визуализатсия ва матнро эҷод ва нашр кунед. Python Gateway ба шумо имкон медиҳад, ки равандҳои BPL-ро ҳамчун дафтари Jupyter бинед ва таҳрир кунед. Дар хотир доред, ки дар айни замон иҷрокунандаи муқаррарии Python 3 истифода мешавад.

Ин васеъшавӣ тахмин мекунад, ки эзоҳҳо рамзи Python доранд ва номҳои фаъолиятро ҳамчун унвонҳои қаблӣ истифода мебаранд. Ҳоло дар Jupyter Notebook равандҳои тиҷоратии PythonGatewayро таҳия кардан мумкин аст. Ин аст он чизе ки имконпазир аст:

  • Эҷоди равандҳои нави бизнес
  • Равандҳои бизнесро нест кунед
  • Фаъолиятҳои нав эҷод кунед
  • Тағйир додани фаъолиятҳо
  • Фаъолиятҳоро нест кунед

дар ин ҷо видеои намоишӣ. Ва баъзе скриншотҳо:

Explorer раванд

Gateway Python дар InterSystems IRIS

Муҳаррири раванд

Gateway Python дар InterSystems IRIS

параметр

  1. Ба шумо InterSystems IRIS 2019.2+ лозим аст.
  2. PythonGateway v0.8+ насб кунед (танҳо isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Рамзи ObjectScript-ро аз анбор навсозӣ кунед.
  4. Иҷро кунед do ##class(isc.py.util.Jupyter).Install() ва дастурҳоро риоя кунед.

сабт.

натиҷаҳои

MLToolkit маҷмӯи абзорҳоест, ки ҳадафи он омезиши моделҳо ва муҳити транзаксионӣ мебошад, то моделҳои сохташуда бевосита дар равандҳои тиҷоратии шумо ба осонӣ истифода шаванд. Python Gateway як қисми MLToolkit буда, ҳамгироиро бо забони Python таъмин мекунад, ки ба шумо имкон медиҳад, ки ҳама алгоритмҳои омӯзиши мошини дар Python сохташударо танзим кунед (муҳити асосӣ барои бисёре аз маълумотшиносон), китобхонаҳои сершумори омодаро барои зуд эҷод кардани AI-и аналитикии мутобиқшавӣ ва роботӣ истифода баред / Қарорҳои ML дар платформаи InterSystems IRIS.

мурожиат

MLToolkit

Гурӯҳи корбарони MLToolkit як анбори хусусии GitHub мебошад, ки дар доираи ташкилоти корпоративии InterSystems GitHub сохта шудааст. Он ба корбарони беруна, ки ҷузъҳои MLToolkit-ро насб мекунанд, меомӯзанд ё аллакай истифода мебаранд, аз ҷумла Python Gateway. Гурӯҳ дорои як қатор парвандаҳои амалӣ (бо рамзи сарчашма ва маълумоти санҷишӣ) дар соҳаҳои маркетинг, истеҳсолот, тиб ва бисёр дигар соҳаҳо. Барои ҳамроҳ шудан ба гурӯҳи корбарони ML Toolkit, лутфан ба суроғаи зерин почтаи электронӣ фиристед: [почтаи электронӣ ҳифз карда шудааст] ва дар мактуби худ маълумоти зеринро дохил кунед:

  • Номи корбари GitHub
  • Ташкилот (шумо кор ё таҳсил мекунед)
  • Мавқеъ (мавқеи воқеии шумо дар ташкилоти шумо, ё "Донишҷӯ" ё "Мустақил").
  • кишвар

Барои онҳое, ки мақоларо хондаанд ва ба InterSystems IRIS ҳамчун платформаи таҳия ё ҷойгиркунии механизмҳои зеҳни сунъӣ ва омӯзиши мошинҳо таваҷҷӯҳ доранд, мо шуморо даъват мекунем, ки сенарияҳои эҳтимолии таваҷҷӯҳи корхонаи худро муҳокима кунед. Мо эҳтиёҷоти корхонаи шуморо бо омодагӣ таҳлил карда, якҷоя нақшаи чорабиниҳоро муайян мекунем; бо суроғаи почтаи электронии гурӯҳи коршиносони AI/ML-и мо тамос гиред - [почтаи электронӣ ҳифз карда шудааст].

Манбаъ: will.com

Илова Эзоҳ