发布新帖

Rechercher

摘要
· 五月 7, 2024

InterSystems 开发者社区摘要,四月 2024

您好,欢迎阅读 四月 2024 开发人员社区通讯。
统计信息
✓ 四月发布了 17 篇新帖子:
 10篇新文章
 5个新公告
 2个新问题
✓ 四月有 45 位新成员加入
✓ 所有时间发布了 2,098 篇帖子
✓ 所有时间有 1,797 位成员加入
最高职位
本月最佳作家
文章
公告
问题
四月, 2024Month at a GlanceInterSystems Developer Community
公告
· 五月 7, 2024

Profitez d’une formation personnelle au Global Summit !

Meet one-on-one with a personal trainer at Global Summit. Discuss interop, integrations, UCR with Sue O'Leary.

Vous participez au Global Summit 2024 ? Inscrivez-vous à une séance de formation personnelle avec l'un de nos formateurs techniques.

🌟 Cette semaine, les projecteurs sont tournés vers @Sue O'Leary, responsable de la formation des services d'apprentissage !

Inscrivez-vous à une session de 45 minutes pour parler avec Sue de l'interopérabilité/des intégrations ou du dossier de soins unifié. Rafraîchissez votre mémoire sur une formation en classe précédente, discutez d'un concept technique ou commencez à découvrir les technologies InterSystems.

📧 Envoyez un e-mail à GSTechExchange@intersystems.com ou visitez le bureau de conciergerie Tech Exchange au Summit.

Trouvez plus de détails sur les formateurs techniques et leurs spécialités.

文章
· 五月 7, 2024 阅读大约需 4 分钟

VS Code 関連リソース

VS Code に焦点を当てた 2 つの現地ウェビナー(ヘブライ語による「Intro」および「Beyond Basics」)に続き、フォローアップとして参加者向けに送信した関連リソースのリンクを用意しました。 コミュニティのために、ここでもそれを共有しています。
便利なリソースをぜひさらに追加してください。

讨论 (0)0
登录或注册以继续
文章
· 五月 6, 2024 阅读大约需 4 分钟

LinuxでJDBC接続を行う方法

前回、LinuxでODBC接続を行う方法 をご紹介しました。

今回は、LinuxでJDBC接続を行う方法 をご紹介します。作業は、root ユーザ で行います。

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

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


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

$ su -
Password:
Last login: Tue May  7 01:04:35 UTC 2024 on pts/0
# yum update


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

今回は、Adoptium OpenJDK の Version 8 - LTS を使用してテストします。
※ *.tar.gz は、/usr/java 以下にダウンロードします。

# cd /usr/java
# ls
OpenJDK8U-jdk_x64_linux_hotspot_8u412b08.tar.gz
# tar zxvf OpenJDK8U-jdk_x64_linux_hotspot_8u412b08.tar.gz
:
# ls
jdk8u412-b08  OpenJDK8U-jdk_x64_linux_hotspot_8u412b08.tar.gz


3. IRISクライアントをインストールします

Linuxのバージョンにあったインストーラを使用してください。

# cd IRIS-2024.1.0.262.0-lnxrh9x64

# ./irisinstall_client
Your system type is 'Red Hat Enterprise Linux 9 (x64)'.
Enter a destination directory for client components.
Directory: /intersystems/iris
Directory '/intersystems/iris' does not exist.
Do you want to create it <Yes>?
Installation completed successfully

※JDBC ドライバのみダウンロードしたい場合は、こちら から行えます(JDBC のリンクをクリック)。


4. 環境変数の設定を行います
 (JAVA_HOME、PATH、LD_LIBRARY_PATH、CLASSPATH)

 JAVA_HOME       --- JDKがインストールされているディレクトリ
 PATH            --- $JAVA_HOME/bin + <IRISクライアントインストールディレクトリ>/bin
 LD_LIBRARY_PATH --- $JAVA_HOME/lib 
 CLASSPATH       --- <IRISクライアントインストールディレクトリ>/dev/java/lib/1.8/intersystems-jdbc-*.*.*.jar

 

# export JAVA_HOME=/usr/java/jdk8u412-b08
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JAVA_HOME/lib
# export PATH=$PATH:$JAVA_HOME/bin

