2017年10月12日木曜日

SMCの権限テンプレートをわかりやすく

SAS9との付き合いも長いのですが、その中で権限テンプレート(Access Control Template)は使う機会がありませんでした。でありますが食わず嫌いを返上して、自分がわかりやすいという順序で、認証タブとACTの説明を試みます。

認証タブのチェックの色

基礎知識として、認証タブの拒否と許可のチェックの背景色について説明します。チェックの背景色には意味があります。下の例は、許可(Grant)のチェックは背景色が白です。
こちらはグレーと緑の背景色があります。
背景色が白は、明示的な許可または拒否(explicit settings)を、背景色が緑は、アクセステンプレートの設定による許可または拒否(ACT settings)を、背景色がグレーは、上位のオブジェクトから継承した設定(indirect settings)を意味します。

設定の優先順位は、明示的な設定(白)、その次にACT(緑)、上位からの継承(グレー)の順番です。権限テンプレートで、RM(Read Metadata)を許可しても、明示的に拒否を設定することができます。

ACTとは?

古い資料を読むと、「ACTは、複数のリソースに適用できる、再利用可能な認証テンプレートです」とありますが、私にはピンときませんでした。私の言葉で言い換えます。

  • ACTは、SASフォルダに格納されているオブジェクトに適用する許可/拒否の権限設定
  • ACTは、複数のオブジェジェクトに同じ権限を設定するときに使う仕組み

ACTはどのような場面で使うのか?

ACTの具体的な使いどころは、My Folderの設定を確認すると分かりやすいです。自分のMy Folderの認証タブを開き、Access Control Templateのボタンを押すと、Private User Folder ACTというテンプレートが適用されていることがわかります。ACTは同じ権限設定を複数のフォルダ(正確にはメタデータのオブジェクト)に定義するときに役立ちます。

2017年7月5日水曜日

Enterprise Guide 7.13, 実行時のエラーに対するアクション

EGで良くある問い合わせで、エラーが発生したときにプロセスフローの実行を中断したいという要望がありました。EG7.13で改善されていて、プロジェクトのプロパティで停止させることができます。実行の順番をリンクで紐付けしたときに、リンクが切れて自動レイアウトで並びが崩れてしまう問題を回避できます。
プロジェクトのプロパティ画面

2017年7月4日火曜日

インコを早く寝かせよう

鳥の話題です。
言いたいことはタイトルの通りで、もし具合の悪い鳥さんならば早めの時間に暗くして寝かせましょう。すべての症状に効くとまでは言いえませんが、試す価値あると私は考えています。
「鳥は人間の生活リズムに合わせて良い」という意見
昔、一羽のインコがオエオエと吐き戻すことが多くなり、都内でも有名な鳥専門医のところで薬を処方してもらいました。そのお医者さんは「鳥は人間の生活リズムに合わせて良い」とおっしゃっていたのですが、あまり症状は改善されませんでした。

「早めに寝かせた方が良い」という意見
個体差あって身体の弱いインコもいると半ばあきらめていたところで、別なお医者さんから「早く寝かせてみてください、夕方5、6時くらいには暗くして」というアドバイスをもらいました。えっ、インコ界隈では有名なあの先生が言っているのと違うと思いつつも、早めに寝かしつけるようにしたところ、ばっちりと体調が良くなりました。

体調がよくなってからは、午後7時くらいには寝かせるようにしました。もし帰宅が遅くなった時には明るくしないで暗いままで水変えて、餌を足してすぐに寝かせています。

生活が不規則で、夜遅いという方もいるのはあるかと思います。1日1回は鳥と触れ合う、放鳥の時間が大事だという意見もあります。でも具合が良くないのであれば、放鳥の時間を朝にずらして、夜はたっぷり寝かせること試してみてください。

2017年6月29日木曜日

SAS/ACCESS Interface to Teradataの文字化け対応

Teradataの読み書きで日本語の文字列が化けた場合、まずはココを点検という箇所を紹介します。 Teradata Clientのインストールガイドの中に、"Enable Support for Non-ASCII Character Sets"という項目があります。これを行っていないことがままあります。

詳しい設定は、Teradata Clientの設定ガイドを読んでください。設定項目のキーワードを挙げると、clispb.datの charset_type=、charset_id=を設定し、環境変数COPLIBを定義してください。典型例はcharset_type=N, charset_id=KANJISJIS_0Sです。

SASのWhite Paperはコチラです。
http://support.sas.com/resources/papers/proceedings17/0433-2017.pdf

ちなみに Clispb.datは  Teradata Call-Level Interface version 2 System Parameter Block の略だそうです。

PowerShellでSAS.EXEを停止する。

