記事
· 2023年10月3日 4m read
5つの便利なSQL関数のご紹介

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

この記事では、Muhammad Waseem さんが(US開発者コミュニティに)投稿された「SQLのスキルを次のレベルに引き上げることのできる5つの便利なSQL関数」の記事についてご紹介します。

✅ SQLに関わらず、IRIS/Caché全般で日頃利用されている便利な機能、使い方、関数などなどありましたら、ぜひコミュニティで共有いただければと思います。

✅ 現在「技術文書ライティングコンテスト」開催中です! 🎁 参加賞/特賞 🏆ありますので、ぜひチャレンジしてみてください!

以下、Muhammad さんの記事です。


この記事では、5つの便利なSQL関数の説明を実行例と共にご紹介します👇

  • COALESCE
  • RANK
  • DENSE_RANK
  • ROW_NUMBER
  • Function to Get Running Totals

まずは、COALESCE関数から始めてみましょう

0 0
0 262

前回の記事では、pButtonsを使って履歴パフォーマンスメトリックを収集する方法を説明しました。 すべてのデータプラットフォームインスタンス(Ensemble、Cachéなど)にはpButtonsがインストールされていることがわかっているため、私はpButtonsを使用する傾向にありますが、 Cachéパフォーマンスメトリックをリアルタイムで収集、処理、表示する方法はほかにもあり、単純な監視や、それよりもさらに重要な、より高度な運用分析とキャパシティプランニングに使用することができます。 データ収集の最も一般的な方法の1つは、SNMP(簡易ネットワーク管理プロトコル)を使用することです。

0 0
0 261

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

SELinuxの機能が有効になっているとファイルアクセス時にセキュリティコンテキストのチェックで permission エラーになります。

CSP のページについても同様に permission エラーになっているため、Apache にて 403 Forbidden エラーになります。

以下の設定でSELinuxの機能を無効にすることで回避できます。

設定ファイル /etc/selinux/config の SELINUX=disableに設定し、OS の再起動を行います。

例:

0 0
0 261

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

永続クラス(=テーブル)定義に提供される %BuildIndices() メソッドの引数に、インデックスを再構築したい ID の開始値と終了値を指定することにより、その範囲内のインデックスのみが再構築できます。

例えば、Sample.Person クラスにある NameIDX インデックスと ZipCode インデックスを ID=10~20 のみ再構築する場合は、以下のように実行します(ID の範囲は、第5引数、第6引数に指定してます)。

0 0
0 260

Cachéでは、今後の新しいOSのサポート、例えばWindows 11やWindows 2022のサポートは行われないことになりました。

いよいよ新しいサーバハードウェアを導入するとCachéが使えなくなる可能性が高くなってきました。

皆さんIRISへの移行をお早目にご検討ください。

IRISへの移行の際に障害となるものの1つがVisM.OCXを利用したアプリケーションの移行です。

IRISでもこの機能は制限付きで利用可能です。

しかし、そのためには少々面倒な手続きが必要です。

(この手続きについてはインターシステムズにお問い合わせください)

しかもこの手続きも暫定処置で将来なくなる可能性もゼロではありません。

ところでなんでそんな面倒くさい手続きが必要なのと感じた人もいると思います。

その理由は、

VisM.OCXがマイクロソフトの非常に古い技術を利用していて、開発元のマイクロソフトもそれを全くサポートしていませんし、セキュリティ脆弱性への対応等も全く行われていません。

そんな技術なんで、インターシステムズも技術サポートするのが困難です。

1 0
0 259

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

Apache環境でRESTを動かすための設定方法は以下のとおりです。


1. Webゲートウェイをインストールします

添付(Webゲートウェイインストール手順.pdf)の手順に従い、Webゲートウェイをインストールします。
Webゲートウェイをインストールする前に、Apacheを停止してください。

0 0
0 258
記事
· 2021年9月23日 1m read
レコードマップで何ができるか?

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

レコード・マップは、区切り文字付きのレコードや固定幅のレコードを含むファイルをInteroperability機能で使用するメッセージクラスへマッピングしたり、Interoperability機能のメッセージクラスからテキストファイルへマッピングする作業を効率的に行うための機能です。

レコードマップのマッピング定義は管理ポータルで作成でき、CSVファイルを読み込ませながら定義するCSVレコードウィザードも提供しています。

