スキップしてメイン コンテンツに移動

投稿

6月, 2021の投稿を表示しています

余裕ですかね。

  いまの自分はやることが多いが、意外と慌てず一歩一歩現場と歩んでいき、地道にデータ入力から可視化までの利便性、完全性と正確性を追求する余裕が出ております。SpotfireというBIツールにハマり、人に使い方を教えながらもまたその恩恵を受けているといういい循環も大きいですね。大体自分のようなポストにいる人たちはあまりプログラムを書く余裕もないだが、自分は幸せのほうと思います。

余裕ですかね。

  いまの自分はやることが多いが、意外と慌てず一歩一歩現場と歩んでいき、地道にデータ入力から可視化までの利便性、完全性と正確性を追求する余裕が出ております。SpotfireというBIツールにハマり、人に使い方を教えながらもまたその恩恵を受けているといういい循環も大きいですね。大体自分のようなポストにいる人たちはあまりプログラムを書く余裕もないだが、自分は幸せのほうと思います。

BIルールで形態素分析:Spotfire + NMecab + Iron Python + DataTable

import clr     clr.AddReferenceToFileAndPath(r"D:/Work/NMecab/bin/LibNMeCab.dll") import System from System import * import NMeCab from NMeCab import * import Spotfire.Dxp.Application from Spotfire.Dxp.Data import * from Spotfire.Dxp.Application.Visuals import VisualContent from System.Collections.Generic import HashSet from System.IO import FileStream, FileMode, File, MemoryStream, SeekOrigin, StreamWriter import System.String from Spotfire.Dxp.Data.Import import TextDataReaderSettings from Spotfire.Dxp.Data.Import import TextFileDataSource def LoadCSV(dataTableName, stream): settings = TextDataReaderSettings() settings.Separator = "," settings.AddColumnNameRow(0) settings.ClearDataTypes(True) settings.SetDataType(0, DataType.String) settings.SetDataType(1, DataType.String) settings.SetDataType(2, DataType.Real) settings.SetDataType(3, DataType.Real) stream.Seek(0, SeekOrigin.Begin) fs = TextFileDataSource(stream, settings) if Document.Data.Ta

BIルールで形態素分析:Spotfire + NMecab + Iron Python + DataTable

import clr     clr.AddReferenceToFileAndPath(r"D:/Work/NMecab/bin/LibNMeCab.dll") import System from System import * import NMeCab from NMeCab import * import Spotfire.Dxp.Application from Spotfire.Dxp.Data import * from Spotfire.Dxp.Application.Visuals import VisualContent from System.Collections.Generic import HashSet from System.IO import FileStream, FileMode, File, MemoryStream, SeekOrigin, StreamWriter import System.String from Spotfire.Dxp.Data.Import import TextDataReaderSettings from Spotfire.Dxp.Data.Import import TextFileDataSource def LoadCSV(dataTableName, stream): settings = TextDataReaderSettings() settings.Separator = "," settings.AddColumnNameRow(0) settings.ClearDataTypes(True) settings.SetDataType(0, DataType.String) settings.SetDataType(1, DataType.String) settings.SetDataType(2, DataType.Real) settings.SetDataType(3, DataType.Real) stream.Seek(0, SeekOrigin.Begin) fs = TextFileDataSource(stream, settings) if Document.Data.Ta

