Cổng Python tại InterSystems IRIS

Bài viết này viết về Python Gateway, một dự án cộng đồng mã nguồn mở dành cho nền tảng dữ liệu IRIS của InterSystems. Dự án này cho phép bạn điều phối bất kỳ thuật toán học máy nào được tạo bằng Python (môi trường chính của nhiều Nhà khoa học dữ liệu), sử dụng nhiều thư viện được tạo sẵn để nhanh chóng tạo các giải pháp AI / ML phân tích robot, thích ứng trên nền tảng IRIS của InterSystems. Trong bài viết này, tôi sẽ chỉ cho bạn cách InterSystems IRIS có thể sắp xếp các quy trình Python, thực hiện truyền dữ liệu hai chiều hiệu quả và tạo các quy trình kinh doanh thông minh.

kế hoạch

  1. Giới thiệu.
  2. Công cụ.
  3. Cài đặt.
  4. API.
  5. Khả năng tương tác.
  6. Máy tính xách tay Jupyter.
  7. Kết luận.
  8. Liên kết.
  9. M.L.Toolkit.

Giới thiệu

Python là ngôn ngữ lập trình đa năng, cấp cao, tập trung vào việc cải thiện năng suất và khả năng đọc mã của nhà phát triển. Trong loạt bài viết này, tôi sẽ nói về khả năng sử dụng ngôn ngữ Python trên nền tảng InterSystems IRIS, trong khi trọng tâm chính của bài viết này là sử dụng Python làm ngôn ngữ để tạo và áp dụng các mô hình máy học.

Học máy (ML) là một lớp các phương pháp trí tuệ nhân tạo, đặc điểm nổi bật của nó không phải là giải pháp trực tiếp cho một vấn đề mà là học hỏi trong quá trình giải quyết nhiều vấn đề tương tự.

Các thuật toán và mô hình học máy ngày càng trở nên phổ biến. Có nhiều lý do cho điều này, nhưng tất cả đều bắt nguồn từ khả năng tiếp cận, tính đơn giản và đạt được kết quả thiết thực. Là phân cụm hoặc thậm chí mô hình mạng lưới thần kinh một công nghệ mới?

Tất nhiên là không, nhưng ngày nay không cần phải viết hàng trăm nghìn dòng mã để chạy một mô hình và chi phí tạo và sử dụng các mô hình ngày càng nhỏ hơn.

Các công cụ đang phát triển - mặc dù chúng tôi không có các công cụ AI/ML theo định hướng GUI đầy đủ, nhưng tiến trình mà chúng tôi đã thấy với nhiều loại hệ thống thông tin khác như BI (từ viết mã đến sử dụng các khung và giải pháp định cấu hình theo định hướng GUI) cũng được nhìn thấy trong các công cụ tạo AI/ML. Chúng tôi đã vượt qua giai đoạn viết mã và hôm nay chúng tôi sử dụng các khung để xây dựng và đào tạo các mô hình.

Các cải tiến khác, chẳng hạn như khả năng phổ biến mô hình được đào tạo trước trong đó người dùng cuối chỉ cần hoàn thành việc đào tạo mô hình trên dữ liệu cụ thể của họ, cũng giúp bắt đầu áp dụng máy học dễ dàng hơn. Những tiến bộ này giúp việc học máy học trở nên dễ dàng hơn nhiều, cho cả các chuyên gia và các công ty nói chung.

Mặt khác, chúng tôi thu thập ngày càng nhiều dữ liệu. Với một nền tảng dữ liệu thống nhất như InterSystems IRIS, tất cả thông tin này có thể được chuẩn bị ngay lập tức và được sử dụng làm đầu vào cho các mô hình máy học.

Với việc chuyển đổi sang đám mây, việc khởi chạy các dự án AI/ML trở nên dễ dàng hơn bao giờ hết. Chúng ta chỉ có thể tiêu thụ những tài nguyên mà chúng ta cần. Hơn nữa, nhờ khả năng song song hóa được cung cấp bởi các nền tảng đám mây, chúng tôi có thể tiết kiệm thời gian lãng phí.

Nhưng còn kết quả thì sao? Đây là nơi mọi thứ trở nên phức tạp hơn. Có nhiều công cụ để xây dựng mô hình mà tôi sẽ thảo luận tiếp theo. Xây dựng một mô hình tốt là không dễ dàng, nhưng tiếp theo là gì? Thu lợi nhuận từ việc sử dụng mô hình của một doanh nghiệp cũng là một nhiệm vụ không hề nhỏ. Gốc rễ của vấn đề là sự tách biệt giữa khối lượng công việc phân tích và giao dịch cũng như mô hình dữ liệu. Khi chúng tôi đào tạo một mô hình, chúng tôi thường làm điều đó trên dữ liệu lịch sử. Nhưng vị trí của mô hình được xây dựng là trong quá trình xử lý dữ liệu giao dịch. Mô hình phát hiện giao dịch gian lận tốt nhất là gì nếu chúng ta chạy nó mỗi ngày một lần? Những kẻ lừa đảo đã rời đi từ lâu với số tiền. Chúng ta cần đào tạo mô hình trên dữ liệu lịch sử, nhưng chúng ta cũng cần áp dụng mô hình đó trong thời gian thực trên dữ liệu mới đến để các quy trình kinh doanh của chúng ta có thể hoạt động theo dự đoán của mô hình.

