Nouvelle publication

Rechercher

Question
· Mai 13, 2024

SQL LOAD DATA ISSUES

Hello Community,

I'm trying to load a file by execute this LOAD DATA SQL command in both studio and SQL-SMP I got the below error.

///sample executed queries
ClassMethod ExecutedQueries()
{
    /// executed queries - 1
 LOAD DATA FROM FILE 'C:\\FHIRFILE\mycont.csv' COLUMNS ( C_COUNTRY VARCHAR ( 40 ) , C_CODE VARCHAR ( 20 ) ) INTO SAMPLE . COUNTRIES ( COUNTRY , CODE ) VALUES ( C_COUNTRY , C_CODE )
    /// executed queries - 2
LOAD DATA FROM FILE 'C:\FHIRFILE\mycont.csv' INTO SAMPLE . COUNTRIES ( COUNTRY , CODE )
    
}

sample data

4 Comments
Discussion (4)2
Connectez-vous ou inscrivez-vous pour continuer
Article
· Mai 12, 2024 5m de lecture

IRIS AI Studio: A playground to explore the Generative AI & Vector Embedding capabilities

 

Problem

Do you resonate with this - A capability and impact of a technology being truly discovered when it's packaged in a right way to it's audience. Finest example would be, how the Generative AI took off when ChatGPT was put in the public for easy access and not when Transformers/RAG's capabilities were identified. At least a much higher usage came in, when the audience were empowered to explore the possibilities.  

 

Motivation

Recently I got to participate in MIT Grand Hack, Boston where during my conversation with other participants, I noticed immense interest from physicians and non-technical veterans to explore the Generative AI capabilities in their domain. In one of the talks, a finest example, that showcased how the EHR's have a complicated UI being compared with a sleek UI of ChatGPT. Though they both address different needs and comes with it's own pros and cons, my key takeaway was, "The world is not going back towards, complicated user interfaces, or slow systems. And the future lies in systems characterized by intuitive design and optimized performance".

For the non-technical stakeholders who wanted to explore the Generative AI capabilities, is there a way to do it without much of technical hassle. Indeed, Co-lab/Jupyter notebooks have significantly simplified the process of running code. However, can we further streamline this to resemble the intuitive interfaces of platforms like OpenAI's Playground or Azure/Vertex AI Studio? Such a user-friendly environment would empower non-technical stakeholders to grasp the capabilities and constraints of Vector DB effortlessly. 

⚡️ How might we enable non-technical individuals, to evaluate IRIS vector DB potential use cases for their products/services, without exhausting developer resources?

 

Solution 

IRIS AI Studio— A no-code/low-code platform to explore the capabilities of vector embeddings in IRIS DB. User can seamlessly load data from various sources as vector embeddings into IRIS DB and then retrieve the information through multiple channels. Here, the loading of data is called Connectors and retrieval part can be done through Playground. At its core, IRIS AI Studio simplifies the process of working with vector embeddings and let user visualize the power of AI being harnessed for diverse applications.

Connectors

In connectors, the user starts with choosing the data source where they wanted to get the data from to load into IRIS DB as vector embeddings. They can upload files from their local system or retrieve data from cloud storage services as well. This feature has the potential to function as a data pipeline with the addition of CRON job capabilities. 

Initially I have added 4 different data sources - Local Storage, AWS S3, Airtable and Azure Blob Storage.

After choosing the data source, user needs to input the concerned additional information, like client id and secret key for AWS S3 storage. Then, user can configure the embeddings, by choosing the indexing type, model they wanted to use, dimensions and enter the data table name in IRIS, this data needs to be loaded into. Currently indexing from OpenAI and Cohere embeddings are supported, but just with few lines of code, we could add support for many other embeddings. 

After finishing the two steps, the data from the source is converted as vector embeddings and added to the IRIS data table. 

Playground

Now that we have the vector embedded data in IRIS DB, letting user retrieve the contents in their preferred channels can be done from Playground. Here are few examples how that's done. 

In Semantic Search user needs to enter the configurations that they've used to load the data and the semantic search query that they wanted to get executed on the vector embeddings. This will retrieve the contents from IRIS DB and return the results in a natural language format.

 

 

In the Chat with Docs user needs to enter the configurations that they've used to load the data and the chat query they wanted to make. The chat option gets differed from the query option significantly due to the context awareness. Also, in chat with docs we could plug in with many different LLM options to retrieve the contents and need not stick to the chosen indexing options (Currently OpenAI's GPT 3.5 turbo is added as default)

 