Spotfire からMongoDBのデータを分析する(DPC公開データをサンプルに)

 MongoDBはスキーマを定義しなくても下記のように簡単にコマンド一行でCSVをインポートできます。 C:\Users\user\Desktop>mongoimport /db:dpc /collection:facilities /type:csv /file:facilities.csv /headerline 2020-09-01T14:49:28.410+0900    connected to: localhost 2020-09-01T14:49:29.428+0900    [#####...................] dpc.facilities       144KB/659KB (21.9%) 2020-09-01T14:49:30.485+0900    [#######################.] dpc.facilities       659KB/659KB (100.0%) 2020-09-01T14:49:30.486+0900    imported 4764 documents MongoDBシェルで二つのコレクションをJOINさせる のもいいのですが、データのJOINに強いBIツール、Spotfireを使えば、複雑なシェルやSqlを書く必要もなくなります。 MongoDBは普通のSqlを使うデータベースのようにBIツールから接続するには、 有償のODBCドライバー もありますが、こちらは 無償のBIコネクター を使います。 ただ、このコネクターは、 MySQL   ODBC   Unicode   Driver に依存しているのと、Mysqlのドライバーのインストールは、 Visual Studio 2015、2017、および 2019 用 Microsoft Visual C++ 再頒布可能パッケージ が必要なので、両方も用意しましょう。 MongoDBがインストールされている前提で話を進みたいので、インストールは下記のページを参考してください。個人的にTB単位の外付けSSDをMongoDBを持ち歩くので、ポータルバージョンを使っています。 Node.js & MongoDB portable 持ち歩くポータブルバージョン for windows まず、BIコネクターに下記のコマンドで sche

Spotfire からMongoDBのデータを分析する(DPC公開データをサンプルに)

 MongoDBはスキーマを定義しなくても下記のように簡単にコマンド一行でCSVをインポートできます。 C:\Users\user\Desktop>mongoimport /db:dpc /collection:facilities /type:csv /file:facilities.csv /headerline 2020-09-01T14:49:28.410+0900    connected to: localhost 2020-09-01T14:49:29.428+0900    [#####...................] dpc.facilities       144KB/659KB (21.9%) 2020-09-01T14:49:30.485+0900    [#######################.] dpc.facilities       659KB/659KB (100.0%) 2020-09-01T14:49:30.486+0900    imported 4764 documents MongoDBシェルで二つのコレクションをJOINさせる のもいいのですが、データのJOINに強いBIツール、Spotfireを使えば、複雑なシェルやSqlを書く必要もなくなります。 MongoDBは普通のSqlを使うデータベースのようにBIツールから接続するには、 有償のODBCドライバー もありますが、こちらは 無償のBIコネクター を使います。 ただ、このコネクターは、 MySQL   ODBC   Unicode   Driver に依存しているのと、Mysqlのドライバーのインストールは、 Visual Studio 2015、2017、および 2019 用 Microsoft Visual C++ 再頒布可能パッケージ が必要なので、両方も用意しましょう。 MongoDBがインストールされている前提で話を進みたいので、インストールは下記のページを参考してください。個人的にTB単位の外付けSSDをMongoDBを持ち歩くので、ポータルバージョンを使っています。 Node.js & MongoDB portable 持ち歩くポータブルバージョン for windows まず、BIコネクターに下記のコマンドで sche

Spotfire write data to oracle by python importing ODP.NET (Oracle.DataAccess.dll)

 # Write data to Oracle server ver. 19 import clr     clr.AddReferenceToFileAndPath(r"C:\app\Administrator\product\11.2.0\client_32\ODP.NET\bin\4\Oracle.DataAccess.dll") import System from System import * import Oracle.DataAccess from Oracle.DataAccess import * oradb="User Id=username; Password=userpassword; Data Source=(DESCRIPTION =(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = MYDWH)))" conn= Client.OracleConnection(oradb) conn.Open() sql = "insert into  RYSYSM.COMMONTEMP (JOBNAME,COL01) VALUES('ODR.NET','test')" cmd = Client.OracleCommand(sql,conn) dr=cmd.ExecuteNonQuery() # you can also query by ExecuteReader() #sql = "select * from  RYSYSM.COMMONTEMP where JOBNAME='ODP.NET" #dr=cmd.ExecuteReader() #dr.Read() #print dr.GetString(0) #print dr.GetString(1) conn.Close() conn.Dispose() exit

BIツールSpotfire server がインターフェイスサーバの代わりに定期的にデータベースからデータを取得する

 当院のある部門システムはPostgreSQLを使って、データウェアハウス(DWH)のオラクルにデータベースリンクが作られていいます。その部門システムの文書検索機能になぜか文書作成日が表示されていません。簡単にいえば、お金をかけて業者にカラム追加をすれば、済む話ですが、1日2会のデータ取得が十分なので、自力で取ることにしました。 ここで紹介したいのは、Oracleのスケジュール機能でもWindowsのタスクスケジューラ機能でもなくBIツールのSpotfire serverのAutomationの機能です。 まず、一時的にデータを格納する一時表を作って、データを取得する前に前回のデータを全部削除する形にします。 ここで使ったのは、DWHをデータソールにして、一時表のインフォメーションリンクを削除用と取得用にします。インフォメーションリンクに設定できるSQLは更新前、クエリーと更新後があり、削除用のインフォメーションリンクは、DELETE文を更新前に設定して、取得用のほうは、INSERT INTO ~ SELECTを入れます。この2つインフォメーションリンクをデータテーブルにした分析ファイルを作ってAutomationのJobに削除用分析ファイルと取得用分析ファイルを順番に開くだけで、一時表の中身が自動的に更新されます。 この方法で分析用のデータのみを取得し、データマートを簡単に構築できます。

BIツールSpotfire server がインターフェイスサーバの代わりに定期的にデータベースからデータを取得する

 当院のある部門システムはPostgreSQLを使って、データウェアハウス(DWH)のオラクルにデータベースリンクが作られていいます。その部門システムの文書検索機能になぜか文書作成日が表示されていません。簡単にいえば、お金をかけて業者にカラム追加をすれば、済む話ですが、1日2会のデータ取得が十分なので、自力で取ることにしました。 ここで紹介したいのは、Oracleのスケジュール機能でもWindowsのタスクスケジューラ機能でもなくBIツールのSpotfire serverのAutomationの機能です。 まず、一時的にデータを格納する一時表を作って、データを取得する前に前回のデータを全部削除する形にします。 ここで使ったのは、DWHをデータソールにして、一時表のインフォメーションリンクを削除用と取得用にします。インフォメーションリンクに設定できるSQLは更新前、クエリーと更新後があり、削除用のインフォメーションリンクは、DELETE文を更新前に設定して、取得用のほうは、INSERT INTO ~ SELECTを入れます。この2つインフォメーションリンクをデータテーブルにした分析ファイルを作ってAutomationのJobに削除用分析ファイルと取得用分析ファイルを順番に開くだけで、一時表の中身が自動的に更新されます。 この方法で分析用のデータのみを取得し、データマートを簡単に構築できます。