# export PATH=$PATH:/intersystems/iris/bin
# ls /intersystems/iris/dev/java/lib/1.8
intersystems-binding-3.2.2.jar         intersystems-messaging-1.3.0.jar
intersystems-cloudclient-1.2.2.jar     intersystems-persister-1.0.0.jar
intersystems-cloud-manager-1.6.15.jar  intersystems-rgateway-3.2.0.jar
intersystems-enslib-jms-3.2.0.jar      intersystems-uima-1.0.0.jar
intersystems-jdbc-3.8.4.jar            intersystems-utils-4.1.5.jar
intersystems-loader-1.2.3.jar          intersystems-xep-3.2.1.jar
# export CLASSPATH=$CLASSPATH:/intersystems/iris/dev/java/lib/1.8/intersystems-jdbc-3.8.4.jar

※すべてのユーザで使用できるよう、環境変数を永続化させる場合は、/etc/profile に追加します。

確認します。

$ which java
/usr/java/jdk8u412-b08/bin/java
$ which javac
/usr/java/jdk8u412-b08/bin/javac
$ java -version
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_412-b08)
OpenJDK 64-Bit Server VM (Temurin)(build 25.412-b08, mixed mode)


5. IRISへのJDBC接続確認をします

こちらのサンプルでは、DriverManager クラスを使用した接続テスト を行います。
※現在のネームスペース内の全てのテーブル (およびビュー) に関する INFORMATION.SCHEMA.TABLES の情報をSelectするサンプルです。

/// JDBCSample.java
import java.sql.*;

public class JDBCSample {
    public static void main(String[] str) throws Exception {
        String url = "jdbc:IRIS://***.***.***.***:1972/USER/";

        java.util.Properties prop = new java.util.Properties();
        prop.put("user", "_System");
        prop.put("password", "SYS");
        // Replace _SYSTEM and SYS with a username and password on your system
        Connection connection = DriverManager.getConnection(url,prop);

        Statement statement = connection.createStatement();
        String query = "SELECT top 5 TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE FROM INFORMATION_SCHEMA.TABLES";
        ResultSet resultSet = statement.executeQuery(query);
        System.out.println("Printing out contents of SELECT query: ");

        while (resultSet.next()) {
            System.out.println(resultSet.getString(1) + ", " + resultSet.getString(2) + ", " + resultSet.getString(3));
        }

        resultSet.close();
        statement.close();
        connection.close();
    } 
}

コンパイル&実行します。

# javac JDBCSample.java
# java JDBCSample
Printing out contents of SELECT query:
%CSP_Util, CSPLogEvent, SYSTEM TABLE
%CSP_Util, Performance, SYSTEM TABLE
%Calendar, Hijri, SYSTEM TABLE
%Compiler_Informix, ConversionRule, SYSTEM TABLE
%Compiler_Informix, ImportedObject, SYSTEM TABLE


IRISDataSource を使用する場合は以下のようになります。

import com.intersystems.jdbc.IRISDataSource;
import java.sql.*;

public class JDBCSample {
    public static void main(String[] str) throws Exception {
        IRISDataSource ds = new IRISDataSource();
        ds.setURL("jdbc:IRIS://***.***.***.***:1972/User");
        ds.setUser("_system");
        ds.setPassword("SYS");
        Connection connection = ds.getConnection();
        // 以下、DriverManager のサンプルと同じ


詳細は以下のドキュメントをご覧ください。
JDBC ドライバの使用法
InterSystems SQL の基礎 : JDBC とインターシステムズのデータベース

讨论 (0)0
登录或注册以继续
文章
· 五月 6, 2024 阅读大约需 8 分钟

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

はじめに

IRIS BIチュートリアル試してみたシリーズの8回目です。このシリーズもだいぶ長くなってきました。
今回も、前回に引き続きチュートリアルの「キューブ定義の拡張」ページの内容です。
最後に残った2つのトピックについて進めていきます。では、はじめていきましょう。

置換の定義

タイトルには「置換」とありますが、ディメンジョンのレベルを集約した新しいレベルを作成する方法、と理解していただくのがよいかもしれません。
2回目の記事でちょっとだけ触れた Age Group と Age Bucket レベルを作成していきます。
まず Age Group レベルを作成します。こちらは以下のような3つのグルーピングになります。

  • 0 to 29:30歳未満の患者
  • 30 to 59:30歳から59歳までの患者
  • 60+:60歳以上の患者

アーキテクト画面を開き、Tutorial キューブを開きます。
新しいレベルを作成しますので、AgeD ディメンジョンの Age レベルをクリックし、その後に [要素を追加] リンクをクリックします。
 
要素名に Age Group、要素選択に レベル を指定します。
 
Age Groupレベルが追加されました。
 
詳細ペインで Age Group レベルの設定を変更します。[プロパティ] に Age と入力し、[範囲表現] の虫眼鏡アイコンをクリックします。
 
すると、範囲表現を設定するダイアログが現れます。これを使用して範囲設定を行っていきます。

 
まず、画面中ほどの [To] の欄に 29 と入力、その横にある [置換する値] に 0 to 29 と入力します。
その後に、入力したフィールドの間にある丸括弧 [ ) ] のボタンを1度クリックします。そうしますと丸括弧が角括弧
 [ ] ] に替わります。
 
