0 フォロワー · 163 投稿

SQLは、リレーショナルデータベースにデータを格納、操作、および取得するための標準言語です。

記事 Toshihiko Minamoto · 3月 27, 2025 8m read

fastapi_logo

説明

これは、ネイティブウェブアプリケーションとして IRIS にデプロイできる FastAPI アプリケーションのテンプレートです。

インストール

  1. リポジトリをクローンする
  2. 仮想環境を作成する
  3. 要件をインストールする
  4. docker-compose ファイルを実行する
git clone
cd iris-fastapi-template
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
docker-compose up

使用法

ベース URL は http://localhost:53795/fastapi/ です。

エンドポイント

  • /iris - IRISAPP ネームスペースに存在する上位 10 個のクラスを持つ JSON オブジェクトを返します。
  • /interop - IRIS の相互運用性フレームワークをテストするための ping エンドポイント。
  • /posts - Post オブジェクトの単純な CRUD エンドポイント。
  • /comments - Comment オブジェクトの単純な CRUD エンドポイント。

このテンプレートからの開発方法

WSGI 導入記事をご覧ください: wsgiサポートの概要

0
0 103
記事 Mihoko Iijima · 2月 12, 2021 3m read

これは InterSystems FAQ サイトの記事です。

以下例のクラスメソッド getLatestID() のように ObjectScript のクラスメソッドを用意します。
返したい値を戻り値に指定し、SQLストアドプロシージャ(SqlProc)キーワードを指定するだけで値が返せます。

ClassMethod getLatestID() As %Integer [ SqlName = getLatestID, SqlProc ]
{
    set latestID=$Order(^ISJ.TestClass1D(""),-1)
    quit latestID
}

 

操作を試す場合は、以下のクラス定義をご準備ください。