PowerShellを運用スクリプトの問い合せが少し増えてきました。 バッチ実行しているSAS.EXE処理を見つけて、プロセスの情報を表示するサンプルです。 Get-Processの部分を書き換えれば、プロセスを停止できます。
PS C:\Users\sas> $X=WMIC PROCESS WHERE "CommandLine LIKE '%sas.exe  -nodms -batch%' and caption = 'sas.exe'" GET /FORMAT:LIST | select-string "^ProcessId=" |  % { $($_ -split"=")[1] }
PS C:\Users\sas> $X | Foreach-object -process{Get-Process -id "$_" }

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    126      10     3644      10784    99     0.05  28172 sas

PS C:\Users\sas>



2017年6月27日火曜日

Data Integration Studio + SVN, アーカイブ済みのSASパッケージをインポート

SVNにジョブをアーカイブしたら、取り出すほうもやってみましょう。ファイルのメニューから「アーカイブ済みのSASパッケージ」を選択します。
アーカイブ済みのSASパッケージが一覧で表示されます。 
 試しに古いバージョンのパッケージ名を選んで、インポートボタンを押します。
 ここから先は、SPKファイルのインポートと同じです。下の絵だと既にオブジェクトがあるのでびっくりマークが付いています。






これでジョブのダイアグラムを確認すると、前に保存したバージョンに戻っていることが分かります。いまいち、リビジョン管理のツールを使っている気がしないのは、チェックアウト、ロック、チェックインといった操作がないからと思います。

PROC SQLのPass-Through構文で、ライブラリ参照名のユーザ、パスワードを使う

昔、パススルー構文でデータベースに接続するときにユーザ名とパスワードを書くのが管理上困った記憶があります。ふと調べてたらSAS9.3からCONNECT USINGというキーワードが追加され、ユーザ名とパスワードを埋め込まなくても済むことが分かりました。

参照した記事は コチラ です。

調べたのはSAS9.1.3を使っていた頃でかなり昔のことです。お客様に「回避策無しで、PW埋め込んでください」とお願いしなくて済むのが良いです。

2017年6月8日木曜日

Data Integration Studio + SVN, SASパッケージとしてアーカイブ

昨日はSVNプラグインの設定、今日はSVNのリポジトリにジョブを登録します。

1. DIでジョブを作成

ジョブを作成して、実行した後で保存します。

2. SASパッケージとしてアーカイブ

ファイルメニューからSASパッケージとしてアーカイブを選択します。名前、説明を入力して、OKボタンを押します。

パッケージ(SPK)の形式でエクスポートするダイアログでるので、そのまま進みます。

そのまま進んでエクスポートの処理が正常終了するのを確認します。


3. SVNに保存したSASパッケージを確認

ファイルメニューからアーカイブ済みSASパッケージを選択します。


パッケージの一覧の画面が表示されます。表示のフィルターには、いまのジョブの名前が設定されています。

フィルターを外すと、保存されている全てのパッケージが表示されます。なんか、チェックイン/チェックアウトの操作とずれている気がします。バージョン番号は何故か2ずつカウントアップされています。下の図をみるとわかりますが、バージョン番号はパッケージ名ごとに連番で振られていません。全てのパッケージで連番になっています。私がRCSから時間が止まっているせいなのか、なんだか釈然としません。
Assemblaの方から確認すれば、Recent Eventの一覧にアーカイブした操作が記録されていることがわかります。次はアーカイブから取り出す操作です。






2017年6月7日水曜日

Data Integration Studio + SVNの設定

DIでSubversionのリポジトリを使う機能がありますが、親切丁寧な日本語の解説がありません。ということで、勉強しながら行った設定手順をメモします。

1. TurtoiseSVNインストール
最初にTurtoiseSVNをインストールしてください。私がインストールしたのは、TotoiseSVN 1.9.5 - 64bit、MSIのインストーラがあるので簡単です。

2. SVNのリポジトリをどこかに作る
私はお試しで Assemblaにユーザ登録しました。ユーザ登録したら、Installed Toolsの下にあるSVNをクリック、First Spaceの画面にある、Checkout URL:をコピーして控えます。
3. DIのSVNプラグインの設定
次に、DIのオプションでSVNプラグインのタブの設定例を示します。プログラムパスには、TurtoiseSVNのフォルダ配下にあるSVN.EXEを設定します。ローカルルートパスは、SVNのローカルのリポジトリのフォルダ、サーバーにはCheckout URLのホスト名の部分を、リポジトリにはChekuout URLのホスト名より後ろのパス、ユーザ名はAssemblaで登録したユーザ名設定します。Checkout URLの意味を知っていれば、ポート番号が443、種類がHTTPSを指定すればよいと分かります。
設定後に、接続テストボタンを押すと疎通確認できます。
今日はここまで

2017年5月8日月曜日

SAS Log Utility 1.9.1.3

不具合修正中です。潜在的なバグのパターンを定義する機能に不具合あるので直します。あと、SAS9.4TS1M4に合わせて、キーワードを修正しないといけない。

