Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?
@ryo-morooka

Azure環境プリザンターでDBから日時を取得してみた

はじめに

弊社でも利用させていただいているプリザンターの「Advent Calendar 2020」 が盛り上がっているのを拝見し、Qiita初投稿ながら参加させていただきました。

今回は、Azure環境のプリザンターで拡張SQLを実装したときのことを紹介します。
初めて拡張SQLを使ってみたとき少し躓いたので、これを読んでいる方の参考になれば幸いです。

やりたいこと

Azure SQL Databaseから現在日時を取得し、プリザンター上の項目に出力する。

①拡張SQLを用意

開発者向け機能:拡張機能:拡張SQL

まず、Azure SQL Databaseから日時を取得するための、以下2つのファイル「GetDateDB.json」と「GetDateDB.json.sql」を用意します。

GetDateDB.json
{
    "Name": "GetDateDB",
    "Description": "日時を取得します。",
    "SiteIdList": null,
    "IdList": null,
    "Api": true,
    "OnCreating": false,
    "OnCreated": false,
    "OnUpdating": false,
    "OnUpdated": false,
    "OnDeleting": false,
    "OnDeleted": false,
    "OnBulkDeleting": false,
    "OnBulkDeleted": false,
    "OnImporting": false,
    "OnImported": false,
    "OnSelectingWhere": false,
    "CommandText": ""
}

Azure SQL DatabaseはUTC日時のため、日本時間に合わせるため+9時間してます。

GetDateDB.json.sql
select dateadd(hour, 9, getdate());

②Azure上に拡張SQLファイルをアップロード

「App Service」→「高度なツール」→「移動」で Kudu を開く
高度なツール.png

「Debug console」→「CMD」を開く
CMD.png

以下のファイルパスへ移動
「D:\home\site\wwwroot\App_Data\Parameters\ExtendedSqls>」

①で作成した2つのファイルをアップロード。
GetDateDB.png

これで拡張SQLの設定は整いました。
※一度App Serviceを再起動しないと設定ファイルが反映されないのでお忘れなく

③プリザンター上にスクリプトの登録

開発者向け機能:APIから拡張SQLを実行する

あとはAPI実行で、②の拡張SQLを実行するだけです。

getdbDate.js

var DateData = {
    "ApiVersion": 1.1,
    "ApiKey": ApiKey,       //ApiKeyを設定
    "Name": "GetDateDB"
}

$.ajax({
            type:"post", 
            url:"/api/extended/sql",                    // APIのパス
            data:JSON.stringify(DateData),              // JSONデータ本体
            contentType: 'application/json',            // リクエストの Content-Type
            dataType: "json",                           // レスポンスをJSONとしてパースする
        }).done(function(DateData1) { 
            var DateData2 = JSON.stringify(DateData1);  //JavaScriptオブジェクトをJSONに変換
            var objData = JSON.parse(DateData2);

            if (objData.StatusCode == 200){
                var dbDate = objData.Response.Data.Table[0].Column1; 
                $p.set($('#Results_ClassA'), dbDate);   // 結果を出力
            }
        })

④実行結果

Azure SQL Databaseから取得した日時が、プリザンター上の項目(分類A)へ出力されることを確認!
実行結果.png

おわり

今年はプリザンターに出会い学びの多い年となりました。
他サービスとの連携など色々試して、今後もQiitaに投稿していきたいと思います。

みなさま、良い年末年始をお過ごしください。

2
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ryo-morooka
RPAとPleasanterを使用したサービスの開発に携わっています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
2
Help us understand the problem. What is going on with this article?