Bộ công cụ ML là bộ công cụ thực hiện điều đó: kết hợp các mô hình và môi trường giao dịch để các mô hình bạn xây dựng có thể dễ dàng được sử dụng trực tiếp trong các quy trình kinh doanh của bạn. Cổng Python là một phần của Bộ công cụ ML và cung cấp khả năng tích hợp với ngôn ngữ Python (tương tự như Cổng R, là một phần của Bộ công cụ ML cung cấp khả năng tích hợp với ngôn ngữ R).

Bộ công cụ

Trước khi tiếp tục, tôi muốn mô tả một số công cụ và thư viện Python mà chúng ta sẽ sử dụng sau này.

Công nghệ

  • Python là một ngôn ngữ lập trình cấp cao, có mục đích chung, được thông dịch. Ưu điểm chính của ngôn ngữ là một thư viện lớn các thư viện toán học, ML và AI. Giống như ObjectScript, nó là một ngôn ngữ hướng đối tượng, nhưng mọi thứ được xác định động chứ không phải tĩnh. Ngoài ra mọi thứ đều là một đối tượng. Các bài báo sau này giả định rằng bạn đã quen với ngôn ngữ này. Nếu bạn muốn bắt đầu học, tôi khuyên bạn nên bắt đầu với tài liệu.
  • Đối với các bài tập tiếp theo của chúng tôi, thiết lập Trăn 3.6.7 64bit.
  • IDE: Tôi sử dụng PyCharm, nhưng về tổng thể много. Nếu bạn đang sử dụng Atelier, thì có một plugin Eclipse dành cho các nhà phát triển Python. Nếu bạn đang sử dụng Mã VS, thì có một phần mở rộng cho Python.
  • Notebook: Thay vì IDE, bạn có thể viết và chia sẻ tập lệnh của mình trong sổ ghi chép trực tuyến. Phổ biến nhất trong số họ là jupyter.

Thư viện

Đây là danh sách (một phần) các thư viện máy học:

  • numpy — một gói cơ bản để tính toán chính xác.
  • Gấu trúc — cấu trúc dữ liệu hiệu năng cao và các công cụ phân tích dữ liệu.
  • Matplotlib - Tạo biểu đồ.
  • sơ sinh - trực quan hóa dữ liệu dựa trên matplotlib.
  • Sklearning - phương pháp học máy.
  • XGBoost — các thuật toán học máy trong phương pháp Tăng tốc độ dốc.
  • gensim - NLP.
  • Máy ảnh - mạng lưới thần kinh.
  • Dòng chảy là một nền tảng để tạo các mô hình máy học.
  • Kim tự tháp là một nền tảng để tạo các mô hình máy học tập trung vào Python.
  • Nyoka - PMML từ các mô hình khác nhau.

Các công nghệ AI/ML giúp việc kinh doanh trở nên hiệu quả và dễ thích nghi hơn. Hơn nữa, ngày nay các công nghệ này đang trở nên dễ phát triển và triển khai hơn. Bắt đầu tìm hiểu về các công nghệ AI/ML và cách chúng có thể giúp tổ chức của bạn phát triển.

Cài đặt

Có một số cách để cài đặt và sử dụng Python Gateway:

  • ОС
    • Windows
    • Linux
    • Mac
  • phu bến tàu
    • Sử dụng hình ảnh từ DockerHub
    • Tạo hình ảnh của riêng bạn

Bất kể phương pháp cài đặt nào, bạn sẽ cần mã nguồn. Nơi duy nhất để tải xuống mã là trang phát hành. Nó chứa các bản phát hành ổn định đã được thử nghiệm, chỉ cần lấy bản mới nhất. Hiện tại là 0.8, nhưng theo thời gian sẽ có những cái mới. Không sao chép/tải xuống kho lưu trữ, tải xuống bản phát hành mới nhất.

ОС