プロダクションでレコードマップを利用する場合は、レコードマップ用ビジネス・サービス、またはビジネス・オペレーションを追加し、作成したレコードマップ定義クラスを指定すれば完成です。

使用例は、以下から取得できます。

レコードマップサンプル

0 0
0 258

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

$ZSTRIPコマンドは、指定された文字列から文字のタイプと文字を削除します。
このコマンドを使用することで文字列から数値部分のみを抽出することが可能です。

$ZSTRIP(string,action,remchar,keepchar)

第1引数(string) :対象文字列
第2引数(action) :string から削除する対象。アクションコードとマスクコードで構成。
第3引数(remchar) :削除する特定の文字を指定。第2引数のマスクコードに含まれない文字も指定可能。【オプション】
第4引数(keepchar):削除しない特定の文字を指定。【オプション】

以下はその例です。

0 0
0 256

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

復旧を優先される場合を除き 【トラブル発生状態のまま】弊社サポートセンターまでご連絡ください。

その際、専用ツールを利用して情報収集いただくことで(所要時間約 5分)、サポートセンターによる状況確認がスムーズに行えます。

ツール使用方法については、PDF または以下ビデオでご紹介しています。

0 0
0 255

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

システム提供の %SYS.GlobalQueryクラスSize クエリーを使用することで取得できます。

使用例は、以下のサンプルコードをご参照ください。
※カラムやパラメータの指定はクラスリファレンスをご確認ください。

0 0
0 252

タスク成功時・失敗時、それぞれ通知メールを送信することができます。

そのためには事前にターミナルからTASKMGRルーチン を実行して、メールサーバを登録する必要があります。

> zn "%SYS"

> do ^TASKMGR

1) タスク作成
2) タスク編集
3) タスク一覧
4) タスク削除
5) タスク一時停止
6) タスク再開
7) タスク実行
8) タスクリポート
9) タスクマネージャオプション
10) 終了

そして、メニューから9) タスクマネージャーオプションを選んで

0 0
0 251
記事
· 2021年11月28日 5m read
データサイズを調べる方法

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

InterSystems製品のデータ(テーブルの行データ、オブジェクトのインスタンスデータ)は、グローバル変数に格納されています。
各グローバルのデータサイズは、管理ポータル>システム>構成>ローカルデータベース>グローバルのページから参照したいグローバルのプロパティをクリックし、表示されるグローバル属性ページ上のサイズ計算ボタンをクリックすることで個別のグローバルのサイズを取得することができます。
ネームスペース上のグローバルのデータサイズをまとめて表示するには、ターミナル上で^%GSIZEユーティリティを起動することで取得することができます。
実行方法は以下の通りです。

0 0
0 251
記事
· 2020年12月17日 1m read
選択性の数値について

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

選択性(または Selectivity)の数値とは、カラムに対するユニークデータの割合を示す数値です。

例) Person テーブルの個別値である PID カラム、住所のうち都道府県名が入る Pref カラム
 Pref カラムの選択性 = 約 2%
 PID カラム(ユニーク属性のカラム)の選択性 = 1

InterSystems製品のクエリオプティマイザは、クエリ実行経路(プラン)とインデックスの選択を決定するため、エクステントサイズ(テーブル内のレコード数)と選択性の数値を使用します。

詳細は下記ドキュメントページをご参照ください。

テーブルの最適化【IRIS】

0 0
0 249

Web スクレイピングとは:

簡単に言えば、Web スクレイピングWeb ハーベスティング、または Web データ抽出とは、Web サイトから大量のデータ(非構造化)を収集する自動プロセスです。 ユーザーは特定のサイトのすべてのデータまたは要件に従う特定のデータを抽出できます。 収集されたデータは、さらに分析するために、構造化された形式で保存することができます。

Web スクレイピングとは? — James Le

Web スクレイピングの手順:

1 0
0 248
記事
· 2021年8月30日 2m read
クエリをチューニングする方法

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

InterSystems 製品には、テーブルのコンテンツに関する統計を収集し、クエリの最適化に役立てる「テーブルチューニング機能」があります。

設定方法は、以下のドキュメントをご参照ください。

ターミナルでは次のコマンドを実行します。