Class ISJ.TestClass1 Extends (%Persistent, %Populate)
{
Property name As %String;

ClassMethod getLatestID() As %Integer [ SqlName = getLatestID, SqlProc ]
{
    set latestID=$Order(^ISJ.
0
0 445
記事 Toshihiko Minamoto · 2月 24, 2022 5m read

InterSystems IRIS Data Platform の 2021.2 リリースには、ミッションクリティカルなアプリケーションを高速で柔軟性に優れ、セキュアに開発するための刺激的な新機能が多数含まれています。 Embedded Python は間違いなく脚光を浴びています(正当な理由で!)が、SQL の分野でも、テーブルデータに関する詳細な統計情報を収集し、それを最適なクエリプランに提供する、より適応性の高いエンジンに向けて大きな一歩を踏み出しました。 この短い連載記事では、2021.2 で新しく追加された 3 つの要素について詳しく説明し、ランタイムプランの選択(RTPC)を手始めに、この目標に向かって進みます。

これらについて適切な順序で話していくのは困難です(この記事を書く上で、私がどれだけ順序を入れ替えたか想像できないほどです!) というのも、これらが相互に非常にうまく機能するためです。 そのため、ご自由に順序を変えてお読みくださいsmiley

0
1 232
記事 Megumi Kakechi · 9月 21, 2022 2m read

SQL ゲートウェイ接続を使用した、外部データベースへのアクセス方法についてご説明します。

手順は以下になります。
 


1. 外部ソースへの SQL ゲートウェイ接続の作成を行います


※こちらの例では、IRISの別インスタンスへの接続を試しています。 
※ODBCを使用される場合は、事前に
システムDSN(64bit)の準備が必要です。
管理ポータルより
 [システム管理] > [構成] > [接続性] > [SQLゲートウェイ接続] の 新規接続作成 ボタンをクリックします。

接続の種類を選択し、必要項目を設定します。以下のサンプルは、ODBC接続(別IRISインスタンスのDSN設定)を行っています。

     

※ODBC/JDBC 各接続定義の作成の詳細は、以下のドキュメントをご覧ください。
 JDBC 経由での SQL ゲートウェイへの接続
 ODBC 経由での SQL ゲートウェイへの接続

 


2. リンクテーブルウィザードを使用して、1で作成したSQLゲートウェイ接続に対してリンクテーブルを作成します


管理ポータルより
 [システムエクスプローラ] > [SQL] ページより、
  [ウィザード] > [リンクテーブル] をクリックしリンクテーブルウィザードを開きます。

 手順に従ってリンクテーブルを作成します。

0
0 653
記事 Megumi Kakechi · 4月 25, 2024 2m read

大きなサイズのデータを持つフィールドに対してインデックスを作成すると、<SUBSCRIPT>エラーとなることがあります。

これは、グローバルの添え字(サブスクリプト)のサイズには制限があり、制限を超えるとエラーとなるためです。

例えば、以下のようなインデックスの場合、

^Sample.PersonI("NameIdx"," xxx...xxx",1)       =       ""

グローバル名+サブスクリプト部(=の左側)が、エンコード文字数で最長 511 文字を超えるとエラーとなります(日本語の場合はもっと小さな文字数です)。

※ご参考:グローバル参照の最大長


大きいデータを持つカラムに対してインデックスを設定したい場合の回避策としては、こちらの ドキュメント にありますように
「該当のプロパティのインデックス照合文字列を任意の文字数(例:128文字)に制限した照合を定義」
する方法があります。


具体的には、以下の2つの方法になります。
※クラス定義の変更/保存/コンパイル+インデックスの再構築が必要です。

0
0 155
記事 Hiroshi Sato · 10月 21, 2025 1m read

これは InterSystems FAQ サイトの記事です。
 

%String型のプロパティをOrder Byの条件にしてクエリーを発行した際のデータは以下のような順番で並べられます。

SELECT * FROM Shop.Order order by StatusFlag
null
-1
-2
-99
0

これは%String型(文字列型)のプロパティの照合順として正しい振る舞いです。

文字列照合の並び順

文字列プロパティに対し、+ をつけることで、数値照合と同じ照合順を得ることができます。

SELECT * FROM Shop.Order order by +StatusFlag
null
-99
-1
-2
0
0
0 39
記事 Tomoko Furuzono · 9月 17, 2020 17m read

Caché 2017以降のSQLエンジンには新しい統計一式が含まれています。 これらの統計は、クエリの実行回数とその実行所要時間を記録します。

これは、多くのSQLステートメントを含むアプリケーションのパフォーマンスを監視する人や最適化を試みる人にとっては宝物のような機能ですが、一部の人々が望むほどデータにアクセスするのは簡単ではありません。

この記事と関連するサンプルコードでは、このような情報の使用方法と、日次統計の概要を定期的に抽出してアプリケーションのSQLパフォーマンス履歴記録を保持する方法について説明します。



※詳細については、下記ドキュメントページもご参考になさってください。


https://docs.intersystems.com/iris20201/csp/docbook/DocBook.UI.Page.cls?KEY=GSQLOPT_sqlstmts

記録内容

SQLステートメントが実行されるたびに、所要時間が記録されます。 この処理は非常に軽量であり、オフにすることはできません。 コストを最小限に抑えるため、統計はメモリに保持されてから定期的にディスクに書き込まれます。 このデータには当日にクエリが実行された回数と、その平均所要時間と合計所要時間が含まれます。

データはすぐにはディスクに書き込まれません。

0
0 376
記事 Megumi Kakechi · 4月 11, 2023 4m read

これは InterSystems FAQ サイトの記事です。
 

Question:

TIMESTAMP型の項目に対して、TO_CHAR() や TO_DATE() を用いた SELECT を実行すると以下のエラーになります。

実行SQL:

select 
  TO_CHAR(xxxDateTime,'YYYY-MM-DD')
from
  Test

エラー:
  [SQLCODE: <-400>:<深刻なエラーが発生しました>]
  [%msg: <Unexpected error occurred: <ZCHAR>IllegalValuePassedToTOCHAR^%qarfunc>]

エラーの原因を教えてください。


Answer:

こちらは、IRIS2022.1以降のバージョンで CREATE TABLE (DDL) の TIMESTAMP 型が IRIS側クラスで %Library.PosixTime にマッピングするように変更されているためです。
(アップグレードした環境の場合は、従来のままの %Library.TimeStamp にマッピングされています)

%TimeStamp は、データを人が読める文字列(yyyy-mm-dd hh:mm:ss.ffff)として保存します。

0
0 1601
記事 Toshihiko Minamoto · 11月 21, 2024 6m read

image
コミュニティの皆さん、こんにちは。
この記事では、iris-RAG-Gen という私のアプリケーションをご紹介します。

iris-RAG-Gen は、IRIS Vector Search の機能を使用して、Streamlit ウェブフレームワーク、LangChain、および OpenAI で ChatGPT をパーソナライズするジェネレーティブ AI 検索拡張生成(RAG: Retrieval-Augmented Generation)アプリケーションです。 このアプリケーションは IRIS をベクトルストアとして使用します。
image

アプリケーションの機能

  • ドキュメント(PDF または TXT)を IRIS に取り込む
  • 選択されたドキュメントの取り込みを使ってチャットする
  • ドキュメントの取り込みを削除する
  • OpenAI ChatGPT
0
0 87
記事 Megumi Kakechi · 12月 15, 2020 1m read

これはInterSystems FAQ サイトの記事です。

%SYSTEM.SQL クラスの Purge* メソッドを使用して削除することが可能です。

※各メソッドの詳細は、以下ドキュメントをご参照ください。

%SYSTEM.SQLクラスについて【IRIS】

%SYSTEM.SQLクラスについて

 

①システム内のすべてのクエリキャッシュを削除する場合

Do $SYSTEM.SQL.PurgeAllNamespaces()


②ネームスペース内のクエリキャッシュを削除する場合

// ネームスペース内のすべてのクエリキャッシュを削除する
Do $SYSTEM.SQL.Purge()
// 日付指定してクエリキャッシュを削除する場合
// 以下は、過去30日間に使用されていないクエリキャッシュを削除

Do $SYSTEM.SQL.Purge(30) 

③クエリキャッシュを指定して削除する場合

Do $SYSTEM.SQL.PurgeCQClass("%sqlcq.USER.cls13")


④特定テーブルのクエリキャッシュを削除する場合

Do $SYSTEM.SQL.PurgeForTable("MedLab.Patient")
0
0 557
記事 Mihoko Iijima · 9月 24, 2021 3m read

これは InterSystems FAQ サイトの記事です。

システムユーティリティクラスを利用したプログラムを作成することで出力できます。

【注意1】出力データの区切り文字がカンマではなくタブで出力されます点、ご注意ください。

【注意2】エクセルでタブ区切りのファイルを開くため、エクセルの開くメニューから出力したファイルを開いてください。

処理概要は以下の通りです。

1) %SYSTEM.SQL クラス(※)の Execute() メソッドを使用します。

第1引数:SQL文を指定します。

第2引数:内部日付が格納されている場合 yyyy-mm-dd で出力されるように表示モードを切り替えます。(1:odbcモード)

詳細は下記ドキュメントページおよびクラスリファレンスをご参照ください。

ドキュメント - $SYSTEM.SQL.Execute()【IRIS
クラスリファレンス - $SYSTEM.SQLクラス - Execute()メソッド【IRIS

ドキュメント - $SYSTEM.SQL.Execute()
クラスリファレンス - $SYSTEM.SQLクラス - Execute()メソッド

※ %SYSTEMパッケージ以下クラスは $system 特殊変数を利用してメソッドを実行できます。

set rset=$system.SQL.
0
0 1282
記事 Toshihiko Minamoto · 4月 1, 2022 7m read

Benjamin De Boe がユニバーサルキャッシュクエリに関する素晴らしい記事を書いていますが、ユニバーサルキャッシュクエリ(UCQ)とは一体何でしょうか。また、昔ながらの埋め込み SQL を書いている場合になぜそれを気にする必要があるのでしょうか。  Caché と Ensemble において、キャッシュクエリは xDBC と動的 SQL を解決するために生成されるでしょうが、  InterSystems IRIS の埋め込み SQL は、キャッシュクエリを使用するように改善されました。そこで、名前に「ユニバーサル」が追加されているのです。  現在では、IRIS で実行されるすべての SQL は、UCQ クラスから実行されるようになっています。

InterSystems はなぜこのように変更したのでしょうか?  良い質問です!  ここでの大きなメリットは、ライブ環境での柔軟性にあります。  以前は、インデックスを追加したり、TuneTable を実行したりすると、キャッシュクエリの SQL はこの新しい情報をすぐに利用していたにもかかわらず、埋め込み SQL はクラスまたはルーチンが手動でコンパイルされるまで変更されないままになっていました。

0
0 419
記事 Megumi Kakechi · 3月 11, 2024 2m read

これは InterSystems FAQ サイトの記事です。

SQLのINSERT/UPDATE/DELETE文で大量のデータを更新する際に、高速化する方法をご紹介します。
以下の2つの手順を実行することで、更新処理のパフォーマンスを向上させることが可能です。

1.INSERT/UPDATE/DELETE時にインデックスを作成せず、あとでまとめて作成する

2.INSERT/UPDATE/DELETE時にジャーナルをOFFにする

1は、%NOINDEX キーワードを指定してインデックスの生成を後でまとめて行うことで、インデックスの構築を抑制しパフォーマンスを向上させる方法です。

クエリ実行例は、以下のようになります。

例:
UPDATE %NOINDEX tablename …
INSERT %NOINDEX INTO tablename …
DELETE %NOINDEX FROM tablename ...


更新後、あとでまとめてインデックスを再構築する場合は管理ポータルで行う方法と、コマンドで行う方法の2種類があります。

◆ 管理ポータルの場合...

[システムエクスプローラ] > [SQL]
 (ネームスペース指定&テーブルを選択して) アクション - テーブルのインデックスを再構築...

◆ コマンドの場合...

Set sc = ##class(Schems.
0
0 921
記事 Toshihiko Minamoto · 5月 27, 2025 14m read

次回の Python コンテストでは、Python を使用して IRIS をデータベースとして使用する簡単な REST アプリケーションを作成する方法についての小さなデモを作成しようと思います。 以下のツールを使用します。

  • FastAPI フレームワーク: 高パフォーマンス、学習しやすい、高速コーディング、プロダクション対応
  • SQLAlchemy: Python SQL ツールキットで、アプリケーション開発者が SQL の全性能と柔軟性を活用できるオブジェクトリレーションマッパーです。
  • Alembic: Python 用の SQLAlchemy データベースツールキットと使用する軽量のデータベース移行ツール。
  • Uvicorn: Python の ASGI ウェブサーバー実装。
0
0 84
記事 Toshihiko Minamoto · 6月 3, 2020 6m read

先週、私たちはInterSystems IRIS Data Platformを発表しました。これは、トランザクション、分析、またはその両方に関係なく、あらゆるデータの取り組みに対応する新しい包括的なプラットフォームです。 CachéとEnsembleでお客様が慣れ親しんでいる多くの機能が取り込まれていますが、この記事では、プラットフォームの新機能の1つであるSQLシャーディングについてもう少し詳しく説明します。これはスケーラビリティに関する強力な新機能です。 

ちょうど4分41秒の時間がある方は、スケーラビリティに関するこちらの詳しい動画をご覧ください。 ヘッドホンがない方や聞き心地の良いナレーションが同僚の方の迷惑になると思う方は、どうぞ読み進めてください! 

スケールアップとスケールアウト 

1日に何百万件という株取引を処理する場合でも、1日に数万人の患者を治療する場合でも、このような業務を支えているデータプラットフォームは、こういった大きなスケールに透過的に対処できなければなりません。 「透過的に」というのは、プラットフォームがスケーリングの面を請け負い、開発者やビジネスユーザーは処理量を気にすることなく、それぞれが専門とする業務とアプリケーションに専念することができるという意味です。 

長年にわたり、Cachéは垂直スケーラビリティをサポートしてきました。

0
0 423
記事 Toshihiko Minamoto · 3月 4, 2021 10m read

マッピングの例

 

三連載で 4 記事目を書いてしまったら、これまでのハイライトとして 5 記事目を書かないわけにはいかないでしょう!

注意:  何年か前に Dan Shusman 氏が私に「グローパルのマッピングは芸術だ」と言いました。  そのやり方に正解も不正解もありません。  どのようなマッピングを行うかは、データをどう解釈するかで決まります。  例のごとく、最終的な結論を出す方法は 1 つに限られません。  ここでご紹介する例の中には、同じ型のデータを異なる方法でマッピングする例がいくつかあります。

この記事の最後には、私が長年お客様のために書いてきたマッピングの例をまとめた zip ファイルをご用意しています。  過去 4 つの記事で触れた内容をまとめたハイライトとして、いくつか例を挙げていきたいと思います。  この記事は単なるハイライトですので、過去 4 記事ほどの詳細はカバーいたしません。  不明な点があれば、遠慮なくご連絡ください。もっと詳しく説明させていただきます。

Row ID Spec:  クラス例:  Mapping.RowIdSpec.xml

これについては、過去の記事で何度か断言していますが、 これを定義する必要があるのは、添え字の式が単純なフィールドではない場合に限ります。

0
0 223
記事 Mihoko Iijima · 2月 21, 2023 3m read

開発者の皆さん、こんにちは!

開発者向け情報を集めた「Developer Hub」ページが新たに登場しました!

(2025/10/9更新: 新たなチュートリアルが加わりましたので情報更新しました。)

 

このページには、5種類のチュートリアルが用意されています。チュートリアはブラウザ上で動作し、VSCodeやIRISターミナル、管理ポータルなどチュートリアルで使用するすべての画面が1つのタブ内で開くようになっています。

チュートリアルを試すための事前準備は不要で、クリック1回ですぐにお試しいただけます!(ユーザ登録も不要です)(チュートリアル開始方法は、ページ末尾をご覧ください。)

0
0 378
記事 Megumi Kakechi · 7月 16, 2024 2m read

これは InterSystems FAQ サイトの記事です。
 

SQLゲートウェイの接続設定は管理ポータルで作成できますが、プログラムでも作成が可能です。

管理ポータル:
[システム管理] > [構成] > [接続性] > [SQLゲートウェイ接続]

こちらのトピックでは、ODBC/JDBCそれぞれの設定をプログラムで行う方法をご紹介します。


--- SQL Gateway for ODBC ----

 set gc = ##class(%SQLConnection).%New()
 set gc.Name = "test"
 set gc.DSN = "IRIS User"
 set gc.Usr = "_system"
 set gc.pwd = "SYS"
 set gc.bUnicodeStream = 1
 set gc.useCOALESCE = 1
 write gc.%Save()
 


--- SQL Gateway for JDBC ----

 set gc = ##class(%SQLConnection).%New()
 set gc.isJDBC = 1
 set gc.Name = "testj"
 set gc.Usr = "_system"
 set gc.pwd = "SYS"
 set gc.driver = "com.
0
0 172
記事 Toshihiko Minamoto · 2月 11 8m read

年月を重ねるにつれて、InterSystems開発者コミュニティで特定のSQLの質問が何度も繰り返されることに気づくようになりました。特にさまざまなコンテキストでのLIKE述語の使用についてです。 よくあるバリエーションには、以下のようなものがあります。

また、さらに多くの派生パターンがあります。 そこで、InterSystems IRIS SQLでのLIKEの仕組みに焦点を当てた記事を書くことにしました。特に、埋め込みSQL、動的SQL、クラスクエリで変数を使用する方法について取り上げ、パターンのエスケープ、特殊文字検索についても解説しています。

まず最初に、InterSystems IRIS SQLでは、SQL標準の新しいバージョンを実装しているその他のリレーショナルDBMSで利用できるほとんどの機能を提供していることを述べておきたいと思います。 同時に、IRISではリレーショナルアクセスだけでなく、オブジェクトモデルやドキュメントモデルを使って同じデータにアクセスできることも重要なポイントです。

それでは、LIKE述語と、SQLでのパターンマッチングの使い方を詳しく見ていきましょう。

0
1 26
記事 Mihoko Iijima · 11月 6, 2020 2m read

これはInterSystems FAQ サイトの記事です。

SELECT のみを実行できるユーザを作成するには、ユーザかロールに対してテーブルへのアクセス権限を設定することで対応できます。

設定は、管理ポータルか、GRANT 文を実行することで設定できます。GRANT 文については、以下ドキュメントもご参照ください。
InterSystems SQL リファレンス - GRANT【IRIS】
CachéSQLリファレンス - GRANT

 

管理ポータルでの設定は、ユーザまたはロールの編集画面内「SQLテーブル」タブを使用します。

ユーザに直接設定する場合は以下のメニューを利用します。
  [ホーム] > [システム管理] > [セキュリティ] > [ユーザ] > [ユーザ編集] 

ロールに設定する場合は、以下のメニューを使用します。
 [ホーム] > [システム管理] > [セキュリティ] > [ロール] > 新規ロール作成
 ※ ロール名を指定し、保存するまで詳細設定画面が表示されません。
 ※ 作成したロールをユーザに付与することで、テーブルへのアクセス権限をロールで一元管理できます。 SQLテーブルでの権限設定

手順は以下のとおりです。

0
0 935
記事 Mihoko Iijima · 7月 15, 2021 5m read

これは InterSystems FAQ サイトの記事です。

InterSystems 製品は複数の SQL 文を一度に受け付けませんので、SQL 文での複数結果セットのサポートはありませんが、ストアドプロシージャを作成して複数の結果セットを返すことができます。

以下、ストアドプロシージャの中では、 %SQL.Statement クラスを利用して SQL を実行し、結果セットを作成し、結果セットを呼び出し元に返すため、ストアドプロシージャ実行時に自動生成されるプロシージャ・コンテキスト(=%sqlcontext 変数に格納)の中に、結果セットを登録しています。

結果セットの登録は、%Library.ProcedureContext クラスの AddResultSet() メソッドを使用します。

メモ:ストアドプロシージャ実行時に自動生成されるプロシージャ・コンテキストは %Library.ProcedureContext のインスタンスで %sqlcontext 変数に自動的に設定されます。

 

サンプルコードでは、Sample.Employee と Sample.Company を利用して SELECT 文を実行し、%Execute() 実行後に作成される結果セットを %sqlcontext に追加しています。

0
0 847
記事 Megumi Kakechi · 8月 31, 2023 4m read

 IRISをアップグレードすると、SQLクエリオプティマイザの機能向上により、旧バージョンとは異なるクエリプランによるクエリ実行コード(クエリキャッシュ)が作成される場合があります。
ほとんどの場合はパフォーマンスが向上するのですが、稀にパフォーマンスが低下するケースもあります。

・アップグレードによりオプティマイザが改善しているとはいえ、中には遅くなるクエリがあるのではないか?
・予期しないSQLの問題が起きるのではないか?
・アップグレード後に全てのクエリパターンをテストするには時間と労力がかかりすぎる

このように、機能向上よりも安定性を優先して「今までのプランのまま実行したい」というご要望もあることでしょう。
こちらの記事では、そのようなお客様への解決策をご案内します。


解決策 = 凍結プラン(Frozen Plan)を使用する:

Cache2016.2以降(IRISはすべてのバージョン)で、クエリプランの凍結機能 が実装されました。
この機能により、IRISを新しいバージョンにアップグレードする際、既存のクエリプランは自動的に凍結されます。
これにより、アップグレードによる既存のクエリのパフォーマンスの低下の可能性を防げます(古いバージョンと同じプランが使用されるため)。
新しいクエリについてはもちろん、アップグレード後のクエリオプティマイザによるプランが使用されます。

0
0 196
記事 Tomoko Furuzono · 3月 31, 2025 1m read

これは、InterSystems FAQ サイトの記事です。
 

ウィンドウ関数は、結果セットを部分的に切り出した領域に集約関数を適用できるもので、WHERE GROUP BY および HAVING 節が適用された後、SELECT クエリで選択された行に対して作用します。
IRIS/IRIS for Health 2021.1からサポートしています。
サポートされるウィンドウ関数は以下の通りです。

  • FIRST_VALUE(field)
  • PERCENT_RANK()
  • RANK()
  • ROW_NUMBER()
  • SUM(field)

詳細については、下記ドキュメントページをご確認ください。
ウィンドウ関数の概要
関連記事:IRIS SQLでは OFFSET/LIMIT句のような機能をサポートしてますか?
                  IRIS SQLクエリで取得した結果セットのランキング(順位)を算出する方法

0
0 68
記事 Mihoko Iijima · 2月 28, 2022 7m read

開発者のみなさん、こんにちは。

今回は、スーパーやコンビニでもらうレシートを写真で撮り、OCR を使ってレシートの画像から文字列を切り出して IRIS に登録する流れを試してみました。

サンプルでは、Google の Vision API を利用してレシートの JPG 画像から購入物品をテキストで抽出しています。

サンプルコード一式 👉 https://github.com/Intersystems-jp/iris-embeddedpython-OCR
 

最初、オンラインラーニングで使っている 「tesseract-OCR」を使ってみようと思ったのですが、レシートには半角カナが混在していたりで、半カナがなかなかうまく切り出せず、あきらめました・・(半角カナがなかったら日本語もばっちり読めていたのですが・・)

もし、tesseract-OCR で半カナを切り出す良い方法をご存知の方いらっしゃいましたら、ぜひ教えてください!

 

今回試すにあたり、Vision API の使い方を詳しく書いているページがありましたのでコードなど参考させていただきました。ありがとうございました。

0
1 1458
記事 Megumi Kakechi · 11月 28, 2022 2m read

Question:

IRISでは、PostgreSQLやMySQLで使うことができる、開始位置や取得件数を指定する LIMIT句やOFFSET句をサポートしているでしょうか?


Answer:

※2025/4/17更新:IRIS2025.1 以降のバージョンでは、LIMIT/OFFSET句をサポートするようになりました。ご参考

残念ながらサポートしていません。
ただ、代わりに使える同様の方法がありますのでご紹介します。

以下のようなSQLクエリをIRIS SQLで行うとします。

SELECT *
  FROM Sample.Person
ORDER BY Name
 LIMIT 3 OFFSET 5


---------------------------------------------------------------------------------
1. サブクエリとビュー ID (%VID)を使用する方法
---------------------------------------------------------------------------------

IRISでは、ビューまたは FROM 節のサブクエリで返される各行に整数のビュー ID (%VID) を割り当てることができます。
%VIDを使用すると、以下のサンプルのようにして同様のことが実現できます。

0
0 389
記事 Megumi Kakechi · 5月 2, 2024 3m read

こちらの記事では、LinuxでODBC接続の設定を行う方法をご紹介します。


はじめに、Linuxのバージョンを確認します。

$ cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="9.4 (Plow)"
:


1. yumパッケージのアップデートを行います

$ sudo yum update


2. unixODBCをインストールします

$ sudo yum install unixODBC

確認します

$ which odbcinst
/usr/bin/odbcinst
$ which isql
/usr/bin/isql
$ odbcinst -j
unixODBC 2.3.9
DRIVERS.: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES.: /etc/ODBCDataSources
USER DATA SOURCES.: /home/ec2-user/.odbc.ini
SQLULEN Size.: 8
SQLLEN Size.
0
0 938
記事 Kosaku Ikeda · 10月 26, 2025 14m read

コミュニティの皆さんこんにちは。
 

ベクトル検索関連の処理が完全にノーマークだった私が、一先ず「やってみよう!」との事で、2つの動画のサンプルを実行してみました。
Pythonは初心者なので、アレな箇所があっても目をつぶっていただけると幸いです。

また、間違っている箇所があったら、ご指摘いただけると幸いです。


■参考にした動画

■参考にしたコミュニティ記事

 

【目的】

本記事では、動画で紹介された内容を実際にIRIS環境上で実行できるよう、具体的な環境構築とコーディングを記載致します。
コミュニティの皆さんが簡単に試せるようになれば幸いです。

またGithubにサンプルソースを配置しているので、必要な方は参考にして下さい。

 

【準備】

■作業環境

※環境作成方法に問題のない方は、読み飛ばしていただいて構いません。

 






項目 バージョン情報・他
OS WIndowsServer2019
IRIS IRIS Community 2025.2.0.227.0
Python 3.12.10
開発環境 VS Code 1.
0
0 156
記事 Tomoko Furuzono · 4月 13, 2021 1m read

これは、InterSystems FAQサイトの記事です。

SQLクエリーの文字列を監査ログに残すことができます。

詳細は、以下のドキュメントをご参照下さい。

システム監査イベントについて

※%SQLで始まるイベントをご覧ください。 

InterSystems SQL の使用法

※監査関連ページをご覧ください。

0
0 242
記事 Toshihiko Minamoto · 4月 26, 2023 6m read

Global Summit 2022 または 2022.2 ローンチウェビナーの内容からよく覚えていると思いますが、InterSystems IRIS の分析ソリューションに組み込むための目覚ましい新機能をリリースしようとしています。 分析クエリを桁違いに高速化する、代替の SQL テーブルデータ格納手法であるカラムナー(列指向)ストレージです。 もともと 2022.2 の実験的機能としてリリースされましたが、最新の 2022.3 開発者プレビューには多数の更新が含まれているため、別途ここで簡単に説明したいと思います。

0
0 210
記事 Megumi Kakechi · 2月 26, 2025 2m read

これは InterSystems FAQ サイトの記事です。
埋め込みSQLの出力ホスト変数は、SQLCODE=0(埋め込みSQL正常終了)の場合のみ、正しい値が設定されていることが保証されます。

InterSystems製品のバージョンによっては、SQLCODEが0以外の場合(該当データがない100やエラー等)で値が設定される場合もありますが、その値は無効です。

特に、IRIS2021.1以降のバージョンでは、SQLCODE=100 の場合、INTO 節で指定された出力ホスト変数は NULL("") にクリアされますので注意が必要です。

Cacheや、IRIS2020.x 以前のバージョンでは、明示的な値のクリアを行っておりませんでしたが、こちらについても値は保証されるものではありません。

埋め込みSQLを使用する場合は、必ずSQLCODEを確認してエラーチェックを行うようにして下さい。
また、エラーチェック以外でも、SQLCODE = 0(データあり) の場合と SQLCODE = 100(データなし) の場合は処理を分けるようにし、SQLCODE = 100 の場合は出力ホスト変数を参照しないようご注意ください。


例)
誤った使用例:

  &sql( select name into :name from sample.
0
0 56