Nếu bạn đang cài đặt Python Gateway trên một hệ điều hành, thì trước tiên (bất kể hệ điều hành nào), bạn sẽ cần cài đặt Python. Đối với điều này:

  1. Cài đặt Python 3.6.7 64 bit. Nên cài đặt Python trong thư mục mặc định.
  2. Cài đặt mô-đun dill: pip install dill.
  3. Tải xuống mã ObjectScript (tức là do $system.OBJ.ImportDir("C:InterSystemsReposPythoniscpy", "*.cls", "c",,1)) đến bất kỳ khu vực nào có sản phẩm. Trong trường hợp bạn muốn một khu vực hiện có để hỗ trợ sản phẩm, hãy chạy: write ##class(%EnsembleMgr).EnableNamespace($Namespace, 1).
  4. Địa điểm chú thích DLL/SO/DYLIB vào thư mục bin phiên bản IRIS InterSystems của bạn. Tệp thư viện phải có sẵn trong đường dẫn được trả về bởi write ##class(isc.py.Callout).GetLib().

Windows

  1. Đảm bảo biến môi trường là PYTHONHOME trỏ đến Python 3.6.7.
  2. Đảm bảo biến môi trường hệ thống là PATH chứa một biến PYTHONHOME (hoặc thư mục mà nó trỏ tới).

Linux (Debian/Ubuntu)

  1. Kiểm tra xem biến môi trường có PATH chứa /usr/lib и /usr/lib/x86_64-linux-gnu. Sử dụng tệp /etc/environment để thiết lập các biến môi trường.
  2. Trong trường hợp có lỗi undefined symbol: _Py_TrueStruct đặt cài đặt PythonLib. cũng trong readme có phần Khắc phục sự cố.

Mac

  1. Hiện tại chỉ có python 3.6.7 được hỗ trợ từ python.org. Kiểm tra biến PATH.

Nếu bạn đã thay đổi các biến môi trường, hãy khởi động lại sản phẩm InterSystems của bạn.

phu bến tàu

Sử dụng container có một số lợi thế:

  • Tính di động
  • Tính hiệu quả
  • Cách nhiệt
  • nhẹ nhàng
  • tính bất biến

kiểm tra cái này một loạt các bài viết để biết thêm thông tin về cách sử dụng Docker với các sản phẩm của InterSystems.

Tất cả các bản dựng Cổng Python hiện đều dựa trên bộ chứa. 2019.4.

Hình ảnh sẵn sàng

Chạy: docker run -d -p 52773:52773 --name irispy intersystemscommunity/irispy-community:latestđể tải xuống và chạy Python Gateway với Phiên bản Cộng đồng IRIS của InterSystems. Đó là tất cả.

Tạo hình ảnh của riêng bạn