Do $system.SQL.TuneTable("<テーブル名>",0,1)

また、以下の資料もご参照ください。

1) パフォーマンス調査の基礎知識として必要なグローバル構造の解説やSQLの動作の仕組みからクエリプランの見方の解説

インターシステムズ・シンポジア2011の資料

2) パフォーマンスチューニングの例(P13~)

インターシステムズ・シンポジア2012の資料

3) ビットマップ・インデックスの圧縮やオプティマイザ・ヒントなど、Caché SQLのパフォーマンスを最大限に引き出すための情報について

インターシステムズ・シンポジア2014の資料

4) パフォーマンスに困ったときにどこに着目し、どのツールで調べていくか、お客様から日々ご相談をいただくカスタマーサポートから、解決に向かうアプローチの「イロハ」をご紹介するビデオ

動画:Performance 101

5) 開発者コミュティのパフォーマンス関連情報(performanceタグ)

performanceタグ

1 0
0 247

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

Excelのマクロ機能を使ってVBAからREST/JSON経由でアクセスすることが可能です。

REST/JSONを使用したInterSystems製品との連携の簡単なサンプルを以下のGitHubサイトから入手できます。

VBAマクロサンプル

マクロサンプルは Solution/activityreport.xlsm をご覧ください。

サンプルは、コンテナを利用しています。READMEに記載の方法でコンテナを開始し、Solution/activityreport.xlsm の「データ取得」ボタンをクリックすると以下の結果が得られます。

1 0
0 245
記事
· 2021年10月20日 1m read
IRISに含まれるアダプタについて

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


InterSystems IRIS Data Platformにはシステム接続に良く使われる一般的な電子メール、ファイル、FTP、HTTP、ウェブサービス、REST、SQL、TCPアダプタなどが標準で含まれています。

特定アプリケーション向けに IBM WebSphere MQ アダプタや SAP Java Connector アダプタも提供します。

そしてJavaアプリケーションを呼び出すためや .Net アプリケーションを呼び出すための PEX(Production EXtension)というフレームワーク もあります。

そのほか、IRIS for HealthにはHL7 FHIR、HL7 V2、HL7 V3、CDA、DICOM、X12、ASTM,EDIFACT などのアダプタもあります。

さらに標準で用意していないカスタムアプリケーション用にはカスタムアダプタを作成することもできます。

0 0
0 244

クライアントアプリケーション編

IRISだけでoAuth2/OpenID ConnectのSSO/SLO環境を実現する/サーバ編
のクライアントアプリケーション編です。サーバ編の構成が既に稼働していることを前提にしています。

既にサーバ編でgit clone実行された方(ありがとうございます)、若干の変更がありますのでgit pullと./build.shの実行をお願いします。

oAuth2クライアントアプリケーション(OICD用語ではRP。以下RPと称します)の形態として、5種類用意しています。


形態 ライブラリ 登録クライアントタイプ SSO SLO
Webアプリケーション IRIS/CSP Confidential 実装あり 実装あり
SPA Angular Public 実装あり 実装なし
SPA+BFF Angular,IRIS/REST Confidential 実装あり 実装あり
Python oauthlib Confidential N/A N/A
curl N/A Confidential N/A N/A

PythonやcurlがConfidential(client_secretの秘匿性を十分に保てる)か、というと微妙ですが、あくまで利用者は開発者のみ、という位置づけです。

0 0
0 243

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

Config.Configurationクラス、SYS.Databaseクラスのメソッドを使用して、ネームスペース・データベースの作成及び登録をターミナルから実行することができます。

以下はデータベースファル/CacheDB/AAA/cache.datを作成し、構成ファイル(cache.cpf)にデータベース AAA、及び、ネームスペースAAAの登録を行う一連の実行例です。
*実行は、%SYSネームスペースで行って下さい。*

0 0
0 243

Question:

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


Answer:

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

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

0 0
0 242
記事
· 2021年6月1日 1m read
OSのコマンドを実行する方法

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

OSのコマンド実行する場合、$ZF(-100) を使用します。

do $ZF(-100,"",program,args) // Windows コマンドを【同期】実行します。
do $ZF(-100,"/ASYNC",program,args) // Windows コマンドを【非同期】実行します。


