投稿

データの魔法使いと呼ばれるようになった!

 このブログを始めたとき、手品師のつもりでブログ名をつけたが、2011年に開催された研究会と病院情報システムのユーザ会で、魔法使いと呼ばれるようになっった。  理由は、ワンクリックでExcelが部門システムの検索画面を自動的にCSVを吐き出し、そのCSVをSQLでExcelに取り込んで、DWH、医事会計、医療連携、医療文書のデータベースのデータを統合させたからである。  魔法使いになるのは難しいと思われるかもしれないが、実はネットの情報を真似して、必要な部分を切り取って、組み立てたものばかりである。いまから整理して、2022年3月の雑誌記事の公開のあとに、順次にブログとYoutubeに公開しようと思い、ご興味の方はぜひ一緒にデータの利活用を楽しましょう。

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

Mongodb タイトルなしの汎用インポートコマンド

イメージ
なんだこれ!と思われそうですが、タイトルがないや使えないCSV、しかもカラムが256以下の汎用Mongodbインポートのコマンドとして紹介しようと思います。もっといい書き方あってもいい気がしますが。。。 C:\Users\user\Desktop>mongoimport /db:dpc /collection:mdc01ope256c  /type:csv /file:MDC01_OPE.csv /fields:C001,C002,C003,C004,C005,C006,C007,C008,C009,C010,C011,C012,C013,C014,C015,C016,C017,C018,C019,C020,C021,C022,C023,C024,C025,C026,C027,C028,C029,C030,C031,C032,C033,C034,C035,C036,C037,C038,C039,C040,C041,C042,C043,C044,C045,C046,C047,C048,C049,C050,C051,C052,C053,C054,C055,C056,C057,C058,C059,C060,C061,C062,C063,C064,C065,C066,C067,C068,C069,C070,C071,C072,C073,C074,C075,C076,C077,C078,C079,C080,C081,C082,C083,C084,C085,C086,C087,C088,C089,C090,C091,C092,C093,C094,C095,C096,C097,C098,C099,C100,C101,C102,C103,C104,C105,C106,C107,C108,C109,C110,C111,C112,C113,C114,C115,C116,C117,C118,C119,C120,C121,C122,C123,C124,C125,C126,C127,C128,C129,C130,C131,C132,C133,C134,C135,C136,C137,C138,C139,C140,C141,C142,C143,C144,C145,C146,C147,C148,C149,C150,C151,C152,C153,C154,C155,C156,C157,C158

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コネクターに下記のコマンドで schem

MongoDB 検索結果をファイルに出力

短い js の場合 mongo 127.0.0.1/db --eval "var c = db.collection.find(); while(c.hasNext()) {printjson(c.next())}" >> test.txt js ファイルを使用する場合 mongo 127.0.0.1/db script.js >> test.txt 最も簡単なコマンド mongoexport -h mongo.dev.priv -d models -c profiles -q '{ $query : { _id : "MRD461000" } }' -o MRD_Series1.json 【参考したサイト】 http://stackoverflow.com/questions/12823990/how-to-get-mongo-command-results-in-to-a-flat-file

MongoDB の collection 内の すべての key を取得する

RDBM関連データベースの table に相当する collection に key : value のペアーが保管されている、key は field に似ていますが、一つ一つのオブジェクトに入っている key は可変です。だから、RDBMの field の一覧を出すのは簡単ですが、MongoDB は collection 内のオブジェクトを巡って取ってくる必要がある。 mr = db.runCommand({ "mapreduce" : " my_collection ", "map" : function() { for (var key in this) { emit(key, null); } }, "reduce" : function(key, stuff) { return null; }, "out": "my_collection" + "_keys" }) db[mr.result].distinct("_id") my_collection は key を取得したい collection名に変更してください。 mr = db.runCommand({ "mapreduce" : " EFn ", "map" : function() { for (var key in this) { emit(key, null); } }, "reduce" : function(key, stuff) { return null; }, "out": "my_collection" + "_keys" }) { "result" : "my_collection_keys", "timeMillis" : 290837, "counts" : { "input&q

Mongodb で大量データ(390万件弱)をインポートしてみた

DPC外来のEFファイル(32列、2.1GB、3,883,160件)をMongodbにインポートしてみました。進捗の表示はずっと0.0Bなので、インポートできないと思ったが、一応ちゃんとインポートされて、所要時間はおよそ2分でした。しかもデータベース上の容量は 0.461GBで収またのですね。 db.EFn.find({"EF-0":201504}) で検索してみてもすぐレスポンスがあって、全然ストレスを感じませんでした。複雑な mapReduce はしていませんが、これからいろいろ分析してみます。 【以下オペレーション記録】 mongoimport --file DPC_EFn_201504-12_title.txt --headerline --type tsv -d dpc -c EFn --drop --ignoreBlanks 2016-03-24T12:16:06.388+0900 connected to: localhost 2016-03-24T12:16:06.389+0900 dropping: dpc.EFn 2016-03-24T12:16:09.378+0900 [........................] dpc.EFn 0.0 B/2.1 GB (0.0%) 2016-03-24T12:16:12.378+0900 [........................] dpc.EFn 0.0 B/2.1 GB (0.0%) 2016-03-24T12:16:15.377+0900 [........................] dpc.EFn 0.0 B/2.1 GB (0.0%) 2016-03-24T12:16:18.378+0900 [........................] dpc.EFn 0.0 B/2.1 GB (0.0%) 2016-03-24T12:16:21.378+0900 [........................] dpc.EFn 0.0 B/2.1 GB (0.0%) 2016-03-24T12:16:24.377+0900 [........................] dpc.