{Denodo}データソース・ラッパー・基本ビュー・インターフェイスビューの作成(Azure Blob Storage)

 

https://community.denodo.com/kb/en/view/document/how%20to%20connect%20to%20azure%20blob%20storage%20from%20denodo


前提: 
Denodo Express インストール、起動済み


-- 1. 前作業

az login --use-device-code
az account show

az version

az configure --list-defaults
az configure --defaults location=japaneast
az configure --list-defaults

az group create \
--name rg9999999 \
--location japaneast


az group list
az upgrade

 

-- 2. Create an App


-- 2.1 アプリの登録


下記を保存する
アプリケーション(クライアント)ID
OAuth 2.0 承認エンドポイント (v2)
OAuth 2.0 トークン エンドポイント (v2)

 

-- 2.2 認証
プラットフォームを追加

Web

リダイレクト URI :
http://localhost:9090/oauth/2.0/redirectURL.jsp


IDトークンにチェック

 

-- 2.3 証明書とシークレット

新しいクライアントシークレット

値を保存する


-- 2.4 APIのアクセス許可

Azure Storageを追加


-- 2.5 APIの公開

スコープの追加
クライアントアプリケーションの追加

スコープを保存する

 

-- 3. ストレージ アカウントの作成


az storage account create \
--resource-group rg9999999 \
--name st123 \
--access-tier Hot \
--kind StorageV2 \
--sku Standard_LRS

az storage account list \
--resource-group rg9999999

 

-- 4. コンテナーの作成

key=$(az storage account keys list \
--account-name st123 \
--resource-group rg9999999 \
--output json \
--query [0].value | tr -d '"')

echo $key

az storage container create \
--name container01 \
--account-name st123 \
--public-access off \
--account-key $key


az storage container list \
--account-name st123 \
--account-key $key

-- 5. コンテナーにオブジェクトをアップロード

 

echo "col1,col2,col3" > f001.txt
echo "1,10,AAA" >> f001.txt
echo "2,20,BBB" >> f001.txt

az storage blob upload \
--account-name st123 \
--container-name container01 \
--name f001.txt \
--file f001.txt \
--account-key $key

az storage blob list \
--account-name st123 \
--container-name container01 \
--output table \
--account-key $key

 

 

-- 6. データベースとフォルダの作成

-- 6.1 データベース作成
CONNECT DATABASE admin;

DROP DATABASE db06 cascade;

CREATE OR REPLACE DATABASE db06 'description of db06'
VCS OFF
CHARSET UNICODE
AUTHENTICATION LOCAL
ODBC AUTHENTICATION NORMAL
CHECK_VIEW_RESTRICTIONS ALWAYS
;

-- 6.2 フォルダ作成
CONNECT DATABASE db06;

CREATE FOLDER '/01ds'  DESCRIPTION 'description of folder01';
CREATE FOLDER '/02bv'  DESCRIPTION 'description of folder02';
CREATE FOLDER '/03iv'  DESCRIPTION 'description of folder03';

 


-- 7. データソース作成


Base URLはBlobのSASを使用する

 

CREATE OR REPLACE DATASOURCE DF ds01
    FOLDER = '/01ds'
    ROUTE HTTP 'http.CommonsHttpClientConnection,120000' GET 'https://st123.blob.core.windows.net/container01/f001.txt?sp=r&st=2023-04-22T12:39:24Z&se=2023-04-22T20:39:24Z&spr=https&sv=2021-12-02&sr=b&sig=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
    HEADERS (
        'x-ms-version'='2018-03-28'
    )
    AUTHENTICATION OAUTH20 ( 
      ACCESSTOKEN = 'XXXXX' ENCRYPTED
      REQUESTSIGNINGMETHOD = URL
      AUTHENTICATION_GRANT = CODE_GRANT
      TOKENENDPOINTURL = 'https://login.microsoftonline.com/22222222-2222-2222-2222-222222222222/oauth2/v2.0/token'
      CLIENTIDENTIFIER = '11111111-1111-1111-1111-111111111111'
      CLIENTSECRET = 'XXXXX' ENCRYPTED
      ACCESSTOKENEXPIRESIN = 4108
      AUTHORIZATIONSERVERURL = 'https://login.microsoftonline.com/22222222-2222-2222-2222-222222222222/oauth2/v2.0/authorize'
      REDIRECTIONENDPOINTURL = DEFAULT
      SCOPES = 'api://11111111-1111-1111-1111-111111111111/test123'
      SETSTATEPARAMETER = true
    )
    PROXY OFF
    COLUMNDELIMITER = ','
    ENDOFLINEDELIMITER = '\n'
    HEADER = TRUE;

 


-- 8. ラッパー作成


CREATE OR REPLACE WRAPPER DF ds01
    FOLDER = '/02bv'
    DATASOURCENAME=ds01
    OUTPUTSCHEMA (
        "Column0" = 'Column0',
        "Column1" = 'Column1',
        "Column2" = 'Column2'
    );


-- 9. 基本ビュー作成

CREATE OR REPLACE TABLE b_tab1 I18N jp (
        "Column0":text,
        "Column1":text,
        "Column2":text
    )
    FOLDER = '/02bv'
    CACHE OFF
    TIMETOLIVEINCACHE DEFAULT
    ADD SEARCHMETHOD ds01(
        I18N jp
        CONSTRAINTS (
             ADD "Column0" NOS ZERO ()
             ADD "Column1" NOS ZERO ()
             ADD "Column2" NOS ZERO ()
        )
        OUTPUTLIST ("Column0", "Column1", "Column2"
        )
        WRAPPER (df ds01)
    );

 

-- 10. インターフェイスビュー作成

CREATE OR REPLACE INTERFACE VIEW i_tab1 (
        "Column0":text,
        "Column1":text,
        "Column2":text
    )
    SET IMPLEMENTATION b_tab1
    FOLDER = '/03iv';

 

-- 11. 動作確認

 

SELECT * FROM db06.b_tab1 CONTEXT('cache_wait_for_load' = 'true') TRACE

 

SELECT * FROM db06.i_tab1 CONTEXT('cache_wait_for_load' = 'true') TRACE

 

-- 12. クリーンアップ

アプリを削除


az storage account delete \
--resource-group rg9999999 \
--name st123 \
--yes


az group list
az group delete \
--name rg9999999 \
--yes