これらの意味ですが、丸括弧は From や To に入力された値を含まない、となり、角括弧は入力された値を含みます。
不等号の <・> と ≦・≧ の違いと考えていただければよいかと思います。
続いて 30 to 59 を定義します。[置換を追加] ボタンを押して、設定行を追加します。
[From] に 30、[To] に 59 と入力します。どちらも入力値を含ませたいので角括弧で囲むように変更します。

 
60歳以上のグループを追加します。[置換を追加] で1行追加し、[From] に 60、入力値を含むので角括弧に切り替えます。
最終的には以下のような設定になります。最後に [OK] で確定しましょう。

 
詳細ペインの [範囲表現] 欄に数式が設定されました。
また、[ファクトテーブルのフィールド名] に DxAgeGroup と入力しておきます。これは、後ほどテーブルを確認した際に項目名を分かりやすくするためです。
 
ここまでできたら、一旦キューブを保存します。


続いて Age Bucket レベルを作成していきます。
Age Group と同じように範囲表現で作成することもできますが、別の方法、クラスメソッドを使用する方法で実装します。
既にクラスメソッドが BI.Model.PatientsCube クラスにありますので、そちらを確認しましょう。スタジオまたはVSCode から BI.Model.PatientsCube クラスを開き、GetAgeBucket クラスメソッドを探します。
 
受け取った age の値に応じて Age Bucket の値を返すようになってますね。
では、Age Bucket レベルを作成していきます。先ほどと同様に、Age レベルをクリックして選択した後に [要素を追加] リンクをクリックします。
[要素名] には Age Bucket、要素選択では レベル を指定します。

 
Age Bucket レベルが追加されました。レベルの順番も Age Group → Age Bucket → Age となっています。
 
詳細ペインで Age Bucket の設定を変更します。[ソース値] の表現 に以下の数式を入力します。

##class(BI.Model.PatientsCube).GetAgeBucket(%source.Age)

また、[ファクトテーブルのフィールド名] に DxAgeBucket と入力します。
 
ここまでできたら、キューブを保存します。その後にコンパイル、ビルドも行ってください。

では、作成したレベルをアナライザで確認します。
アナライザ画面を開きます。モデル・コンテンツ領域の AgeD ディメンジョンを展開すると、Age Group レベルと Age Bucket レベルが追加されています。

 
まず、Age Group を [行] にドラッグ&ドロップします。問題なく動作してそうです。

 
※注意:サンプルデータはランダムに作成されるため、こちらの画面表示とみなさまの実行結果は一致しないことがあります。
今度は Age Bucket を [行] に設定します。こちらも問題なさそうです。
 
では、ファクトテーブルやレベルテーブルがどのようになっているのかを確認します。システムエクスプローラ → SQL でSQL画面を開き、Tutorial_Cube.Fact テーブルを開きます。
 
AgeD ディメンジョンに関連する3つの項目(DxAge、DxAgeBucket、DxAgeGroup)が存在することが分かります。
続いて Tutorial_Cube.DxAgeGroup テーブルを開きます。
 
