いつの間にか、:py も追加されていました。(Pythonシェルへ切り替わります。)

USER>:py
 
Python 3.9.5 (default, Jan 13 2023, 15:20:22) [MSC v.1927 64 bit (AMD64)] on win32
Type quit() or Ctrl-D to exit this shell.
>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2023, 4, 13, 11, 16, 43, 487481)
>>>

もちろん、以下メソッドの実行でも切り替わります。

do ##class(%SYS.Python).Shell()

laugh

@Ohata.Yujiさん、こんにちは

単独で作成されているグローバル変数に対してSQLを発行するためには、クラス定義のストレージの定義を「デフォルトストレージ」から「SQLストレージ」に変更する必要があります。

丁度、似たグローバル構造に対してSQLストレージを作成する例がFAQトピックにありました。

既存のグローバルデータをオブジェクトやSQLインタフェースから利用する方法はありますか?

(添付の参考資料にあるPDFのP2~9までの ^KIONデータに対する定義が対象です。SQLストレージを作成する場合、スタジオのインスペクタを使っていただくと作りやすいかと思います。)

こんな感じで試してみました。

(^Testの右辺のデータを Data1プロパティで操作できるように定義してみました)

Class Gbl.Test Extends %Persistent [ StorageStrategy = MyGlobalStorage ]
{

Property Key1 As %Integer [ Required, SqlColumnNumber = 2 ];

Property Key2 As %String [ Required, SqlColumnNumber = 3 ];

Property Data1 As %String;

Index KeyIndex On (Key1, Key2) [ IdKey, Unique ];

ClassMethod createdata()
{
	set ^Test(1,2)="A"
	set ^Test(1,3)="B"
	set ^Test(2,1)="C"
	set ^Test(2,2)="D"
}

Storage MyGlobalStorage
{
<SQLMap name="GblMap">
<Data name="Data1">
<Delimiter>"^"</Delimiter>
<Piece>1</Piece>
</Data>
<Global>^Test</Global>
<RowIdSpec name="1">
<Expression>{L1}</Expression>
<Field>Key1</Field>
</RowIdSpec>
<RowIdSpec name="2">
<Expression>{L2}</Expression>
<Field>Key2</Field>
</RowIdSpec>
<Subscript name="1">
<Expression>{Key1}</Expression>
</Subscript>
<Subscript name="2">
<Expression>{Key2}</Expression>
</Subscript>
<Type>data</Type>
</SQLMap>
<StreamLocation>^Gbl.TestS</StreamLocation>
<Type>%Storage.SQL</Type>
}

}

DBeaverからの参照はこんな感じです。

このようなイメージであっていますでしょうか。

現在16記事が投稿されていますがその中の1つは、🗾日本のコミュニティメンバーからの投稿です👍

投票は英語記事への「いいね👍」で行っています。ぜひ日本からの投稿を応援してください📣

さて、今回のお題ですが、レベルを問わない InterSystems IRIS のチュートリアルです。

  • いつも使っているこの使い方、実は初めて使う人には良い内容かも!
  • 最初こんな風に使っていたけど、実はこの使い方のほうがいいかも!

など、ご経験された内容を新しいコミュニティメンバーに共有するイメージでぜひ投稿してみてください。