Để xây dựng hình ảnh docker, hãy chạy trong thư mục gốc của kho lưu trữ: docker build --force-rm --tag intersystemscommunity/irispy:latest ..
Theo mặc định, hình ảnh được xây dựng dựa trên hình ảnh store/intersystems/iris-community:2019.4.0.383.0, tuy nhiên bạn có thể thay đổi điều này bằng cách đặt biến IMAGE.
Để xây dựng từ IRIS của InterSystems, hãy chạy: `docker build --build-arg IMAGE=store/intersystems/iris:2019.4.0.383.0 --force-rm --tag intersystemscommunity/irispy:latest'.

Sau đó, bạn có thể chạy hình ảnh docker:

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

Nếu bạn đang sử dụng một hình ảnh dựa trên Phiên bản cộng đồng IRIS của InterSystems, bạn không cần chỉ định khóa.

comments

  • Quy trình kiểm tra isc.py.test.Process lưu một số hình ảnh vào một thư mục tạm thời. Bạn có thể muốn thay đổi đường dẫn này thành một thư mục được gắn kết. Để thực hiện việc này, hãy chỉnh sửa cài đặt WorkingDir chỉ định thư mục được gắn kết.
  • Để truy cập thiết bị đầu cuối, hãy chạy: docker exec -it irispy sh.
  • Truy cập vào Cổng thông tin quản lý hệ thống bằng cách đăng nhập SuperUser/SYS.
  • Để dừng một container, hãy chạy: docker stop irispy && docker rm --force irispy.

Kiểm tra cài đặt

Khi bạn đã cài đặt Python Gateway, bạn nên kiểm tra xem nó có hoạt động không. Chạy mã này trong thiết bị đầu cuối IRIS của InterSystems:

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

Kết quả phải là HELLO - giá trị của biến Python x. Nếu trạng thái trở lại sc là một sai lầm hoặc var trống, kiểm tra Readme—Phần khắc phục sự cố.

API

Cổng Python đã được cài đặt và bạn đã xác minh rằng nó đang hoạt động. Thời gian để bắt đầu sử dụng nó!
Giao diện chính của Python là isc.py.Main. Nó cung cấp các nhóm phương thức sau (tất cả trả về %Status):

  • thực thi mã
  • Truyền dữ liệu
  • Phụ trợ

thực thi mã

Các phương thức này cho phép bạn thực thi mã Python tùy ý.

Chuỗi đơn giản

SimpleString là phương pháp chính. Phải mất 4 đối số tùy chọn:

  • code là dòng mã để thực thi. Ký tự cấp dòng: $c(10).
  • returnVariable là tên của biến cần trả về.
  • serialization - làm thế nào để tuần tự hóa returnVariable. 0 - chuỗi (mặc định), 1 - lặp lại.
  • result - ByRef tham chiếu đến biến mà giá trị được ghi returnVariable.

Ở trên chúng tôi đã thực hiện:

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

Trong ví dụ này, chúng tôi đang gán cho một biến Python x giá trị Hello và muốn trả về giá trị của một biến Python x đến một biến ObjectScript var.

Thực thi Mã

ExecuteCode là giải pháp thay thế an toàn hơn và ít hạn chế hơn SimpleString.
Các dòng trong nền tảng IRIS của InterSystems được giới hạn ở 3 ký tự và nếu bạn muốn thực thi một đoạn mã dài hơn, bạn cần sử dụng các dòng.
Phải mất hai đối số:

  • code — một chuỗi hoặc luồng mã Python sẽ được thực thi.
  • variable - (tùy chọn) gán kết quả thực hiện code biến Python này.

Đề nghị sử dụng:

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

Trong ví dụ này, chúng tôi nhân 2 với 3 và lưu kết quả vào một biến Python y.

Truyền dữ liệu

Truyền dữ liệu đến và đi từ Python.

Python -> IRIS liên hệ thống

Có 4 cách để lấy giá trị của một biến Python trong InterSystems IRIS, tùy thuộc vào số thứ tự bạn cần:

  • String cho các loại dữ liệu đơn giản và gỡ lỗi.
  • Repr để lưu trữ các đối tượng đơn giản và gỡ lỗi.
  • JSON để thao tác dữ liệu dễ dàng ở phía IRIS của InterSystems.
  • Pickle để lưu các đối tượng.

Các phương thức này cho phép bạn nhận các biến từ Python dưới dạng chuỗi hoặc luồng.

  • GetVariable(variable, serialization, .stream, useString) - lấy serialization Biến đổi variable в stream. Nếu useString là 1 và tuần tự hóa được đặt trong một chuỗi, sau đó một chuỗi được trả về, không phải một luồng.
  • GetVariableJson(variable, .stream, useString) — nhận tuần tự hóa JSON của một biến.
  • GetVariablePickle(variable, .stream, useString, useDill) -Nhận tuần tự hóa Pickle (hoặc Dill) của một biến.

Hãy thử lấy biến của chúng ta y.

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

Liên hệ thống IRIS -> Python

Đang tải dữ liệu từ IRIS của InterSystems vào Python.

  • ExecuteQuery(query, variable, type, namespace) - tạo một tập dữ liệu (gấu trúc dataframe hoặc list) từ truy vấn sql và đặt nó thành biến python variable. túi nhựa isc.py nên có sẵn trong khu vực namespace - yêu cầu sẽ được thực hiện ở đó.
  • ExecuteGlobal(global, variable, type, start, end, mask, labels, namespace) - tải dữ liệu toàn cầu global từ chỉ số dưới start để end trong Python dưới dạng biến kiểu type: list, hoặc gấu trúc dataframe. Mô tả các đối số tùy chọn masklabels có sẵn trong tài liệu lớp học và kho lưu trữ Tài liệu chuyển dữ liệu.
  • ExecuteClass(class, variable, type, start, end, properties, namespace) - tải dữ liệu lớp class từ id start để end trong Python dưới dạng biến kiểu type: list, hoặc gấu trúc dataframe. properties — danh sách (được phân tách bằng dấu phẩy) của các thuộc tính lớp sẽ được tải vào tập dữ liệu. Mặt nạ được hỗ trợ * и ?. Mặc định - * (tất cả tài sản). Tài sản %%CLASSNAME làm ngơ.
  • ExecuteTable(table, variable, type, start, end, properties, namespace) - tải dữ liệu bảng table từ id start để end trong trăn.

ExecuteQuery - phổ quát (mọi truy vấn SQL hợp lệ sẽ được chuyển cho Python). Tuy nhiên, ExecuteGlobal và kết thúc tốt đẹp của anh ấy ExecuteClass и ExecuteTable làm việc với một số hạn chế. Chúng nhanh hơn nhiều (nhanh hơn 3-5 lần so với trình điều khiển ODBC và nhanh hơn 20 lần so với ExecuteQuery). Thêm thông tin trong Tài liệu chuyển dữ liệu.
Tất cả các phương pháp này đều hỗ trợ truyền dữ liệu từ bất kỳ khu vực nào. túi nhựa isc.py phải có sẵn trong khu vực mục tiêu.

Thực hiện kiểm tra

ExecuteQuery(request, variable, type, namespace) - chuyển kết quả của bất kỳ truy vấn SQL hợp lệ nào sang Python. Đây là phương pháp truyền dữ liệu chậm nhất. Sử dụng nó nếu ExecuteGlobal và hàm bao của nó không có sẵn.

Tranh luận:

  • query - truy vấn sql.
  • variable - tên của biến Python chứa dữ liệu.
  • type - list hoặc gấu trúc dataframe.
  • namespace - khu vực mà yêu cầu sẽ được thực hiện.

Thực hiện toàn cầu

ExecuteGlobal(global, variable, type, start, end, mask, labelels, namespace) - chuyển toàn cầu sang Python.

Tranh luận:

  • global là tên của toàn cầu mà không có ^
  • variable - tên của biến Python chứa dữ liệu.
  • type - list hoặc gấu trúc dataframe.
  • start - chỉ số đầu tiên của toàn cầu. nhất thiết %Integer.
  • end là chỉ số cuối cùng của toàn cầu. nhất thiết %Integer.
  • mask - mặt nạ của các giá trị toàn cầu. Mặt nạ có thể ngắn hơn số trường trong toàn cầu (trong trường hợp đó, các trường ở cuối sẽ bị bỏ qua). Cách định dạng mặt nạ:
    • + vượt qua giá trị như là.
    • - bỏ qua giá trị.
    • b — Kiểu Boolean (0 - False, tất cả các phần còn lại - True).
    • d — Ngày (từ $horolog, trên Windows từ 1970, trên Linux từ 1900).
    • t - Thời gian ($horolog, giây sau nửa đêm).
    • m — Dấu thời gian (NĂM-THÁNG-NGÀY GIỜ:PHÚT:chuỗi định dạng GIÂY).
  • labels - %Danh sách tên cột. Phần tử đầu tiên là tên của chỉ số.
  • namespace - khu vực mà yêu cầu sẽ được thực hiện.

lớp thực thi

bọc lại hết ExecuteGlobal. Chuẩn bị một cuộc gọi dựa trên định nghĩa lớp ExecuteGlobal và gọi cho anh ta.

ExecuteClass(class, variable, type, start, end, properties, namespace) - chuyển dữ liệu lớp sang Python.

Tranh luận:

  • class - tên lớp
  • variable - tên của biến Python chứa dữ liệu.
  • type - list hoặc gấu trúc dataframe.
  • start - Id bắt đầu.
  • end - id cuối cùng
  • properties — danh sách (được phân tách bằng dấu phẩy) của các thuộc tính lớp sẽ được tải vào tập dữ liệu. Mặt nạ được hỗ trợ * и ?. Mặc định - * (tất cả tài sản). Tài sản %%CLASSNAME làm ngơ.
  • namespace - khu vực mà yêu cầu sẽ được thực hiện.

Tất cả các thuộc tính được truyền dưới dạng ngoại trừ thuộc tính loại %Date, %Time, %Boolean и %TimeStamp - chúng được chuyển đổi sang các lớp Python tương ứng.

Thực thiTable

bọc lại hết ExecuteClass. Dịch tên bảng thành tên lớp và gọi ExecuteClass. Chữ ký:

ExecuteTable(table, variable, type, start, end, properties, namespace) - chuyển dữ liệu bảng sang Python.

Tranh luận:

  • table - bảng tên.
    Tất cả các đối số khác được thông qua như là. ExecuteClass.

Ghi chú

  • ExecuteGlobal, ExecuteClass и ExecuteTable làm việc nhanh như nhau.
  • ExecuteGlobal nhanh gấp 20 lần so với ExecuteQuery trên các tập dữ liệu lớn (thời gian truyền >0.01 giây).
  • ExecuteGlobal, ExecuteClass и ExecuteTable làm việc trên toàn cầu với cấu trúc này: ^global(key) = $lb(prop1, prop2, ..., propN) đâu key là một số nguyên.
  • ExecuteGlobal, ExecuteClass и ExecuteTable phạm vi giá trị được hỗ trợ %Date tương ứng với phạm vi mktime và phụ thuộc vào hệ điều hànhcửa sổ: 1970-01-01, linux 1900-01-01, mac). Sử dụng %TimeStampđể truyền dữ liệu bên ngoài phạm vi này hoặc sử dụng pandas dataframe như giới hạn này chỉ dành cho danh sách.
  • ExecuteGlobal, ExecuteClass и ExecuteTable tất cả các đối số ngoại trừ nguồn dữ liệu (toàn cầu, lớp hoặc bảng) và biến là tùy chọn.

Ví dụ

lớp kiểm tra isc.py.test.Person chứa một phương thức thể hiện tất cả các tùy chọn truyền dữ liệu:

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)

phương thức gọi do ##class(isc.py.test.Person).Test() để xem tất cả các phương thức truyền dữ liệu hoạt động như thế nào.

Phương pháp trợ giúp

  • GetVariableInfo(variable, serialization, .defined, .type, .length) - lấy thông tin về biến: liệu nó có được định nghĩa, lớp và độ dài tuần tự hóa hay không.
  • GetVariableDefined(variable, .defined) - liệu biến có được xác định hay không.
  • GetVariableType(variable, .type) - lấy lớp của biến.
  • GetStatus() - lấy và loại bỏ ngoại lệ cuối cùng ở phía Python.
  • GetModuleInfo(module, .imported, .alias) — nhận biến mô-đun và trạng thái nhập.
  • GetFunctionInfo(function, .defined, .type, .docs, .signature, .arguments) - lấy thông tin về chức năng.

Khả năng tương tác

Bạn đã học cách gọi Python Gateway từ thiết bị đầu cuối, bây giờ hãy bắt đầu sử dụng nó trong sản xuất. Cơ sở để tương tác với Python trong chế độ này là isc.py.ens.Operation. Nó cho phép chúng tôi:

  • Thực thi mã Python
  • Lưu/Khôi phục bối cảnh Python
  • Tải và nhận dữ liệu từ Python

Về cơ bản, một hoạt động Pyhton là một trình bao bọc trên isc.py.Main. Hoạt động isc.py.ens.Operation cho phép tương tác với quy trình Python từ các sản phẩm IRIS của InterSystems. Năm yêu cầu được hỗ trợ:

  • isc.py.msg.ExecutionRequest để thực thi mã Python. lợi nhuận isc.py.msg.ExecutionResponse với kết quả thực hiện và giá trị của các biến được yêu cầu.
  • isc.py.msg.StreamExecutionRequest để thực thi mã Python. lợi nhuận isc.py.msg.StreamExecutionResponse kết quả thực hiện và các giá trị của các biến được yêu cầu. tương tự isc.py.msg.ExecutionRequest, nhưng chấp nhận và trả về luồng thay vì chuỗi.
  • isc.py.msg.QueryRequest để chuyển kết quả thực hiện một truy vấn SQL. lợi nhuận Ens.Response.
  • isc.py.msg.GlobalRequest/isc.py.msg.ClassRequest/isc.py.msg.TableRequest để truyền dữ liệu toàn cầu/lớp/bảng. lợi nhuận Ens.Response.
  • isc.py.msg.SaveRequest để lưu bối cảnh Python. lợi nhuận Ens.StringResponse với ID bối cảnh.
  • isc.py.msg.RestoreRequest để khôi phục bối cảnh Python.

    Ngoài ra, isc.py.ens.Operation có hai cài đặt:

    • Initializer - chọn một lớp thực hiện giao diện isc.py.init.Abstract. Nó có thể được sử dụng để tải các hàm, mô-đun, lớp và những thứ tương tự. Nó được thực hiện một lần khi quá trình bắt đầu.
    • PythonLib - (Chỉ dành cho Linux) nếu bạn thấy lỗi khởi động, hãy đặt giá trị của nó thành libpython3.6m.so hoặc thậm chí trong đường dẫn đầy đủ đến thư viện Python.

Tạo ra các quy trình kinh doanh

Có hai lớp có sẵn tạo điều kiện cho sự phát triển của các quy trình kinh doanh:

  • isc.py.ens.ProcessUtils cho phép bạn trích xuất các chú thích từ các hoạt động bằng cách thay thế biến.
  • isc.py.util.BPEmulator giúp dễ dàng kiểm tra các quy trình kinh doanh với Python. Nó có thể thực thi một quy trình nghiệp vụ (các phần Python) trong quy trình hiện tại.

thay thế biến

Tất cả các quy trình nghiệp vụ kế thừa từ isc.py.ens.ProcessUtils, có thể sử dụng phương pháp GetAnnotation(name) để lấy giá trị của một chú thích hoạt động theo tên của nó. Chú thích hoạt động có thể chứa các biến sẽ được đánh giá ở phía IRIS của InterSystems trước khi được chuyển sang Python. Đây là cú pháp thay thế biến:

  • ${class:method:arg1:...:argN} - gọi phương thức
  • #{expr} - thực thi mã bằng ngôn ngữ ObjectScript.

Một ví dụ có sẵn trong quá trình kinh doanh thử nghiệm isc.py.test.Process, ví dụ, trong hoạt động Correlation Matrix: Graph: f.savefig(r'#{process.WorkDirectory}SHOWCASE${%PopulateUtils:Integer:1:100}.png'). Trong ví dụ này:

  • #{process.WorkDirectory} trả về thuộc tính WorkDirectory của đối tượng process, là một thể hiện của lớp isc.py.test.Process những thứ kia. quy trình kinh doanh hiện tại.
  • ${%PopulateUtils:Integer:1:100} gọi một phương thức Integer lớp %PopulateUtils, truyền đối số 1 и 100, trả về một số nguyên ngẫu nhiên trong phạm vi 1...100.

Kiểm tra quy trình nghiệp vụ

Sản xuất thử nghiệm và quy trình kinh doanh thử nghiệm có sẵn theo mặc định như một phần của Cổng Python. Để sử dụng chúng:

  1. Trong thiết bị đầu cuối hệ điều hành chạy: pip install pandas matplotlib seaborn.
  2. Trong thiết bị đầu cuối IRIS của InterSystems, hãy chạy: do ##class(isc.py.test.CannibalizationData).Import() để điền dữ liệu thử nghiệm.
  3. Ra mắt sản phẩm isc.py.test.Production.
  4. Gửi loại yêu cầu Ens.Request в isc.py.test.Process.

Chúng ta hãy xem làm thế nào tất cả hoạt động cùng nhau. mở isc.py.test.Process trong trình chỉnh sửa BPL:

Cổng Python tại InterSystems IRIS

thực thi mã

Cuộc gọi quan trọng nhất là thực thi mã Python:

Cổng Python tại InterSystems IRIS

yêu cầu sử dụng isc.py.msg.ExecutionRequest, đây là các thuộc tính của nó:

  • Code — Mã trăn.
  • SeparateLines - có chia mã thành các dòng để thực thi hay không. $c(10) (n) được sử dụng để tách các chuỗi. Lưu ý rằng KHÔNG nên xử lý toàn bộ thư cùng một lúc, chức năng này chỉ để xử lý def và các biểu thức nhiều dòng tương tự. Mặc định 0.
  • Variables là danh sách các biến được phân tách bằng dấu phẩy sẽ được thêm vào phản hồi.
  • Serialization - Cách tuần tự hóa các biến mà ta muốn trả về. Tùy chọn: Str, Repr, JSON, Pickle и Dill, mặc định Str.

Trong trường hợp của chúng tôi, chúng tôi chỉ đặt thuộc tính Code, để tất cả các thuộc tính khác sử dụng giá trị mặc định của chúng. Chúng tôi thiết lập nó bằng cách gọi process.GetAnnotation("Import pandas"), trong thời gian chạy sẽ trả về một chú thích sau khi thay thế biến đã được thực hiện. Cuối cùng là mã import pandas as pd sẽ được chuyển đến Python. GetAnnotation có thể hữu ích để lấy các tập lệnh Python nhiều dòng, nhưng không có giới hạn nào đối với cách lấy mã này. Bạn có thể đặt thuộc tính Code theo bất kỳ cách nào thuận tiện cho bạn.

Bắt biến

Một thử thách thú vị khác khi sử dụng isc.py.msg.ExecutionRequest - Correlation Matrix: Tabular:

Cổng Python tại InterSystems IRIS

Nó tính toán Ma trận tương quan ở phía Python và trích xuất biến corrmat quay lại IRIS của InterSystems ở định dạng JSON bằng cách đặt thuộc tính yêu cầu:

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

Chúng ta có thể thấy kết quả trong Visual Trace:

Cổng Python tại InterSystems IRIS

Và nếu chúng ta cần giá trị này trong BP, nó có thể được lấy như sau: callresponse.Variables.GetAt("corrmat").

Truyền dữ liệu

Tiếp theo, hãy nói về việc chuyển dữ liệu từ InterSystems IRIS sang Python, tất cả các yêu cầu chuyển dữ liệu đều triển khai giao diện isc.py.msg.DataRequest, cung cấp các thuộc tính sau:

  • Variable là một biến Python mà dữ liệu được ghi vào đó.
  • Type - loại biến: dataframe (khung dữ liệu gấu trúc) hoặc list.
  • Namespace - khu vực mà chúng tôi nhận được dữ liệu. túi nhựa isc.py nên có ở khu vực này. Đây có thể là một khu vực không có hỗ trợ sản phẩm.

Dựa trên giao diện này, 4 lớp yêu cầu được triển khai:

  • isc.py.msg.QueryRequest - đặt thuộc tính Query để gửi một truy vấn SQL.
  • isc.py.msg.ClassRequest - đặt thuộc tính Class để truyền dữ liệu lớp.
  • isc.py.msg.TableRequest - đặt thuộc tính Table để truyền dữ liệu bảng.
  • isc.py.msg.GlobalRequest - đặt thuộc tính Global để truyền dữ liệu trên toàn cầu.

Trong quá trình thử nghiệm, nhìn vào hoạt động RAWĐâu isc.py.msg.QueryRequest thể hiện trong hành động.

Cổng Python tại InterSystems IRIS

Lưu/Khôi phục ngữ cảnh Python

Cuối cùng, chúng ta có thể lưu trữ ngữ cảnh Python trong IRIS của InterSystems, để thực hiện việc này, hãy gửi isc.py.msg.SaveRequest với lập luận:

  • Mask — Chỉ các biến thỏa mãn mặt nạ mới được lưu. được hỗ trợ * и ?. Thí dụ: "Data*, Figure?". Mặc định *.
  • MaxLength — Độ dài tối đa của biến được lưu trữ. Nếu quá trình tuần tự hóa của một biến dài hơn thì nó sẽ bị bỏ qua. Đặt thành 0 để nhận các biến có độ dài bất kỳ. Mặc định $$$MaxStringLength.
  • Name — Tên bối cảnh (tùy chọn).
  • Description — Mô tả bối cảnh (tùy chọn).

Lợi nhuận Ens.StringResponse с Id ngữ cảnh đã lưu. Trong quá trình thử nghiệm, nhìn vào hoạt động Save Context.

yêu cầu liên quan isc.py.msg.RestoreRequest tải ngữ cảnh từ IRIS của InterSystems vào Python:

  • ContextId là định danh ngữ cảnh.
  • Clear — xóa ngữ cảnh trước khi khôi phục.

Máy tính xách tay Jupyter

Máy tính xách tay Jupyter là một ứng dụng web mã nguồn mở cho phép bạn tạo và xuất bản sổ tay chứa mã, hình ảnh và văn bản. Cổng Python cho phép bạn xem và chỉnh sửa các quy trình BPL dưới dạng Máy tính xách tay Jupyter. Lưu ý rằng trình thực thi Python 3 thông thường hiện đang được sử dụng.

Tiện ích mở rộng này giả định rằng các chú thích chứa mã Python và sử dụng tên hoạt động làm tiêu đề trước đó. Hiện có thể phát triển các quy trình kinh doanh PythonGateway trong Jupyter Notebook. Đây là những gì có thể:

  • Tạo quy trình kinh doanh mới
  • Xóa quy trình kinh doanh
  • Tạo hoạt động mới
  • Thay đổi hoạt động
  • Xóa hoạt động

Đây video demo. Và một số ảnh chụp màn hình:

Trình khám phá quy trình

Cổng Python tại InterSystems IRIS

trình chỉnh sửa quy trình

Cổng Python tại InterSystems IRIS

Cài đặt

  1. Bạn sẽ cần InterSystems IRIS 2019.2+.
  2. Cài đặt PythonGateway v0.8+ (chỉ yêu cầu isc.py.util.Jupyter, isc.py.util.JupyterCheckpoints и isc.py.ens.ProcessUtils).
  3. Cập nhật mã ObjectScript từ kho lưu trữ.
  4. Hành hình do ##class(isc.py.util.Jupyter).Install() và làm theo lời nhắc.

Tài liệu.

Những phát hiện

MLToolkit là một bộ công cụ nhằm mục đích kết hợp các mô hình và môi trường giao dịch để có thể dễ dàng sử dụng trực tiếp các mô hình đã xây dựng trong các quy trình kinh doanh của bạn. Python Gateway là một phần của MLToolkit và cung cấp khả năng tích hợp với ngôn ngữ Python, cho phép bạn điều phối bất kỳ thuật toán học máy nào được tạo bằng Python (môi trường chính của nhiều Nhà khoa học dữ liệu), sử dụng nhiều thư viện được tạo sẵn để nhanh chóng tạo AI phân tích robot, thích ứng / Các giải pháp ML trên nền tảng InterSystems IRIS.

tài liệu tham khảo

Bộ công cụ ML

Nhóm người dùng MLToolkit là kho lưu trữ GitHub riêng được tạo như một phần của tổ chức GitHub của công ty InterSystems. Nó được gửi đến những người dùng bên ngoài đang cài đặt, tìm hiểu hoặc đã sử dụng các thành phần MLToolkit, bao gồm Cổng Python. Nhóm đã có một số case đã triển khai (có mã nguồn và dữ liệu thử nghiệm) trong lĩnh vực marketing, sản xuất, y học và nhiều ngành khác. Để tham gia nhóm người dùng Bộ công cụ ML, vui lòng gửi một email ngắn đến địa chỉ sau: [email được bảo vệ] và bao gồm các thông tin sau trong thư của bạn:

  • tên người dùng GitHub
  • Tổ chức (bạn làm việc hoặc học tập)
  • Vị trí (vị trí thực tế của bạn trong tổ chức của bạn, "Sinh viên" hoặc "Độc lập").
  • nước

Đối với những người đã đọc bài báo và quan tâm đến InterSystems IRIS như một nền tảng để phát triển hoặc lưu trữ trí tuệ nhân tạo và cơ chế học máy, chúng tôi mời bạn thảo luận về các kịch bản có thể có mà doanh nghiệp của bạn quan tâm. Chúng tôi sẽ sẵn sàng phân tích nhu cầu của doanh nghiệp bạn và cùng xác định một kế hoạch hành động; địa chỉ email liên hệ của nhóm chuyên gia AI/ML của chúng tôi – [email được bảo vệ].

Nguồn: www.habr.com

Thêm một lời nhận xét