投稿

2016の投稿を表示しています

proc format - SAS日時、SAS日付、SAS時間に対して、自分で出力方式を作成する

すごく久しぶりに、proc format で出力方式を作ったら、完全にど忘れして同じ失敗を繰り返してしまったので、忘れないために記事書きます。 SAS日時、SAS日付、SAS時間の出力方式って、いっぱいありますけど、たくさんある出力方式を探すの大変だし、探してみたらほしいものが無かったなんてことがまれによくあります。 そんなときに使うのが、proc format です。出力方式を自分で作ることができます。 数値や文字に対しても、出力方式を作ることもできますが、今回は、SAS日時、SAS日付、SAS時間について、出力方式を作ってみたいと思います。 proc format ; /* YYYY-MM-DD HH:MI:SS 形式 */ picture YMDHMS_A other='%Y-%0m-%0D %0H:%0M:%0S' (datatype=datetime) ; /* %a で曜日も入れられます。local によって結果は異なります */ picture YMDHMS_B other='%Y%0m%0D(%a) %0H%0M%0S' (datatype=datetime) ; /* 日本語も入れることができます */ picture YMDHMS_C other='%Y年%0m月%0D日(%a曜日) %0H時%0M分%0S秒' (datatype=datetime) ; /* ゼロを無くすことで、セロ埋めされずに出力されます */ picture YMDHMS_D other='%Y-%m-%D %H:%M:%S.%s' (datatype=datetime) ; run ; /* 作成した出力方式を使ってみる */ data _null_ ; DATM = datetime() ; putlog DATM= YMDHMS_A19. ; putlog DATM= YMDHMS_B20. ; putlog DATM= YMDHMS_C44. ; putlog DATM= YMDHMS_D24. ; run ; picture ステートメントの直後に、好きな出力方式名を指定します。 値に応じて、出力方式を変

FedSQL プロシジャは、SQLプロシジャとどう違うの? - SAS

イメージ
データステップ100万回 SAS新手一生 さんにて、「 PROC SQL では LIMIT 句が使えない けどPROC FEDSQLでは使えるよ。ついでにOFFSET句も。の話 」を読んで、SQLプロシジャと FedSQL ってなにが違うんだろ、と疑問に思ったので少し調べてみました。そもそも、FedSQLプロシジャの存在すら知らない(汗。 そんなこんなで、個人的に気になったところを簡単にピックアップしてみます。 FedSQLプロシジャ とは? FedSQLプロシジャは、新しいデータタイプに対応し、(SAS9.4の時点で) ANSI SQL:1999 に準拠したSQL を記載することができます。 FesSQLプロシジャが準拠している ANSI SQL:1999 ですが、それ以降の ANSI SQL はもちろん準拠していません。例えば、ANSI SQL:2003 で追加になったウィンドウ関数 partition by などは残念ながらないです。 悲しい。 FedSQL の Fed は、たぶん、federal (連邦の) か federation (連邦政府) の略ですかね、、、知ってる方がいらっしゃたら教えて下さい。。。 一方、SQLプロシジャでは完全にANSIに準拠しているわけではなく、もともとのSASの動きぽいところと互換性をもたせています。ですので、OracleやらDB2を使っていた人からすると、違和感があるような記載方法や動作をしたりすることがあります。 では、FedSQLプロシジャとSQLプロシジャでどこが違うのか見ていきましょう。 null (欠損値) の扱い方 - マイナス無限 SAS忘備録 さんの「 SQLプロシジャ入門15:NULLの取扱い 」にて記載されていますが、DATAステップも含めて、SQLプロシジャでは、欠損値はマイナス無限みたいな扱いになっています。例えば、where句 で A < 10 みたいに絞り込みを実施すると、通常のSQLでは 欠損値は条件の対象外ですが、SQLプロシジャやDATAステップでは欠損値も含んでしまいます。 FedSQLプロシジャに、ansimodeオプションを付けると、ANSI準拠の動きになり、where句 で A < 10 みたいに絞り込みを実施したとき、欠損値を

SAS®認定プロフェッショナル SAS Advanced Programmer for SAS®9 の話

みなさま、あけましておめでとうございます(遅。かなりだいぶ久しぶりのブログです。 去年の話になりますが、2015年9月に SAS®認定プロフェッショナル SAS Advanced Programmer for SAS®9 に受験し合格しました。そのときのお話です。 ※試験範囲などの詳細は変わることがあるかと思いますので、最新の試験範囲や受験料などは SAS社のウェブサイト をご覧いただけたらと思います。 (Advanced の前の資格である SAS Base Programmer for SAS®9 のお話は、 SAS®認定プロフェッショナル SAS Base Programmer for SAS®9 の話 にて記載しています) 受験時のSAS経験値 受験当時、SASを使い始めて 1年半年くらいのSASデータマエショリストです。処理の効率化やら容量節約やらと日夜戦っていました。SQL(Oracle/DB2/Teradata)の業務経験はだいたい 2,3年くらいでした。 試験範囲(簡易) SAS SQLコードの記述と解釈 SASマクロ機能の作成と利用 高度なDATAステップ・プログラミングと効率化のテクニックを使用した問題解決 Base と同じくテストセンターでパソコン上で受験します。 60~65問中、65%の正答率で合格です。Base よりも 5%低く設定されています。 試験時間は120分です。個人的には、見直し時間をいれても、かなり余るのではないかと思います。 勉強方法・勉強時間 試験は日本語で受けられますが、公式テキストは英語しかありません。問題を載せているようなサイトやらも少ない上に英語です。本当に英語しかありません。英語文章の読解が苦手な方はかなり苦戦するのではないかと思います。模擬試験 (有料)は日本語で受けられます。 私は公式テキストや模擬試験はやらず、英語のサイトやアプリ、日本語SASオンラインヘルプなどで試験範囲と思われるところを読み漁って勉強してました。サイトすら、Baseと比べて扱っているところが少なかったので探すのにも苦労しました。また、解説が間違っていたり、解説が無かったりしたので...、実際に SAS University Edition を使って動かして調べてました。