https://note.com/bunsekiya_tech/n/nd1b8c2e31a1f
前提:
Denodo Express インストール、起動済み
-- 1. Snowflakeのセットアップ
brew install --cask snowflake-snowsql
vi .bash_profile
alias snowsql=/Applications/SnowSQL.app/Contents/MacOS/snowsql
. .bash_profile
vi a.csv
111,AAAA
222,BBBB
snowsql -a xxxxxxx.ap-northeast-1.aws -u sf123
create database test;
use database test;
create stage stage01;
create or replace TABLE tab1 (
col1 INT,
col2 VARCHAR(30)
);
put file://a.csv @stage01;
list @stage01;
create warehouse warehouse01;
use warehouse warehouse01;
copy into tab1 from @stage01;
select * from tab1;
!quit;
-- 2. データベースとフォルダの作成
-- 2.1 データベース作成
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
;
-- 2.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';
-- 3. データソース作成
CREATE OR REPLACE DATASOURCE JDBC ds01
FOLDER = '/01ds'
DRIVERCLASSNAME = 'com.snowflake.client.jdbc.SnowflakeDriver'
DATABASEURI = 'jdbc:snowflake://xxxxxxx.ap-northeast-1.aws.snowflakecomputing.com/?db=test&schema=public&warehouse=warehouse01'
USERNAME = 'sf123'
USERPASSWORD = 'XXXXX' ENCRYPTED
CLASSPATH = 'snowflake-1.x'
DATABASENAME = 'snowflake'
DATABASEVERSION = '1_x'
ISOLATIONLEVEL = TRANSACTION_READ_COMMITTED
FETCHSIZE = 1000
VALIDATIONQUERY = 'Select 1'
INITIALSIZE = 4
MAXIDLE = -1
MINIDLE = 0
MAXACTIVE = 20
EXHAUSTEDACTION = 1
TESTONBORROW = true
TESTONRETURN = false
TESTWHILEIDLE = false
TIMEBETWEENEVICTION = -1
NUMTESTPEREVICTION = 3
MINEVICTABLETIME = 1800000
POOLPREPAREDSTATEMENTS = false
MAXOPENPREPAREDSTATEMENTS = -1
PROPERTIES ('application'='Denodo')
DATA_LOAD_CONFIGURATION (
BATCHINSERTSIZE = 500000
USEEXTERNALTABLES (
ONMOVEREAD = false,
ONMOVEWRITE = true
)
);
-- 4. ラッパー作成
CREATE OR REPLACE WRAPPER JDBC "TAB1"
FOLDER = '/02bv'
DATASOURCENAME=ds01
CATALOGNAME='TEST'
SCHEMANAME='PUBLIC' ESCAPE
RELATIONNAME='TAB1'
OUTPUTSCHEMA (
"COL1" = 'COL1' :'java.math.BigDecimal' (OPT) (sourcetypedecimals='0', sourcetypesize='38', description='', sourcetypeid='-5', sourcetypename='NUMBER') SORTABLE,
"COL2" = 'COL2' :'java.lang.String' (OPT) (sourcetypedecimals='0', sourcetypesize='30', description='', sourcetypeid='12', sourcetypename='VARCHAR') SORTABLE
);
-- 5. 基本ビュー作成
CREATE OR REPLACE TABLE b_tab1 I18N jp (
"COL1":decimal,
"COL2":text (sourcetypeid = '12', sourcetypedecimals = '0', sourcetypesize = '30', description = '')
)
FOLDER = '/02bv'
CACHE OFF
TIMETOLIVEINCACHE DEFAULT
ADD SEARCHMETHOD "TAB1"(
I18N jp
CONSTRAINTS (
ADD "COL1" (any) OPT ANY
ADD "COL2" (any) OPT ANY
)
OUTPUTLIST ("COL1", "COL2"
)
WRAPPER (jdbc "TAB1")
);
-- 6. インターフェイスビュー作成
CREATE OR REPLACE INTERFACE VIEW i_tab1 (
"COL1":decimal,
"COL2":text (sourcetypedecimals = '0', sourcetypesize = '30', sourcetypeid = '12')
)
SET IMPLEMENTATION b_tab1
FOLDER = '/03iv';
-- 7. 動作確認
SELECT * FROM db06.b_tab1 CONTEXT('cache_wait_for_load' = 'true') TRACE
SELECT * FROM db06.i_tab1 CONTEXT('cache_wait_for_load' = 'true') TRACE