mkdir, copy などのOSシェルコマンドを実行する場合は、/SHELL もあわせて指定します。

do $zf(-100,"/shell /async","mkdir","c:\temp\x")

詳細は以下のドキュメントを参照してください。

0 0
0 242

IRIS で REST サーバを作成する際に準備する REST ディスパッチクラスを API ファーストの手順で作成する方法を解説します。
(OpenAPI 2.0に基づいて作成したアプリケーション定義を使用してディスパッチクラスを作成する手順を解説します)

https://www.youtube.com/embed/SwquEq1fjTk
[これは埋め込みリンクですが、あなたはサイト上の埋め込みコンテンツへのアクセスに必要な Cookie を拒否しているため、それを直接表示することはできません。埋め込みコンテンツを表示するには、Cookie 設定ですべての Cookie を受け入れる必要があります。]

このビデオには、以下の関連ビデオがあります。

0 0
0 241

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

InterSystems製品のシステムモニタが色々なリソースの使用状況を監視しています。

そしてその使用状況に応じてアラートやワーニング情報をコンソールログ(message.log/cconsole.log)に出力します。

アラート情報が表示するCPUのリソースについては、以下のものが定義されています。

0 0
0 240

はじめに

ObjectScriptで複雑な問題を解決している場合、おそらく%Status値を使用したコードがたくさんあることでしょう。 オブジェクトの観点(%Save、%OpenIdなど)から永続クラスを操作したことがある場合は、ほぼ確実にその状況に遭遇したことがあるでしょう。 %StatusはInterSystemsのプラットフォームでローカライズ可能なエラーメッセージのラッパーを提供します。 OKステータス($$$OK)は1に等しいだけであるのに対し、不良ステータス($$$ERROR(errorcode,arguments...))は0、スペース、エラーに関する構造化情報を含む$ListBuildリストとして表されます。 $System.Status(クラスリファレンスを参照)は、%Status値を操作するための便利なAPIをいくつか提供しています。クラスリファレンスを役立てられるので、ここでは繰り返しません。 このトピックに関する有用な記事/質問もほかにいくつかあります(最後のリンクをご覧ください)。 この記事では、コーディングのベストプラクティスではなく、いくつかのデバッグのコツや手法に焦点を当てています(ベストプラクティスについては、最後のリンクをご覧ください)。

0 0
1 238

クラウド環境で Windows 英語版に日本語言語パックをインストールして日本語化している場合、設定に注意が必要です。

以下のようにランチャー(キューブ)メニューの一部が文字化けするのは、言語設定が足りていないのが原因と考えられます。


以下の設定をご確認ください。

Windows設定 > 時刻と言語 > 言語:管理用の言語設定
「Unicode 対応でないプログラムの現在の言語」が、日本語以外の言語 (例:英語(米国)) になっていないでしょうか?

1 0
0 238

FHIR Terminology Serviceの仕様には、 CodeSystemValueSet、およびConceptMapリソースでの一連の演算子が記述されています。 これらの演算子の内、以下の4つの演算子が最も広く採用されているようです。

CodeSystem ValueSet
$lookup
$validate-code
$expand
$validate-code

IRIS for Health 2020.1で導入された新しいFHIRフレームワークを学ぶには、仕様の部分的な実装を開発するのが最も効果的と言えます。 実装には上記の4つの演算が含まれており、CodeSystemValueSetリソースでreadsearch操作がサポートされています。

実装には単純なObjectScript永続クラスがソース用語テーブルとして使用されていることに注意することが重要です。

0 0
0 237

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

クラスに定義されたプロパティの情報については、以下システムクラスを利用して情報を取得できます。

%Dictionary.ClassDefinetion

0 0
0 235

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

クラス定義の Property 定義文の名称を直接変更した場合、内部的には 元のプロパティを削除し、新しいプロパティを追加 したことになります。

このため、すでにデータを格納している永続クラスのプロパティ名をエディタで直接変更した場合、元のプロパティで設定されていた値にはアクセスができなくなります(新しいデータの格納位置が割り当てられます)。

また、変更したプロパティが必須(非ヌル)に指定されていた場合、データが存在しないために参照時にエラーが発生します。

以下の図は、左画面が変更前の状態、右画面がプロパティ名を変更してコンパイルを行った状態です。

0 0
0 234