Settings

In the settings section, user could add multiple IRIS instance configurations which will be stored in the browser's local storage and user could choose which of them they wanted to actively engage with. This will make their work easier on managing multiple instances and choosing preferred ones to use. Also, here the LLM service's API Keys can be added (will be saved to browser's session storage) and automatically picked up during indexing or retrieval purposes. None of this information is being saved and it's been taken to the backend only for processing purposes.

 

Try it out

Clone the project repository from the following GitHub link: https://github.com/ikram-shah/iris-ai-studio.

Follow the provided instructions to set up the project locally on your machine. Please note, as on May 12, 2024 for some modules, development is still in-progress, but the functionality discussed above should work like a charm 💪🏻 Let know if something doesn’t work as expected through DM or issues section in Github.

Tech Stack

Frontend: VueJS, TailwindCSS, Flowbite

Backend: Python, Flask

Database: InterSystems IRIS

Frameworks/Libraries/Services: Llama-Index, SQLalchemy-iris, OpenAI, Cohere

Infrastructure: Vercel (frontend hosting), Render (backend hosting)

 

Credits

Thanks to the detailed documentation on Vector Search by InterSystems

Thanks to IRIS Vector Search template for simplifying the modules and capabilities by @Alvin Ryanputra 

Thanks to llama-iris library by @Dmitry Maslennikov 

 

Thoughts and Feedback

I come from Product Innovation and Engineering background, and for over a year now, I've been exploring the technological advancements in the healthcare sector. I'm here learning more from the ISC developers community and I am positive that this AI Studio platform would be of help in your work, say developers could share it with Program Managers / Physicians to get their inputs on the quality of data thats been retrieved and many others use cases. If this article resonated with you or sparked any thoughts, please give it a thumbs up 👍 and feel free to share your thoughts in the comments section below. I'd love to connect with anyone interested in discussing further!

🚀 Vote for this application in Vector Search, GenAI and ML contest, if you find it promising!

I will share few more posts that does technical deep dive of this platform. 

6 Comments
Discussion (6)1
Connectez-vous ou inscrivez-vous pour continuer
Article
· Mai 12, 2024 6m de lecture

IRIS BI開発者向けチュートリアルを試してみる(9)

はじめに

IRIS BIチュートリアル試してみたシリーズの9回目です。
今回は、チュートリアル全6ページのうちの5ページ目、「サブジェクト領域の作成」について試していきます。
「サブジェクト領域」という新しい概念が出てきますが、どんなものかを触りながら理解していきます。
では、早速はじめていきましょう。

サブジェクト領域の作成

最初に、サブジェクト領域とは何かを理解するところから始めましょう。チュートリアルでは以下のような説明があります。

”サブジェクト領域は、オプションによる項目名のオーバーライドを持つサブキューブです。サブジェクト領域を定義すると、セキュリティ上の理由およびその他の理由により、より小さなデータ・セットに焦点を当てることができます。”

うーん、分かったような、分からないような。。実例を基に説明してみます。
6回目の記事で郵便番号と市区町村の階層を作成しました。郵便番号→市区町村という階層構造になっていましたよね。以下の図が、郵便番号と市区町村の関連を表したものです。
 
現状、チュートリアルで使用しているキューブには上記5つの郵便番号を持つデータが格納されています。
これを、特定の郵便番号のデータだけを扱えるサブセットに分割したい要件があったとします。例えば配達員の担当地域ごとに分割するとか。
そのような場合に用いられるのがサブジェクト領域です。チュートリアルでは、以下の2つのサブジェクト領域を作成します。

サブジェクト領域名 コンテンツ
Patient Set A 郵便番号 32006、32007、または 36711 に居住する患者
Patient Set B 郵便番号 34577、または 38928 に居住する患者


では、実際に作成していきます。作業はアーキテクト画面から行いますので、アーキテクト画面を開きます。
画面上部の [新規] ボタンをクリックし、新規作成のダイアログを表示します。表示されたダイアログに、以下のように設定します。

  • 定義タイプ:サブジェクト領域
  • サブジェクト領域の名前:Patient Set A
  • ベースキューブ:Tutorial
  • サブジェクト領域のクラス名:Tutorial.SubjectA

 
ベースキューブは [参照] ボタンから選択することもできます。

 
[OK] で終了すると、以下のような画面が表示されます。キューブ作成と同様に、ここに設定を施していくことになります。

ではここに、郵便番号のフィルタ条件を追加していきます。それに必要な情報を取得するために、別ウィンドウでアナライザ画面を立ち上げ、Tutorialキューブを開きます。
HomeD ディメンジョン配下の ZIP Code レベルを [フィルタ] にド
ラッグ&ドロップします。こんな画面になります。

ピボット・プレビュー領域のすぐ上に表示された ZIP Code の虫眼鏡アイコンをクリックします。
Patient Set Aの条件である、郵便番号=32006、32007、36711をチェックし、✓をクリックして終了します。


フィルタが適用され、件数が変わりました。
※注意:サンプルデータはランダムに作成されるため、こちらの画面表示とみなさまの実行結果は一致しないことがあります。

この状態で [クエリ表示] アイコンをクリックします。ピボット・ビルダ領域の [列] の上あたりにあるアイコンです。
   
MDXクエリが表示されます。

 
MDXクエリって何??という方もいらっしゃるかもしれません。これはOLAPデータベースに対する標準クエリ言語で、RDBにおけるSQLのようなものです。
このクエリ構文から、%FILTER より後ろにある条件の部分をコピーしておきます。コピーしたら、ダイアログは [OK] で閉じます。

%OR({[HOMED].[H1].[ZIP CODE].&[32006],[HOMED].[H1].[ZIP CODE].&[32007],[HOMED].[H1].[ZIP CODE].&[36711]})

では、再びアーキテクト画面に戻り、Patient Set Aの行をクリックして選択し、詳細ペインの [フィルタ] にコピーしたフィルタ式を貼り付けます。

 貼り付けたら [保存] ボタンをクリックして、サブジェクト領域を保存します。以下のダイアログで [OK] をクリックします。
  
保存が完了したら、続いてコンパイルします。

 

これで Patient Set A については作成できました。同様にPatient Set Bも作成します。

先ほどとの相違点のみ記載します。作成のダイアログで、名前を Patient Set B 、クラス名を Tutorial.SubjectB とします。
 
設定するフィルタ条件は、郵便番号=34577、38928 の2つになります。

%OR({[HOMED].[H1].[ZIP Code].&[34577],[HOMED].[H1].[ZIP Code].&[38928]})

保存、コンパイルまで完了したら、これで2つのサブジェクト領域は完成です。思ったよりもシンプルな作業ですね。

サブジェクト領域の検証

では、作成したサブジェクト領域が意図した通りに動作するかを確認します。
アナライザ画面で キューブの変更 アイコンをクリックします。作成した2つのサブジェクト領域が表示されますね。Patient Set A を選択して開きます。

 
[行] に ZIP Code をドラッグ&ドロップします。フィルタ設定した3つの郵便番号のみが表示されます。

 
同様に Patient Set B についても確認します。こちらもフィルタ設定した2つの郵便番号のみが表示されます。

 

一般的なフィルタ式

もう少しMDXクエリについて学んでみたいと思います。アナライザ画面で Tutorial キューブを開きます。
何も条件を設定しない状態で、先ほどの [クエリ表示] アイコンをクリックします。
 
Tutorial キューブが選択されていて、フィルタ条件などは一切無い状態です。
ではここに、ColorD ディメンジョン配下 Favorite Color レベルから Orange メンバを [フィルタ] にドラッグ&ドロップします。カウントが変わりましたね。

この状態で [クエリ表示] アイコンをクリックします。
 
フィルタ条件の構文、 %FILTER [ColorD].[H1].[Favorite Color].&[Orange] が追加されました。
では、いま設定したフィルタ条件を × で削除し、今度は Favorite Color レベルを [フィルタ] にセットします。その後にフィルタ・ボックスから Orange と Purple の2つを選択します。
 この状態でクエリ表示をしてみます。Orange だけの場合と異なり、 %OR で Orange と Purple の条件が囲まれています。
  
では次に、Favorite Color フィルタを Orange だけに設定し、AllerD ディメンジョン配下の Allergies レベルから mold メンバを [フィルタ] に追加します。以下のような設定になります。


この状態で [クエリ表示] アイコンをクリックします。
 
今度は2つの条件の組み合わせ(AND条件)になりますので、NONEMPTYCROSSJOIN という関数でフィルタ指定した2つのメンバが囲まれています。
ここでは、フィルタ条件を中心にMDXクエリについて確認しました。MDXについて詳しいことが知りたい場合は、オンラインドキュメントの以下のページを参考にしてください。

おわりに

今回はサブジェクト領域の作成を行いながら、その後ろ側で使用されているMDXクエリについて簡単に学びました。
部門ごとに参照可能なデータを制限したい、などデータを特定の条件でフィルタして公開したいというユースケースはよくあるかと思います。そのような場合に別々のキューブを作らずに対応できるサブジェクト領域は有用であると考えます。
次回からは、いよいよ最終ページ「ピボット・テーブルおよびダッシュボードの作成とパッケージ化」について取り上げます。お楽しみに!

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer
Article
· Mai 12, 2024 9m de lecture

Python BPL em pré-visualização

BPL a 10.000 pés

BPL é uma sigla para Business Process Language (Linguagem de processamento de negócio).
Isso é um arquivo em formato XML para descrever a orquestração complexa de interações de informações entre sistemas.
A máquina de integração da InterSystems tem, há duas décadas, fornecido um editor visual para construir, configurar e manter o BPL usando uma interface gráfica. Você pode pensar nisso como se fosse desenhar um diagrama de fluxo de processo que pode ser compilado e implementado.

Um exemplo: faça uma xícara de chá


Componentes BPL são adicionados a produções de integração como qualquer outro componente de negócio embutido (fornecido pronto pela ferramenta) ou customizado.

Teste de exemplo de input (entrada) e output (saída)


Alguns desenvolvedores podem ter um estranhamento ao usar os diagramas BPL, pois podem ser favoráveis ao uso de Business Process em código puro. Entretanto, quando a a experiência da solução é aberta para outros conjuntos de habilidades num time (Analistas, Gerentes de projetos, testes e suporte), esses diagramas podem ser mais acessíveis e visualmente auto-descritivos do que comentários de código. Simplesmente mais pessoas podem ler e compreender uma visão de alto nível do que seguir um código. Isso reduz o tempo gasto pelo desenvolvedor para explicar a solução existente. Um diagrama BPL é um sumário técnico que está sempre atualizado.
Visualmente:

  • Avaliar o que foi implementado
  • Entender como as soluções existentes podem acomodar novas necessidades de negócio
  • Ver as dependências, critérios e escopo das colaborações de testes
  • Relembrar e guiar intervenções do suporte para soluções implementadas

Um diagrama BPL fornece várias construções importantes:

Requisição Um tipo de mensagem inicial de um Serviço ou Processo anterior que inicia o trabalho. Isso poderia ser, por exemplo, uma mensagem de admissão de um sistema de informação de um hospital.
Resposta Um tipo de mensagem opcional que pode ser populada durante, para transmitir  uma mensagem final a um processo subsequente ao completar o trabalho.
Contexto Uma coleção de propriedades utilizada para guardar o estado entre os passos lógicos de atividades em um diagrama BPL.
Atividades De atribuições, execução de SQL, ramificações e decisões lógicas a chamadas a outros processos das produções.

Abrindo o editor pelo Portal de Administração

Considerações para Python em BPL


Um princípio essencial para adicionar a nova competência de Python para o BPL é:


Empoderar soluções BPL existentes para serem melhoradas de maneira incremental com a nova funcionalidade de Python
 


Considere um só processo BPL que interage com 5 sistemas externos diferentes. Se houvesse sido escolhida uma abordagem de BPL desenvolvido inteiramente em Python, a reescrita e novos testes de um BPL completo existente seria inevitável.

Mesmo se uma conversão total de um BPL de ObjectScript para Python fosse trivial, um teste completo UAT de uma solução pode ser desafiador. Isso pode consumir muito tempo e ser restrito por disponibilidade de sistemas de teste retrógrados ou progressivos, além de especialistas de domínio departamental. Então, de um modo geral, "converter para Python" pode não valer o custo-benefício para melhorar BPLs existentes.
Portanto, uma abordagem de mistura de linguagens foi seguida.
Anteriormente, um BPL podia ser implementado em ObjectScript puro ou básico.
Agora um BPL pode ter uma linguagem de alto nível de ObjectScript, mas dentro desse escopo é livre para implementar ou configurar atividades específicas em Python usando sobreposição de linguagem. Isso facilita o acesso para competências de libraries Python disponíveis para BPLs existentes.

Combinações de linguagens:

Linguagem principal Sobreposição de Linguagem Comentários
Object Script  -  
Basic Não disponível  
Python  -  
Object Script Python Misturado
Python Object Script Misturado

Nova opção de linguagem principal para Python


Nova linguagem de sobreposição para atividades para misturar ObjectScript e Python.


Diagramas BPL agora incluem um novo ícone de linguagem Python. Uma discreta, porém familiar dica de onde a linguagem Python é usada pelas atividades. Isso é útil durante o desenvolvimento incremental, mas também ajuda a guiar consultas de melhora e suporte futuras. Esse ícone vai aparecer sempre que a respectiva Atividade de Linguagem de Sobreposição estiver definida como Python.

Reutilização da declaração de importação Python 
Expressões para Atividades no editor tem espaço limitado. Por exemplo:

Em Python, a expectativa é aproveitar alguma library. Contudo, expressões e condições foram encurtadas anteriormente.
Portanto, na Aba Geral do BPL existe uma nova sessão de importação para declarações de importação do Python.
Por trás dos panos, as importações são automaticamente ligadas ao contexto para cada expressão Python ou ativiade e código.

  • Portanto, isso possibilita o reuso, ao gerenciar importações em comum num mesmo lugar
  • Encurta as expressões de Python 

 

Adicionalmente, quando um código é implantado a um sistema em produção, existe uma chance de que alguma library de Python customizada ou de terceiros não esteja disponível. Nesse caso, um erro especial é escrito no log de eventos normal da integração para o time de suporte.
or exemplo: importação de library faltando na produção.

Quando falta alguma library Python, o business process será finalizado pela máquina de integração por padrão. Contudo, o time de suporte pode achar utilidade em lidar com erros específicos de uma maneira particular, enquanto uma remediação de longo prazo é providenciada. Com isso em mente, a importação Python tem um erro específico que pode ser tratado pelas configurações padrão da produção. Por exemplo:


Isso captura o erro de import e escreve uma advertência para o log de eventos da integração. Mantém o processo BPL rodando em produção.

A ação de resposta "S" suspende a mensagem atual e segue para a próxima. O processo continua rodando.

 

Código acontece

Ao invés de desencorajar atividades de código Python, a ideia é fazer a entrada de Python no editor BPL mais produtiva.
Por trás dos panos, cada bloco de código Python é envolto em um Try-Except do que retorna um erro específico de integração.
De uma maneira similar às importações de código, o suporte pode gerenciar os erros de código em tempo de execução configurando o código de ação de resposta E#2603.
Isso permite reportar alertas para diferenciar entre erros de importação de pacotes (DevOps) e tempo de execução (código de desenvolvedor), para que o suporte escolha  o recurso secundário correto para resolução. I.e.:
Um código de atividade em Python que lança um erro de "dividir por zero" durante a execução.


Configure o processo para suspender a mensagem para tratar quando erro de execução ocorre:


Detalhe do exemplo de erro capturado no Log de Eventos de Integração.

 

Indentação de Código

 O editor BPL facilita a normalizar o caractere usado para indentação. Isso é necessário para envolver códigos de desenvolvimento em blocos de try-except. Assim, se o código é copiado e colado dentro do editor, o caractere de indentação será normalizado para um só espaço, o que deixa os compiladores de Python alegres.

O editor fornece auto-indentação preambular enquanto você digita, para prestar assistência à entrada de código Python.
Exemplificando, o código a seguir pode ser entrado sem usar a barra de espaço para indentar.
 

Se a indentação de código está incorreta, o editor valida enquanto salva e aponta a linha de código com o problema. A validação de indentação é oferecida tanto no painel de atividade quanto no editor de valor pop-out.


O erro de validação mostra:

  • O número da linha do código fonte que contém o problema
  • O código fonte real
  • O erro de sintaxe Python

 

Câmbio de código ( Object Script para Python )

Object script usa apenas um "=" operador para igualdade e atribuição.
Enquanto isso, o Python usa "=" para atribuição e "==" para teste de igualdade.
Para mitigar esse tipo de problema de câmbio de contexto, o código Python é validado para sintaxe bem formada, de moto que qualquer ajuda de erro é exibida através do editor.
Exemplo: Python sugere o use de " == " ao invés de "=".

O erro mostra:

  • O número da linha do código fonte que contém o problema
  • O código fonte real
  • O erro de sintaxe Python e uma possível resolução.

Verificação de digitação e dicas para nome de classe IRIS e nome de método 

Não há prompt do intellisense para nomes de classe e de métodos.
Assim, a validação do editor foi estendida para capturar e sugerir nomes corretos quando o código Python é salvo.
Isso deve reduzir o número de operações de salvar / compilar durante o desenvolvimento, reduzir testes incrementais e dar mais confiança à qualidade do código.
O significado de verificação de digitação nesse contexto é para ajudar com diferenças comuns de grafia entre o inglês estadunidense e o inglês britânico.
Por exemplo, considere a palavra "Color" (cor) nos Estados Unidos, que é escrita como "Colour" no Reino Unido.
Nomes de classe e método são sensíveis a capitalização e isso é validado ao salvar.
Exemplo: capitalização incorreta em nome de classe.

Exemplo: uso de "s" ao invés de "z" no nome do método.


Operações de dicas de substituição:

Sequência parcial do nome Dicas de combinações sugeridas
$ or _ %
ise ize
tor ter
cie cei
our or
1 l


A detecção de "1" numérico para substituir pela letra "I" pode ser difícil de notar manualmente.
Se classes ou métodos IRIS estão faltando, estes serão sinalizados.

Esse comportamento funciona quando aspas simples ou duplas são usadas para especificar nomes de classes em código Python.
A validação ignora comentários de uma ou mais linhas para não atrapalhar a iteração de entrada de código.
Uma linha ignorada:

Linhas múltiplas ignoradas:

Variáveis de atividade do código

O editor fornece uma aba de contexto para configurar o tipo da requisição, resposta e contexto base, e propriedades de contexto.

As variáveis a seguir estão no escopo do Python, para serem utilizadas em códigos e expressões:

Nome da variável Tipo
process Ens.BusinessProcess
context Ens.BP.Context ou subclasse
request %Library.Persistent ou subclasse
response %Library.Persistent ou subclasse
status Ens.Util.PyByRef

Essas podem ser descobertas em código gerado e são usadas como qualquer outro método de Python embutido.
Note que métodos podem ser gerados em ambas as classes Thread e Contexto.

A variável de status é apoiada por um novo tipo de integração: PyByRef. Isso permite que os valores de status sejam passados de volta para o código de tratamento do BPL de integração.
Atribuir manualmente um status para uma nova mensagem de erro, por exemplo, em código Python:

status.value=iris.cls('%SYSTEM.Status').Error(5001,"My custom error message")

Note que o pacote "iris" está disponível em códigos ou expressões Python sem importação explícita. Isso é fornecido automaticamente pelo tratamento do BPL de integração. I.e.:

import iris
import traceback


Atividades de BPL possíveis em Python:

  • Alert (alerta)
  • Assign (atribuição)
  • Code (código)
  • Trace (rastreio)
  • If (se)
  • Case (caso) 
  • Branch (ramificação)
  • Milestone (marco)
  • While (enquanto)
  • Until (até)

Algumas mudanças às quais se atentar

O schema BPL agora suporta um novo atributo para sobreposição de linguagem.

O arquivo estático de aplicação web csp que dá suporte ao editor BPL mudou para contemplar as novas edições de Python e capacidade de validação.

Conclusões

Sejam Object Script, ou Python, ou uma mistura, escolhidos para implementação da integração, o BPL pode fazer a solução mais acessível e passível de suporte para uma mistura de habilidades e times.
O BPL trata de delegar o container de código, que normalmente seria uma classe, para a máquina de integração, com o objetivo de focar mais nas atividades que representam o problema de domínio do negócio.
A importação de Python reuse.helps simplifica expressões de ação. Isso automaticamente fornece tratamentos de erros que ajudam a informar o time de suporte e gerenciar soluções alternativas para dependências faltantes do Python em produção.
O edito ajuda via validação ao salvar, para dar qualidade aos blocos de código e expressões Python ao evidenciar a localização de problemas detectados e onde é possível providenciar uma sintaxe ou dicas de digitação de nomes de tipos IRIS. Isso deve reduzir testes iterativos e melhorar a produtividade do primeiro rascunho de código durante a implementação.

Para explorar mais as capacidades do BPL Python, leia a prévia em containers.intersystems.com

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer
Annonce
· Mai 12, 2024

[Webinar in Hebrew] Maximize Your Success with InterSystems Support

Hi Community,

We're pleased to invite you to the upcoming webinar in Hebrew:

👉 Maximize Your Success with InterSystems Support 👈

📅 Date & time: May 21st, 3:30 PM IDT


Unlock the full potential of your InterSystems solutions in this engaging webinar! Join us to explore the capabilities of the Worldwide Response Center (WRC). Learn about our streamlined support procedures and policies designed to deliver the help you need, when you need it. Dive into the WRC application with a live demo, discover insider tips for effective communication, and much more.

Presenter:
🗣@Asaf Sinay, Senior Support Manager, Product Support, InterSystems 

➡️ Register today and enjoy!
 

1 Comment
Discussion (1)1
Connectez-vous ou inscrivez-vous pour continuer