2017年3月28日火曜日

食洗機RKW-404のサークルラックを交換

検索の駄ネタです。2016年12月に住み替えました。新居に食洗機がついてるのですが、型落ちのモデルで、妻からは使いにくいと酷評されていました。検索で、解決するまでの過程をメモしておきます。リンナイの食器洗い洗浄機 RKW-404で、上かごが使いにくいと思っている方にはお勧めの情報です。

ユーザの不満は「上かごを取り外さないと、下かごに食器をセットしにくい」というものです。まず調べたのは、型番やメーカー名を足がかりとして事例を探します。製品の型番で探すと、取説に書かれているものと異なる食洗機がヒットします。クリナップの取説に書かれている型番は、ZWPP45R14 です。しかし、上かごの名前「サークルラック」で探すと、リンナイのビルトイン食器洗い乾燥機 RKW-404A 2015年2月発売のモデルがヒットします。検索のの情報が多い、RKW-404に検索キーワードを乗り換えて、情報を手繰ります。
  • 同じ不満を抱えていてBlogに書き込んだ人
  • なんらかの解決策を見出した人
古いモデルで同じような悩みを抱えているひとは見つかりましたが、うまく解決できた人が見つかりません。なにかストッパーや伸縮するロッドのようなものを設けて、上かごを上げて固定できないか思案しましたが良いアイディアが出てきません。

ここではたと考え直して、リンナイで後継モデル(RSW-404LP)を探りました。うまくいけば、上かごの構造だけ、改善されている可能性があります。金型は高価なものですから、マイナーチェンジで作り直さないだろうと考えました。

調べるとここ1,2年で上かごが改良されています。以前は、取り外すような作りでしたが、新しいモデルでは庫内で折りたためる仕組みになっています。ショールームで折りたためるサークルラックを実測して注文、無事に取り付けできました。上かご(サークルラック)の型番は、098-4036000です。いまの住まいは集合住宅で、となりも同じモデルの食洗器を使っているはずなので、総会で話のネタにします。

左がRWA-404、右が折りたためるRSW-404LPのサークルラック


教訓、現状に不満あるなら後継機をしらべましょう。

2017年3月7日火曜日

SAS Log Utility 1.9.1.2

Vectorに新しいバージョンの公開を依頼しました。今回の修正内容は以下のとおりです。

  • EXPORTの機能制限を解除
  • 有効期限を2019年12月末に設定



使おうと思ったら有効期限切れていて、弱りました。エクスポートの制限解除するのが面倒なのでロジックをコメントアウトしました。これを使って、あるSASプログラムの構造を解き明かそうと下準備進めています。解析するプログラムはAPM、SASの監査のデータを作る仕組みです。

2017年1月10日火曜日

PROC HTTPでSAS Environment Managerに接続して情報を取得

前回はYahooのサイトから動くサンプルでしたが、今回は特定の環境で動くPROC HTTPのサンプルです。これはSAS Environment Managerに接続して、ユーザ一覧のXMLファイルを出力するサンプルコードです。実行した後に、C:\temp\response.xmlをブラウザで開いて取得されている中味を見てください。

filename response 'c:\temp\response.xml';

proc http 
 url='http://hogehoge.com:7080/hqu/hqapi1/user/list.hqu'
 method="get" 
 out=response;
 headers "Authorization"="Basic c2FzZXZzQHNhc3B3OntzYXMwMDJ9OTdFQ0U0NEIxMDVGNEM5NzNDN0U5MDc1"
    "User-Agent"="Apache-HttpClient/4.1.1 (java 1.5)"
    "Connection"=" Keep-Alive"
    "Host"="hogehoge.com:7080"
 ;
run;


response.xmlをIEで開くとこんな具合に見えます。

AuthorizationのBasic認証のコードは、Environment Managerのログに出力されているものをコピペしました。 同じようにUser-Agent, Connection, Hostの値もログから拾っています。 urlにある、"user/list.hqu" の部分は、vFabric Hyperic Web Services APIらしい。 試しに"user/delete.hqu?name=foo"とやったらユーザを削除できた。 今後、Environment Managerの機能が拡充される気配あるので、ちょっと下準備で触ってみました。 リソースの検索で、APM ETLのパラメータを取得できるようですが、どうやって仕事に使うかはのんびり考えます。

2017年1月5日木曜日

PROC HTTPの動くサンプル

Webページを読み込むサンプルです。PROC HTTPを使って、Yahoo Japanのページを読み込み、ログに出力しています。これはSAS Environment Managerから、データを引っ張るための予習みたいなものです。
filename myfile '/tmp/foo.txt';

proc http
 method="get"
 url="http://www.yahoo.co.jp/"
 out=myfile;
run;

data _null_;
 infile myfile;
 attrib buf length=$4096;
 input buf $4096.;
 put buf=;
run;