SAS と外部ソフトウェアの連携 Windows GUI 構築と Excel データの利用 高田一行 1 迫田英之 1 阿部一也 1 村松徳之 1 宮原秀夫 1 木村範昭 2 ( 1 株式会社タクミインフォメーションテクノロジー 2 専修大学商学部 )
要旨 : Windows GUI と外部ソフトウェアを SAS と連携させ 環境に依存しない使いやすい Windows GUI メニューを利用することにより 複雑なレイアウトの EXCEL シートのデータを SAS データセットに変換し SAS の分析機能を利用するまでの方法を紹介する キーワード :SAS Integration Technologies, PowerShell, WPF(Windows Presentation Foundation), Excel 連携 2
SAS Integration Technologies とは 別な or 同じ マシンの SAS,Excel,VB,DB 等
SAS Integration Technologies での外部連係
SAS Integration Technologies を用いて
SAS PowerSh ell の対話処理を可能にする SAS と外界のシームレス連携 SAS SAS Integration Technologies PowerShell 今回は PowerShell を使ってみる Window 標準搭載だから GUI メニュー SAS Excel その他ツール
ローカル PC 環境での Integration Technologies SASWorkspace クラスを使用 (SAS Integration Technologies の IOM 機能使用 ) 主要なプログラムから利用が可能 汎用化 ( 関数化など ) すると以外に簡単
PowerShell とは Windows 用のシェル言語 Cmd.exe いわゆる DOS コマンド機能 Windows7 以降標準 スクリプト言語.NET 機能フルサポート 処理関数群 (Cmdlet) 大容量データには向かない ユーザー関数作成機能 速度は速くない
コーディング例を見てみる PowerShell から Excel 操作 Excel 起動 ファイル指定 シート名取得 Cmdlet $excel=new-object -ComObject Excel.Application $book=$excel.workbooks.open("c: Temp データ.xlsx") $names=$book.sheets Select-Object -Property Name 変数名 $name の内容 クラス授業アンケート月別納豆消費
PowerShell で SAS を扱う たとえばこんな処理 SAS プログラムをインタラクティブに実行 結果 ( データ レポート ログ ) 受け取り 様々な表示へ ( メニュー化 Excel へ ) プログラムを汎用 ( 簡易 ) 化できる
汎用化した使用例 SASHELP.CLASS を PowerShell で取得 表示 start-sas $sassource="select * from sashelp.class" get-sasdata -query $sassource -table class $dataset.tables["class"] Out-GridView -PassThru
Window(GUI) メニューの作成 PowerShell を介して WPF でメニュー作成 使用する GUI WPF(Window Presentation Foundation) 画面デザインとロジックの分離 ( コードビハインド ) 新たな GUI(UWP) への橋渡しデータバインド ( データ受け渡機能の一種 ) 綺麗なデザイン * 従来の Form アプリケーションも可
WPF での Window 表示プログラム 画面定義例 ( 空の Window 表示 ) Add-Type assemblyname PresentationFramework [xml]$xaml = @" <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <!-- ここにコンポーネント定義を追加 --> </Window> "@ $reader=(new-object System.Xml.XmlNodeReader $xaml) $Window=[Windows.Markup.XamlReader]::Load( $reader ) $Window.ShowDialog() XAML( ザムル ) と言う書式で画面定義 ( 赤文字部分 ) Visual Studio のデザイナーも使用できる
WPF で Window 作成 画面作成は簡素化できる ( 作成法 2 種類 ) Visual Studio デザイナーを使用 テキストエディターを使用 SAS データと合わせ PowerShell でデータ処理 & 表示
使われない Excel 過去資産 謳い文句 :DB 化し BI で有効利用 現実 プレーンな Excel データ今後新たに発生するデータ
一般的な Excel データの取り込み 単純な表形式なら SAS Import プロシージャ CSV にして読み込み 少量のブックなら DDE で直接読み込み 複雑なレイアウトだと? 大量のブックは?
SAS だと出来る Excel 資産利用 1 Excel インポートは結構めんどう シートを見ると 自由度高いレイアウト セル内改行 セル結合 ブックを見ると大量のブック Open Close バージョン非互換
SAS だと出来る Excel 資産利用 2 今まで嫌った理由 作業大変 CSV 等 通常の DB 大量の Excel 少々複雑なレイアウト 作業大変 XML XML DB 必要
SAS だと出来る Excel 資産利用 3 新たな仕組みの提言 ポイント 1 ポイント 2 変換ツール LIBNAME 指定だけ SAS Data 大量の Excel 少々複雑なレイアウト SAS 用の XML が作られる SAS プログラム
変換ツールのメリット 1 変換と同時に SAS ライブラリエンジンで利用 変換ツール c: temp sample.xml energy.xml dfile1.xml libname xlib xmlv2 c: temp ; proc print data=xlib.energy; SAS システム
変換ツールのメリット 2 大量かつ異バージョン book も SAS 用のデータに prod1995_05.xls prod1995_06.xls prod2000_01.xls prod2000_02.xls prod2017_04.xlsx prod2017_05.xlsx prod2017_06.xlsx 変換ツール 膨大なブック異なるバージョンセル内改行セル結合 c: temp prod1995_05.xml prod1995_06.xml prod2000_01.xml prod2000_02.xml prod2017_04.xml prod2017_05.xml prod2017_06.xml libname xlib xmlv2 c: temp prod: ; proc print data=xlib.energy; SAS システム
眠っていた Excel Excel シートも資産の有効利用 SASデータ シート上のデータをそのまま SAS データとして利用できるため 過去データだけでなく現在利用されている Excel を 他システムに移行せず そのまま生かした真にシームレスな環境の提供が可能と思われる SAS を使うと 日夜で生まれる Excel 資産をそのまま SAS データとして利用 提供可能
まとめ 今回の調査では SAS と外部機能をシームレスに連携されることにより SAS のさらなる可能性を発見することができた 画面構築も思ったよりも難しいものではなく ユーザー部門のパワーユーザーであれば作成することが可能であろう 特に Excel で構造が複雑化したデータの活用は多くの企業や SAS ユーザーにとってもジレンマとなっており これを解決することは SAS の優位性をさらに高めることにもつながる 現在 データの再利用の面から Excel の利用を控え Web 等の入力に切り替える企業も増えているが エンドユーザーの利用面から見ると 不便に感じる部分もあり Excel が活用できるのであればその方が優位であると考える 過去のデータ資産の活用 そしてこれからのデータ資産の運用の観点を含めて述べても 汎用性と解析処理能力はビックデータを扱う多くの企業においても求められるところであり この点においても今回の研究を活用すれば SAS ユーザーにとって新たなアプローチからソリューションを行うことができる
お問い合わせはこちらへ! 株式会社タクミインフォメーションテクノロジー 東京都豊島区池袋 2-40-13 池袋デュープレックス B s 11F http://www.takumi-it.co.jp TEL: (03)5979-7381 Email:contact@takumi-it.co.jp 25