お知らせ Mihoko Iijima · 2022年4月3日 【アーカイブ配信のお知らせ】Python Gateway のご紹介(2021年10月14日開催) 開発者のみなさん、こんにちは! 2021年10月に4回シリーズで開催した「InterSystems IRIS 開発者向けウェビナー」第2回目の「Python Gateway のご紹介」のアーカイブをYouTubeに公開いたしました。 InterSystems IRIS / IRIS for Health バージョン2021.1より、External Language Gateway に Python のサポートが追加されました。また、External Language Gateway の機能強化により外部ストアドプロシージャが利用できるようになり、Java、.Net、Python のコードを SQL から直接実行できるようになりました。 ウェビナーでは、Python からの利用法のついて、デモを交えながらご紹介しています。 ぜひご覧ください! (IRIS 2021.1新機能全体のご紹介については、こちらのYouTubeをご参照ください。) #Python #SQL #Webセミナー #オブジェクトデータモデル #キーバリュー #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 92
記事 Toshihiko Minamoto · 2022年4月1日 7m read InterSystems IRIS の新しい埋め込み SQL #SQL #InterSystems IRIS 0 0 0 333
記事 Tomoko Furuzono · 2022年3月29日 1m read SQLでのNULLデータの取り扱い これは、InterSystems FAQサイトの記事です。 SQLの場合、NULLデータと空文字列 ('')は区別されます。それぞれの設定・確認方法は、以下のようになります。 (1) NULLデータ 【SQL】 insert into test (a) values (NULL)select * from test where a IS NULL 【InterSystems ObjectScript】 set x=##class(User.test).%New()set x.a="" (2) 空文字列 ('') 【SQL】 #ObjectScript #SQL #Caché #InterSystems IRIS 0 0 0 274
記事 Tomoko Furuzono · 2022年3月29日 1m read プログラムでCSVファイルを1行ずつ読み込む方法 これは、InterSystems FAQサイトの記事です。 %SQL.Util.Proceduresクラスの CSV() プロシジャを使用することにより、実現できます。下記が使用例のコードとなります。(test.csvというファイルが c:\temp にあるという前提) #ObjectScript #SQL #Caché #InterSystems IRIS 1 0 1 427
記事 Hiroshi Sato · 2022年3月23日 2m read 現在使っているリレーショナルデータベースからInterSystems IRIS Data Platformに移行することは可能ですか? 質問 現在使っているリレーショナルデータベースからInterSystems IRIS Data Platformに移行することは可能ですか? 答え InterSystems IRIS Data Platform(以下IRISと表記)は、SQLをサポートしていますので、多くの場合リレーショナルデータベースで構築されたアプリケーションは、大部分のコードを変更することなくIRISに移行することができます。 ただしSQLの各実装毎にSQL標準を拡張した仕様等があり、それにIRISが全て対応していませんので、コードの書き換えが必要なケースもあります。 また各実装が独自に用意した標準でない通信系API等にも対応していませんので、その場合にはJDBC、ODBCなどの標準的な通信APIに置き換える必要があり、かなり書き換えが必要になります。(使用されているSQL文等はそのまま流用可能な場合が多いです。) さらにそのままコードを移行できるケースであっても動作保証はできませんので、必ず動作確認のためのテスト作業は必要になります。 #SQL #ヒントとコツ #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 105
記事 Toshihiko Minamoto · 2022年3月2日 5m read 2021.2 SQL 機能スポットライト - 高度なテーブル統計 これは、IRIS でリレーショナルデータをクエリするアナリストとアプリケーションに、さらに優れた適応性とパフォーマンスによるエクスペリエンスを提供する IRIS SQL のイノベーションをトピックとした短い連載の 3 つ目の記事です。 2021.2 では連載の最後の記事になるかもしれませんが、この分野ではさらにいくつかの機能強化が行われています。 この記事では、このリリースで収集し始めたヒストグラムという追加のテーブル統計について、もう少し詳しく説明します。 #SQL #リレーショナルテーブル #InterSystems IRIS 0 0 0 72
記事 Toshihiko Minamoto · 2022年3月1日 5m read 2021.2 SQL 機能スポットライト - スマートサンプリング & テーブル統計の自動化 これは、適応性とパフォーマンスに優れた SQL エクスペリエンスを提供する 2021.2 SQL 強化機能に関する連載第 2 回目の記事です。 この記事では、前の記事で説明したランタイムプランの選択機能の主要な入力であるテーブル統計の収集におけるイノベーションに焦点を当てます。 #SQL #リレーショナルテーブル #InterSystems IRIS 0 0 1 147
記事 Mihoko Iijima · 2022年2月28日 7m read Embedded Python を使ってレシート(JPG)の中身を IRIS に登録してみました 開発者のみなさん、こんにちは。 今回は、スーパーやコンビニでもらうレシートを写真で撮り、OCR を使ってレシートの画像から文字列を切り出して IRIS に登録する流れを試してみました。 サンプルでは、Google の Vision API を利用してレシートの JPG 画像から購入物品をテキストで抽出しています。 #Embedded Python #Python #SQL #オブジェクトデータモデル #InterSystems IRIS #InterSystems IRIS for Health 1 0 1 1.2K
記事 Toshihiko Minamoto · 2022年2月24日 5m read 2021.2 SQL 機能スポットライト - ランタイムプランの選択 InterSystems IRIS Data Platform の 2021.2 リリースには、ミッションクリティカルなアプリケーションを高速で柔軟性に優れ、セキュアに開発するための刺激的な新機能が多数含まれています。 Embedded Python は間違いなく脚光を浴びています(正当な理由で!)が、SQL の分野でも、テーブルデータに関する詳細な統計情報を収集し、それを最適なクエリプランに提供する、より適応性の高いエンジンに向けて大きな一歩を踏み出しました。 この短い連載記事では、2021.2 で新しく追加された 3 つの要素について詳しく説明し、ランタイムプランの選択(RTPC)を手始めに、この目標に向かって進みます。 これらについて適切な順序で話していくのは困難です(この記事を書く上で、私がどれだけ順序を入れ替えたか想像できないほどです!) というのも、これらが相互に非常にうまく機能するためです。 そのため、ご自由に順序を変えてお読みください。 #SQL #リレーショナルテーブル #InterSystems IRIS 0 0 1 137
記事 Mihoko Iijima · 2022年2月4日 7m read Embedded Python 試してみました 開発者の皆さん、Python好きの皆さん、こんにちは! ドキュメントをみながら IRIS 2021.2 に追加された Embedded Python を試してみました! IRIS にログインしてるのに Pythonシェルに切り替えできて Python のコードが書けたり、Python で import iris するだけで SQL を実行できたりグローバルを操作できるので、おぉ!✨という感じです。 ぜひ、みなさんも体感してみてください! では早速。 まず、IRISにログインします。Windows ならターミナルを開きます。Windows 以外は以下実行します。 #Embedded Python #ObjectScript #Python #SQL #オブジェクトデータモデル #初心者 #InterSystems IRIS #InterSystems IRIS for Health 4 0 1 673
記事 Toshihiko Minamoto · 2021年12月7日 31m read MLとIntegratedMLでCovid-19のICU入室予測を実行する(パート1) キーワード: IRIS、IntegratedML、機械学習、Covid-19、Kaggle 目的 最近、Covid-19患者がICU(集中治療室)に入室するかどうかを予測するKaggleデータセットがあることに気づきました。 231列のバイタルサインや観測で構成される1925件の遭遇記録が含まれる表計算シートで、最後の「ICU」列では「Yes」を示す1と「No」を示す0が使用されています。 既知のデータに基づいて、患者がICUに入室するかどうかを予測することがタスクです。 このデータセットは、「従来型ML」タスクと呼ばれるものの良い例のようです。 データ量は適切で、品質も比較的適切なようです。 IntegratedMLデモキットに直接適用できる可能性が高いようなのですが、通常のMLパイプラインと潜在的なIntegratedMLアプローチに基づいて簡易テストを行うには、どのようなアプローチが最も単純なのでしょうか。 範囲 次のような通常のMLステップを簡単に実行します。 #Artificial Intelligence (AI) #IntegratedML #SQL #Machine Learning (ML) #InterSystems IRIS Open Exchange app 0 0 0 238
記事 Hiroshi Sato · 2021年11月11日 1m read ODBCのクエリタイムアウトを回避する方法 これは InterSystems FAQ サイトの記事です。 タイムアウトを無効にするためには、DSNの設定でクエリタイムアウト無効に設定します。 Windowsコントロールパネル > [管理ツール] > [データソース(ODBC)] > [システムDSN]の構成 で クエリタイムアウト無効 にチェックを入れますと、タイムアウトは無効になります。 アプリケーション側で変更する場合は、ODBC APIレベルで設定することが可能です。 ODBCのSQLSetStmtAttr関数をコールする際に、SQL_ATTR_QUERY_TIMEOUT属性を設定してから、データソースに接続してください。 #ODBC #SQL #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 2 0 0 9.6K
記事 Megumi Kakechi · 2021年10月28日 2m read TIMESTAMP型のフォーマットについて これは InterSystems FAQ サイトの記事です。 TIMESTAMP型はInterSystems製品では、%Library.TimeStampデータタイプ(=%TimeStamp)に対応していて、フォーマットは YYYY-MM-DD HH:MM:SS.nnnnnnnnn です。 小数点以下の精度を変更したい場合は、以下の方法で設定します。 1) システムワイドに設定する 管理ポータル:[システム管理] > [構成] > [SQLとオブジェクトの設定] > [一般SQL設定] GETDATE(), CURRENT_TIME, CURRENT_TIMESTAMP のデフォルト時刻精度 に 0~9 の範囲で桁数を指定できます。 #ObjectScript #SQL #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 1.2K
記事 Toshihiko Minamoto · 2021年9月30日 16m read Caché 2016.2のドキュメントデータモデルの紹介 はじめに Caché 2016.2のフィールドテストはかなり前から利用可能ですので、このバージョンで新しく追加されたドキュメントデータモデルという重要な機能に焦点を当てたいと思います。 このモデルは、オブジェクト、テーブル、および多次元配列など、データ処理をサポートするさまざまな方法として自然に追加されました。 プラットフォームがより柔軟になるため、さらに多くのユースケースに適したものになります。 #JSON #SQL #データモデル #ドキュメントデータモデル(NoSQL) 1 0 0 138
記事 Mihoko Iijima · 2021年9月24日 3m read 任意のSQL文の実行結果をプログラムでCSVに出力する方法 これは InterSystems FAQ サイトの記事です。 システムユーティリティクラスを利用したプログラムを作成することで出力できます。 【注意1】出力データの区切り文字がカンマではなくタブで出力されます点、ご注意ください。 【注意2】エクセルでタブ区切りのファイルを開くため、エクセルの開くメニューから出力したファイルを開いてください。 処理概要は以下の通りです。 1) %SYSTEM.SQL クラス(※)の Execute() メソッドを使用します。 第1引数:SQL文を指定します。 第2引数:内部日付が格納されている場合 yyyy-mm-dd で出力されるように表示モードを切り替えます。(1:odbcモード) 詳細は下記ドキュメントページおよびクラスリファレンスをご参照ください。 #SQL #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 890
記事 Mihoko Iijima · 2021年9月14日 1m read 管理ポータルから任意のSQL実行結果をCSVファイルに出力する方法 これは InterSystems FAQ サイトの記事です。 管理ポータルの SQL 画面(管理ポータル > システムエクスプローラ > SQL)で、任意の SQL を実行した後、結果の行数などが表示されいる行の右端にある「印刷」のリンクから、CSVファイル出力を選択できます。 「クエリ印刷」画面で「ファイルにエクスポート」をチェックすると「ファイル形式」の欄が表示されます。 形式に「CSV」を指定し、出力ファイル名を指定したあと「エクスポート」ボタンをクリックすると出力できます。 注意:古いバージョンでは正しくCSV出力が行えない場合もあります。新しいバージョンをぜひご利用ください。 #SQL #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 380
記事 Toshihiko Minamoto · 2021年9月14日 10m read リレーショナルデータベースにおけるEntity-Attribute-Valueモデル。 グローバル変数はテーブルでエミュレートする必要がありますか? パート2. より産業向けのグローバルストレージスキーム この連載の第1回では、リレーショナルデータベースにおけるEAV(Entity-Attribute-Value)モデルを取り上げ、テーブルにエンティティ、属性、および値を保存することのメリットとデメリットについて確認しました。 このアプローチには柔軟性という点でメリットがあるにもかかわらず、特にデータの論理構造と物理ストレージの基本的な不一致などによりさまざまな問題が引き起こされるという深刻なデメリットがあります。 こういった問題を解決するために、階層情報の保存向けに最適化されたグローバル変数を、EAVアプローチが通常処理するタスクに使用できるかどうかを確認することにしました。 パート1では、オンラインストア向けのカタログをテーブルを使って作成し、その後で1つのグローバル変数のみで作成しました。 それでは、複数のグローバル変数で同じ構造を実装してみることにしましょう。 #SQL #グローバル #データベース #パフォーマンス #ヒントとコツ #リレーショナルテーブル #非構造化データ #Caché #InterSystems IRIS #InterSystems IRIS for Health Open Exchange app 0 0 0 325
記事 Toshihiko Minamoto · 2021年9月9日 10m read RDBにおけるEntity-Attribute-Value(EAV)モデル。 グローバル変数はテーブルでエミュレートする必要がありますか? パート1. はじめに この連載の最初の記事では、リレーショナルデータベースのEAV(Entity–Attribute–Value)モデルを見て、それがどのように使用されて、何に役立つのかを確認しましょう。 その上で、EAVモデルの概念とグローバル変数と比較します。 原則として検索する必要のある、フィールド数、または階層的にネストされたフィールドの数が不明なオブジェクトがある場合があります。 #SQL #グローバル #データベース #パフォーマンス #ヒントとコツ #リレーショナルテーブル #非構造化データ #InterSystems IRIS Open Exchange app 0 0 0 1.8K
記事 Megumi Kakechi · 2021年9月1日 1m read SQL文ではなくユーザコードでクラスクエリを記述する方法 これは InterSystems FAQ サイトの記事です。 InterSystems製品のクラスクエリにはSQL文を利用する方法と、ユーザコードによる記述が選択できます。 スタジオメニューの [クラス] >[追加] > [クエリ] を選択すると、クエリウィザードが起動します。 画面に、「実装」を選択する項目があり、「このクエリはユーザコードで定義されている」を選択すると SQL文ではなく、ユーザコードによりクエリ定義が行えます。 #SQL #ヒントとコツ #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 377
記事 Mihoko Iijima · 2021年8月30日 2m read クエリをチューニングする方法 これは InterSystems FAQ サイトの記事です。 InterSystems 製品には、テーブルのコンテンツに関する統計を収集し、クエリの最適化に役立てる「テーブルチューニング機能」があります。 設定方法は、以下のドキュメントをご参照ください。 テーブルのチューニングについて【IRIS】 テーブルのチューニングについて ターミナルでは次のコマンドを実行します。 Do $system.SQL.TuneTable("<テーブル名>",0,1) また、以下の資料もご参照ください。 1) パフォーマンス調査の基礎知識として必要なグローバル構造の解説やSQLの動作の仕組みからクエリプランの見方の解説 インターシステムズ・シンポジア2011の資料 2) パフォーマンスチューニングの例(P13~) インターシステムズ・シンポジア2012の資料 3) ビットマップ・インデックスの圧縮やオプティマイザ・ヒントなど、Caché SQLのパフォーマンスを最大限に引き出すための情報について インターシステムズ・シンポジア2014の資料 4) パフォーマンスに困ったときにどこに着目し、どのツールで調べていくか、お客様から日々ご相談をいただくカスタマーサポートから、解決に向かうアプローチの「イロハ」をご紹介するビデオ 動画:Performance 101 5) 開発者コミュティのパフォーマンス関連情報(performanceタグ) performanceタグ #SQL #パフォーマンス #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 304
InterSystems公式 Yoichi Miyashita · 2021年7月28日 警告: SQL標準でない GROUP BY クエリで間違った結果が返る 対象バージョン InterSystems IRIS および IRIS for Health: 2019.1.0 以降 対象プラットフォーム すべて InterSystemsは、間違ったクエリ結果が返る問題を修正しました。この問題は上記の InterSystems 製品のバージョンで発生する可能性があります。 問題の詳細以下のすべての条件をみたした場合、クエリ結果が不正確な可能性があります。 #SQL #アラート #InterSystems IRIS #InterSystems IRIS for Health #InterSystems公式 0 0 0 233
記事 Mihoko Iijima · 2021年7月15日 5m read 複数の結果セットを 一度に返す方法 これは InterSystems FAQ サイトの記事です。 InterSystems 製品は複数の SQL 文を一度に受け付けませんので、SQL 文での複数結果セットのサポートはありませんが、ストアドプロシージャを作成して複数の結果セットを返すことができます。 以下、ストアドプロシージャの中では、 %SQL.Statement クラスを利用して SQL を実行し、結果セットを作成し、結果セットを呼び出し元に返すため、ストアドプロシージャ実行時に自動生成されるプロシージャ・コンテキスト(=%sqlcontext 変数に格納)の中に、結果セットを登録しています。 #SQL #ヒントとコツ #Caché #Ensemble #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 584
記事 Mihoko Iijima · 2021年7月5日 1m read Extent クエリの結果が ID 順にならないわけ これは InterSystems FAQ サイトの記事です。 %Persistent クラスに既定で生成される Extent クエリは、ID 順に結果セットを出力することを意図していませんので、これは、仕様通りの動きとなります。 並び順は、設定されているインデックスにより、変わることがあります。 #SQL #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems Natural Language Processing (NLP, iKnow) #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 101
記事 Toshihiko Minamoto · 2021年5月18日 12m read インデックス処理 第2部: インデックス処理 クラスにどのようなインデックスが必要であるのか、それをどのように定義するのかについて理解できたので、 次に、どのように処理するのかについて確認しましょう。 #SQL #インデックス付け #パフォーマンス #ベストプラクティス #Caché #InterSystems IRIS 0 0 0 251
記事 Toshihiko Minamoto · 2021年5月12日 12m read インデックスを理解する これは、SQLインデックスに関する2部構成の記事の前半です。 第1部 - インデックスを理解する #SQL #インデックス付け #パフォーマンス #ベストプラクティス #Caché #InterSystems IRIS 0 0 0 452
記事 Toshihiko Minamoto · 2021年4月19日 8m read 配列プロパティ要素のための SQL インデックス クラスの中で配列プロパティを使い、その要素 (キーと値の両方) によってスピーディに検索を実行できると非常に便利な場合があります (EAV モデルの場合は特に重宝します)。 それでは、簡単な例を見てみましょう。 #ObjectScript #SQL #インデックス付け #パフォーマンス #Caché 1 0 0 299
記事 Mihoko Iijima · 2021年4月15日 2m read アプリケーションでロックタイムアウトエラーが発生する理由 これは InterSystems FAQ サイトの記事です。 このエラーが発生する原因としては、アプリケーションの中で既に他のプロセスからロック対象リソースがロックされていて、何らかの理由でそのロックが解放されていないケースが考えられます。 他のプロセスがロックしている兆候がない場合は、ロックテーブルの空き領域が不足しているケースが想定されます。その場合は、メッセージログ(コンソールログ)に LOCK TABLE FULL のメッセージが出力されます。 トランザクション処理を行なっている場合には、ロック解放の延期が影響しているケースも考えられます。トランザクションとロック解放の延期については、以下のドキュメントをご参照下さい。 #SQL #システム管理 #データベース #データベースのトランザクション処理 #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 1 0 0 664
記事 Tomoko Furuzono · 2021年4月13日 1m read SQLクエリーの監査ログを取得する方法 これは、InterSystems FAQサイトの記事です。 SQLクエリーの文字列を監査ログに残すことができます。 詳細は、以下のドキュメントをご参照下さい。 システム監査イベントについて ※%SQLで始まるイベントをご覧ください。 InterSystems SQL の使用法 ※監査関連ページをご覧ください。 #SQL #Caché #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 170
記事 Toshihiko Minamoto · 2021年4月12日 24m read アトミックでない属性のインデックス作成 (1NF/2NF/3NF)露 からの引用 行と列で特定される位置には、それぞれアプリケーションドメインの値が 1 つだけあります (それ以外は何もない)。 その目的によって、同じ値がアトミックであったり、なかったりします。 例えば、「4286」という値は、 「クレジットカードの PIN コード」を意味するのであれば、アトミックとなります (破損している場合や並び替えられている場合は、使用できません)。 単に「連続する番号」であれば、非アトミックとなります (いくつかに分割されていたり、並び替えられていても、値は意味を成します)。 この記事では、文字列や日付、($LB 形式の) 単純なリスト、「list of <...>」、「array of <...>」といったフィールドの型を伴う SQL クエリのパフォーマンスを向上させる標準的な方法にして検証します。 #ObjectScript #SQL #インデックス付け #オブジェクトデータモデル #パフォーマンス #Caché 0 1 0 120
記事 Mihoko Iijima · 2021年4月9日 1m read 指定のテーブルの全フィールドをSQLで取得する方法 これは InterSystems FAQ サイトの記事です。 INFORMATION_SCHEMA スキーマを使用して取得できます。 INFORMATION_SCHEMA はシステム用スキーマのため、デフォルトでは管理ポータルのSQLメニューに表示されません。表示させる方法は以下の通りです。 管理ポータル→システムエクスプローラ→SQL メニューを開きます。 スキーマのプルダウン左にある「システム」をチェックします。 スキーマのプルダウンから INFORMATION_SCHEMA を選択します。 #SQL #ヒントとコツ #Caché #Ensemble #HealthShare #InterSystems IRIS #InterSystems IRIS for Health 0 0 0 487