投稿は直接英語版コミュニティに投稿いただいても、まずは日本語で日本のコミュニティに投稿いただいてもどちらでも大丈夫です(#チュートリアル のタグをつけて投稿いただければ、日本のコミュニティからご連絡いたします)。

なお英字にした際、URLやコマンド実行例を除き「400単語以上の記述が必要」となりますので、ご注意ください。

英単語のカウントは、コミュニティのエディタをデフォルトモード「WYSIWYG」にした状態で右下に表示されます。確認にご利用ください。

Hiroseさん、こんにちは。

独自のアプリケーションのパスのハンドラーマッピングの設定で、

要求パス(*.cspなど)の設定画面にある「要求の制限」ボタンクリック後に開く画面内「要求のマップ先が次の場合のみハンドラーを呼び出す」のチェックボックスに、チェックが入っていましたら、外してみていただけますでしょうか。

Ohataさん、もしかして、shaCdカラムのタイプですが、埋め込みクラス(%SerialObject)で作成したクラスをタイプとして定義されていたりしますか?

テーブル定義ではなく、クラス定義として以下作成してテストしてみたら、カラム名=Null でヒットしました。

参照元クラス:Test.Person

Class Test.Person Extends %Persistent
{

Property Name As %String;
Property Address As Address;
}


​​​​​埋め込みクラス:Test.Address

Class Test.Address Extends %SerialObject
{

Property Zip As %String;
Property Pref As %String;
}

(Test.PersonのAddressプロパティがTest.Addressを参照する定義)

以下のテストをしたところ、Ohataさんと同じ状況になりました(SELECTの実行ですが、管理ポータルのODBCモードとODBCクライアントで試しています)

insert into Test.Person (Name) values('テスト太郎')

select * from Test.Person where Address=NULL この結果👉 

select * from Test.Person where Address is NULL この結果👉 0件

違う状況でしたらすみません・・。

皆さん、こんにちは!

期間が10日間延長され、応募締め切りが31日までに変わりました!まだまだ間に合います💨
​​ぜひ IRIS+Python に関係する記事を投稿しコンテストへ参加してみてください!laugh
(参加者全員に🎁賞品🎁あります!)

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

アプリケーションの応募期間が1週間延長され、5月9日~29日までとなりました!yes

奮ってご参加ください!laugh


スケジュール

🛠 アプリケーション開発と応募期間:

  • 2022年5月9日 (00:00 EST): コンテスト開始!
  • 2022年5月29日 (23:59 EST): 応募締め切り

 投票期間(1週間)

  • 2022年5月30日 (00:00 EST): 投票開始!
  • 2022年5月15日 (23:59 EST): 投票終了

@TAKI KURITA さん、こんにちは! 

エラーですが、IRIS 2021.1コミュニティエディションに組み込まれているライセンスの期限切れが原因のようです(関連記事はこちら)。大変申し訳ありません。

今、Gitの先を見ると Dockerfile のイメージ:タグ名の指定が、新しいタグ名に更新されているようですので(@Hiroshi Sato さんありがとうございます!)、もう1度 ソースを Pull した後、docker-compose up -d --build をお試しいただけないでしょうか。

@Kobata Makoto さん、こんにちは。

ちょっと状況が違うかもしれませんが、私の環境(Visual Studio2019、IRISは2021.2と2021.1)ですと、
MAXSTRINGエラーがでて途中で終わってしまいました。(おそらく、Write()メソッドに360万文字越えの情報を渡したときにエラーが出ていそうです)

試しに、以下のように Write()メソッドに分割して渡したところ、5MBの画像データもIRISに保存できました。

Dim obj As IRISObject = native.ClassMethodObject("User.Sample", "%New")
Dim prop As IRISObject = obj.GetObject("binaryData")
Dim filename As String = "C:\kit\test.png"
Dim inputFile = IO.File.Open(filename, IO.FileMode.Open)
Dim bytes = New Byte(5000) {}

While inputFile.Read(bytes, 0, bytes.Length) > 0
 prop.InvokeStatusCode("Write", bytes)
End While

obj.InvokeStatusCode("%Save")

@Yuji Ohata さん、こんにちは。

試してみましたが、SECONDARYデータベースできませんねsad

マニフェストを使った方法ではないのですが、以下のメソッドを使うとできるようでした。

set st=##class(%EnsembleMgr).CreateNewDBForSecondary("ネームスペース名",1)

(別の内容についての注意書きですが、ドキュメントだとこちらに記載がありました。)

マニフェストの <Invoke> を使って呼び出してみた結果は以下の感じでした。

<Invoke Class="%EnsembleMgr" Method="CreateNewDBForSecondary" CheckStatus="true">
<Arg Value="${Namespace}"/>
<Arg Value="1"/>
</Invoke>

↓できあがったデータベース↓

 Python コンテスト、始まりました 💨

↓紹介記事も追加されています↓是非チェックしてみてください。

今回のコンテストですが、ObjectScript を使わず Python だけで開発されたアプリケーションには 5ポイントのボーナスポイント が付与されます!(詳しくは、テクノロジーボーナス紹介ページをご参照ください)

現時点で以下の記事が投稿されいます!

InterSystems Tech Article Contest: Christmas Edition 🎄!

投票(yesをクリック)はこちらのページから行えます。

これだ!と思う記事を見つけたらyesをクリックして作者を応援しましょう!📢

そして、ぜひオリジナルの記事を日本のコミュニティに投稿してください!(もちろん日本語で!)

皆様からの投稿 🎅お待ちしてます🎄

皆さんこんにちは!2 回目の技術文書ライティングコンテストが始まりました💨

投稿は「英語」の指定がありますが、日本のコミュニティに「日本語」でぜひ投稿してください!

開発者コミュニティチームで(翻訳ツールを使いながらlaugh)翻訳させていただきます。

12月25日(US時間)までに投稿された方全員に🎁プレゼント🎁がありますので、ぜひこの機会に投稿してみください!お待ちしてます!

追加情報をお知らせします。

コミュニティが提供するZPM対応イメージの準備も整いました。

intersystemsdc/iris-community:2021.1.0.215.3-zpm
intersystemsdc/iris-ml-community:2021.1.0.215.3-zpm
intersystemsdc/irishealth-community:2021.1.0.215.3-zpm
intersystemsdc/irishealth-ml-community:2021.1.0.215.3-zpm

開始方法の例

docker run --rm --name my-iris -d --publish 9091:1972 --publish 9092:52773 intersystemsdc/iris-community:2021.1.0.215.3-zpm

docker run --rm --name my-iris -d --publish 9091:1972 --publish 9092:52773 intersystemsdc/iris-ml-community:2021.1.0.215.3-zpm

docker run --rm --name my-iris -d --publish 9091:1972 --publish 9092:52773 intersystemsdc/irishealth-community:2021.1.0.215.3-zpm

docker run --rm --name my-iris -d --publish 9091:1972 --publish 9092:52773 intersystemsdc/irishealth-ml-community:2021.1.0.215.3-zpm

開始後のログイン方法

docker exec -it my-iris iris session IRIS

管理ポータルの開始方法

http://localhost:9092/csp/sys/UtilHome.csp

コンテナ停止方法

docker stop my-iris

なんと!コンテストに応募された @Muhammad.Waseem さんが、応募作品概要(HL7を使用して結果の参照範囲と異常フラグを適宜更新する方法)を🔥日本語で投稿してくださいました🔥 ありがとうございます!

TestCode(OBX:3.1)毎に異常値の範囲も異なりますし、作品にあるような「異常値フラグセット関数」が用意されているととっても便利ですね!

動画でも詳しく解説いただいています!ぜひチェックしてみてください!

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

アナリティクスコンテストの開始日が延期となりました。詳細は以下の通りです!

🛠 8月23日~9月5日 応募期間

 9月6日~9月12日 投票(1週間)

9月13日 勝者発表(US時間に発表します)

❗️ 応募期間を8月22日までに延長しました!

まだまだコンテストへご応募いただけます!このチャンスをお見逃しなく!laugh

(記事を投稿された方 全員 へ 特別賞 があることもお忘れなく!!)