Autonomous Database：事前認証済リクエストURLを使用して表データやクエリの結果を表形式で簡単に共有する

# はじめに

Autonomous Databaseでは、従来から事前認証済リクエスト（PAR）URLを作成して表データやクエリの結果をJSON形式で簡単に共有することができましたが、今回の機能拡張で表形式での共有も可能になりました。
また、その際に特定の列のデータ値による色分け、列のデータ値によるソート、フィルタリングが可能になりました。

これにより、PARを使用して、人による可読性の高い表示けいしkでデータを共有できるようになりました。

ということで、早速検証してみました。

# 1.事前認証済リクエスト（PAR）URLの作成

こちらの記事を参考にして、DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URLプロシージャで表に対するPAR URLを作成します。

https://qiita.com/500InternalServerError/items/be7d42de75778dc72dc8

ここでは、adminユーザのemp表に対して60分間有効なPAR URLを作成しています。

```
SQL> set serveroutput on
SQL> DECLARE
  2      status CLOB;
  3  BEGIN
  4      DBMS_DATA_ACCESS.GET_PREAUTHENTICATED_URL(
  5          schema_name => 'ADMIN',
  6          schema_object_name    => 'EMP',
  7          expiration_minutes    => 60,
  8          result                => status
  9      );
 10     
 11      DBMS_OUTPUT.PUT_LINE(status);
 12  END;
 13* /
{"status":"SUCCESS","id":"pwmKdy_rskeX3c67DlWmfEipa3rgaWTBhFv6poH17oJVfCAsROAAM2WNyWRtcG--","preauth_url":"https://dataaccess.adb.ap-to
kyo-1.oraclecloudapps.com/adb/p/TSJqRrkxnXvwou66Fw7J0HXiIkMejU1Yhi8ofnnQrFCfx8zD4MzIGWWLhyigXvEMReW2BbrW95c/data","expiration_ts":"2024
-05-24T08:26:41.432Z","expiration_count":null}


PL/SQLプロシージャが正常に完了しました。

SQL>
```

出力されたJSONのプロパティ「preautu_url」の値が作成されたPAR URLです。

# 2.事前認証済リクエスト（PAR）へのアクセス

作成されたPAR URLにブラウザからアクセスすると、emp表の内容がJSON形式で表示されます

![スクリーンショット 2024-05-24 16.29.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/cf862ee3-89ee-e60a-1630-40c029d14185.png)

# 3.表形式での結果の表示

PAR URLの末尾に「**?view=table**」を追加すると、emp表の内容が以下のような表形式で表示されます。

![スクリーンショット 2024-05-24 16.32.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/084fca25-02ae-2804-2a8b-e16f46b24a89.png)



# 4.特定の列のデータの色分け

PAR URLの末尾に「**?view=table&colored_column_names=色付けする列名**」と追加することで、表の内容が表形式で出力され、かつ特定の列をデータ値毎に色付けすることができます。

ここでは、以下の文字列をPAR URLの末尾に追加し、emp表のjob列とdeptno列に色付けしています。

```
?view=table&colored_column_names=JOB,DEPTNO
```

![スクリーンショット 2024-05-24 16.31.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/755fa26e-1166-f686-e73a-b953430b9d7e.png)


# 5.列データによる結果のソート

表形式で表示すると、各列の値でソートが可能です。
「Sort Ascending」を選択すると、表示されているデータが昇順にソートされます。

![スクリーンショット 2024-05-24 16.33.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/f7ba69b6-d09f-164a-eaba-b4cd79adbedd.png)

deptnoの値で表示されているデータが昇順にソートされました。

![スクリーンショット 2024-05-24 16.34.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/be64539d-a3bc-847a-7b43-7d9aea8a8cc0.png)

「Sort Descending」を選択すると、表示されているデータが降順にソートされます。

![スクリーンショット 2024-05-24 16.34.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/91b49bcb-f091-7f5e-c7e0-0d556f8ce817.png)

deptnoの値で表示されているデータが降順にソートされました。

![スクリーンショット 2024-05-24 16.35.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/f2629e19-a121-56f1-fc01-d5109c1071f0.png)


# 6.列データによる結果のフィルタリング

「Filter by this field」に値を入力すると列の値でフィルタリングできます。
ここではdeptnoが10の列だけを表示するように、10と入力します。
![スクリーンショット 2024-05-24 16.35.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/b21487c5-405d-1321-faed-aae146d5ffd8.png)
deptnoが10の結果のみが表示されました。
![スクリーンショット 2024-05-24 16.35.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/784824/f898fbda-7d70-bd58-4e0a-0ce89730f3d8.png)


# 参考情報

・[Use PAR URLs to Access Data and View in Table Format](https://docs.oracle.com/en/cloud/paas/autonomous-database/serverless/adbsb/autonomous-preauthenticated-request-url.html#GUID-8191E0FE-8859-4005-9F69-47E45DB1B7C5)