範囲表現を用いて作成した3つのグループに沿ったレコードが作成され、先ほどのファクトテーブルと紐づいています。
もう1つ、Tutorial_Cube.DxAgeBucket テーブルを開きます。
 
こちらも10歳刻みでレコードが作成されています。また DxAgeGroup との紐づけも保持されています。階層の上下関係があるためですかね。

他のクラスへのアクセス

これまではベースクラスと、それに関連したクラスを基にキューブを作成してきましたが、SQL を介してのみアクセス可能なクラスのプロパティなど、その他のプロパティを使用する例を試していきます。
まず、今まで使ってきたベースクラス、BI_Study.Patient テーブルにある PatientID プロパティを確認します。以下のSQLを実行します。

SELECT PatientID FROM BI_Study.Patient

私の環境では以下のような結果が返ってきました。各患者には "SUBJ" から始まる11桁のIDが付与されているようです。
 
では、この PatientID を用いて別のテーブルをのぞいてみます。 以下のSQLを実行し、PatientDetails テーブルの中を確認します。

SELECT * FROM BI_Study.PatientDetails WHERE PatientID='SUBJ_100301'

PatientID の他に、FavoriteColor、Profession という項目があります。
 
このFavoriteColor の値を新たなディメンジョンとして追加していきます。
ただし、アーキテクト画面では PatientDetails の情報は出てきませんので、今までとは違ったアプローチが必要になります。
キューブのクラスに対してメソッドを追加し、スタジオまたはVSCodeから Tutorial.Cube クラスを開き、以下のクラスメソッドを追加します。

ClassMethod GetFavoriteColor(patientID As %String) As %String
{
 &sql(SELECT FavoriteColor INTO :ReturnValue FROM BI_Study.PatientDetails WHERE PatientID=:patientID)
 If (SQLCODE'=0) {
  Set ReturnValue=""
  }
 Quit ReturnValue
}

 
PatientID を引数として受け取り、それをWHERE条件としたSQLを実行して FavoriteColor の値を返すようになっています。
SQLの実行結果が0件だった場合には、戻り値に空の文字列をセットするようにしています。上記画面ショットの121~123行目のところです。
クラスを変更したら保存、コンパイルします。
コンパイルできたら、メソッドの動作確認をします。ターミナルを開き、以下のコマンドを実行します。

write ##class(Tutorial.Cube).GetFavoriteColor("SUBJ_100301")

戻り値として Purple が返ってきました。大丈夫なようです。
 

では、これをキューブに組み入れていきます。アーキテクト画面を開き Tutorial キューブを開いて [要素を追加] をクリックします。
[要素名] に ColorD と入力し、要素選択は データ・ディメンジョン を選択します。

 
ColorD ディメンジョンが作成されました。あわせて作成されたレベルに対して、以下のように変更します。

  • 名前:Favorite Color
  • ソース値:[表現] を選択し、式に ##class(Tutorial.Cube).GetFavoriteColor(%source.PatientID) と入力
  • ファクトテーブルのフィールド名:DxFavColor

 
変更できたら、キューブを保存、コンパイル、ビルドまで行います。キューブのクラスを変更したダイアログが表示されると思いますが、[OK] で進めます。
ビルドが完了したら、アナライザで確認しましょう。前の画面が開いている場合は再読み込みを行ってください。
ColorD ディメンジョンと Favorite Color レベルが追加されているかと思います。
 
Favorite Color レベルを [行] に追加してピボットテーブルを作成します。ちゃんと動作しますね。

 
再び、SQL画面からファクトテーブルとレベルテーブルを確認してみます。Tutorial_Cube.Fact テーブルを開きます。
DxFavColor という項目が追加されているのが分かります。
 
続いてレベルテーブルの確認です。Tutorial_Cube.DxFavColor テーブルを開きます。

 
ファクトテーブルと紐づく形でディメンジョンテーブルが作られているのが分かります。

おわりに

今回はキューブ構築で必要となる2つのトピックについて学びました。
特に2つめのトピックは利用のシーンが多そうですので、知っておいた方がよいのではないかと感じました。
3回に渡って実施してきた「キューブ定義の拡張」も、ようやく終了です。次回は新しいトピック「サブジェクト領域の作成」です。お楽しみに!

讨论 (0)1
登录或注册以继续