yy16ki’s diary

Alteryx Write Data In-DB Toolを用いた新規テーブル作成②

本記事は,「Alteryx Write Data In-DB Toolを用いた新規テーブル作成①(Redshift環境構築~Alteryxからの接続)」の続きにあたります.Write Data In-DB ToolをRedshiftで使用する際に,AWSコンソール側での見え方やこのツールの挙動自体を記した記事は中々見当たらなかったため,前回構築した環境にて下記の内容を確認していきます.

1.  Write Data In-DB Toolの概要

1.1. オプション

ツールで使用可能なオプションは下記の5つです.
1. 新規テーブルを作成する
2. 既存のものを付加する
3. データを削除して付加する
4. テーブルを上書きする(ドロップ)
5. 一時テーブルを作成する

1.2. オプションごとに必要な権限

上述のオプションを実行する際は,Alteryxで接続したユーザーが操作対象のテーブルに対して,適切な権限を持つ必要があります.それぞれ下記の権限が必要となります.

f:id:yy16ki:20220115163440p:plain
オプションと実行に必要な権限
以降の内容は,この検証となります.

2.  管理者ユーザーでのツール使用

権限周りの前に,ツールの挙動・AWSコンソール上からの見え方を確認しておきます.まずは,管理者権限で以降の処理を試します.

2.1. 新規テーブルの作成

管理者権限でAlteyxからRedshiftに接続し,デフォルトで用意されている「category」テーブルに接続します.テーブルの内容は下記の通りとなっています.

f:id:yy16ki:20220111225525p:plain
categoryテーブル

このテーブルに対し,下記の処理を実行します.③のWrite Data In-DB Toolにて,出力モードを「新しいテーブルを作成する」とし,集約後のデータを書き出しています.

f:id:yy16ki:20220111225919p:plain
ワークフロー:新規テーブルの作成

f:id:yy16ki:20220111230200p:plain
Write Data In-DB Toolの設定

フロー実行後,Redshift上でテーブルを確認します.クエリエディタで下記の処理を実行します.

SELECT DISTINCT tablename 
FROM pg_table_def 
WHERE schemaname = 'public' AND tablename NOT LIKE'%_pkey' 
ORDER BY tablename; 

クエリ結果画面にて,Alteryxで作成した「aws_user_test1」テーブルを確認できました.

f:id:yy16ki:20220111233732p:plain
テーブルの確認

f:id:yy16ki:20220111234650p:plain
データの確認

今回は特に設定などしていませんが,デフォルトで作成される「public」スキーマ上にテーブルが作成されるようです.

2.2. テーブルの更新

先程作成した「aws_user_test1」テーブルの内容を更新します.「catgroup」が「Sports」の行を削除するように変更してみます.ワークフローを下記の通り,Write Data In-DB Toolの出力モードを「データを削除して付加する」に変更し,データを書き出します.

f:id:yy16ki:20220111235241p:plain
ワークフロー:テーブルの更新
実行後,Redshift上でテーブルを確認すると下記の通り,「catgroup」が「Sports」を除くデータにテーブルが変更されていました.
f:id:yy16ki:20220111235808p:plain
データの確認
Alteryx上のツール実行時メッセージを確認すると,下記の表示となっており,公式ドキュメントの記載通り「元あったデータをすべて削除→ツールのインプットとなるデータを追加する」という処理が実行されていることが見てとれました.
f:id:yy16ki:20220112000340p:plain
Alteryx:ツール実行時メッセージ
なお,このオプション実行時は,下図赤枠内のさらに詳細な設定を選択可能となります. いずれもデータ付加時に,ツールのインプットデータの列構成が更新対象テーブルと異なる場合に,どのような処理とするかを制御可能です.こちらは公式ドキュメントに詳細の記載があるので,そちらをご参照ください.
f:id:yy16ki:20220112000923p:plain
詳細設定

2.3. テーブルの上書き

次に「テーブルを上書きする(ドロップ)」オプションを実行して見ます.「category」を接続元とし,下記のフローを実行します.ここでは,上書き対象のテーブル名として先程作成した「aws_user_test1」テーブルとしています.こちらは問題無く実行されます.

f:id:yy16ki:20220112190322p:plain
ワークフロー:テーブルの上書き
f:id:yy16ki:20220112190854p:plain
Alteryx:ツール実行時メッセージ
処理としては,「元あったテーブルを削除」する処理が実行されているので,作成済みのテーブルと異なるテーブル構造で同じ名称を指定しても,新たなテーブルが作成されることが見てとれました.作成したテーブルの構造自体を変更したい場合は,このツールが使えそうですが,既存テーブルをドロップすることになるため,誤って既存の他テーブルを指定しないように注意する必要がありそうです.

2.3. 一時テーブルの作成

データ加工には必要だが,新規でテーブルを作成するほどの必要が無い場合はこのオプションが便利です.「新規テーブルの作成」と同様のフローでツールオプションを「一時テーブルを作成する」に変更し,実行するとツールの結果ウィンドウに下記のようなメッセージが表示されます.

f:id:yy16ki:20220115113701p:plain
ワークフロー:「一時テーブルを作成する」オプションの実行
ツール側で機械的に付与された名称でテーブルが作成されていることがわかります.一時テーブルですので,ツール実行後にクエリエディタで確認しても,このテーブルは確認できません.
このオプションは,「データストリームイン」ツールでも使用でき,In DB以外のツールで加工したデータをDB上で扱う際に便利です.

3.  一般ユーザーでのツール使用

3.1 新規ユーザーの作成

先程はすべての権限をもつ管理者ユーザーでの実行だったので,各種オプション実行に必要な権限を確認するために,一般ユーザーを作成します.Redshift上のクエリエディタに管理者ユーザーで接続し,下記の通りユーザーを作成します.

CREATE USER test_user PASSWORD 'Testuser1' ;

一般ユーザーの「public」スキーマ上の各テーブルに対する,デフォルトの権限は以下の通りです.管理者ユーザーである「aws_user」はすべての権限を持ちますが,先程作成した「test_user」は,デフォルトで下記の権限のうちでは,「public」スキーマに対するusage,create権限を持ちます.

f:id:yy16ki:20220112003525p:plain
ユーザーごとのテーブルに対する権限

3.2 一般ユーザーでの接続

  • SELECT権限
    前回の記事の手順通り,先程作成した一般ユーザー「test_user」でRedshiftに接続します.「category」テーブルに接続し,下記のフローを実行します.デフォルトでは,テーブルに対するSELECT権限がないので,Alteryx上では閲覧ツールによる参照が拒否されました.
    f:id:yy16ki:20220112004721p:plain
    ワークフロー:一般ユーザーのデフォルト権限での実行結果
    Redshift上で,下記の通り「category」テーブルに対するSELECT権限を付与します.
CREATE USER test_user PASSWORD 'Testuser1' ;

f:id:yy16ki:20220112005409p:plain
test_userへのcategoryテーブルに対するSELECT権限の付与
SELECT権限を付与した「category」テーブルと,未付与の「aws_user_test1」テーブルへの参照を実施します.結果は下図の通り,SELECT権限を付与した「category」テーブルは閲覧でき,SELECT権限の無い「aws_user_test1」テーブルは参照できないことが確認できました.
f:id:yy16ki:20220112005800p:plain
ワークフロー:categoryテーブルへのSELECT権限付与後の実行結果

  • CREATE権限
    続いて,一般ユーザーで新規テーブル作成を行います.デフォルトでは,「public」スキーマへのCREATE権限が付与されているので,問題無く実行されます.
    f:id:yy16ki:20220112183123p:plain
    ワークフロー:新規テーブルの作成(一般ユーザー)
    f:id:yy16ki:20220114185404p:plain
    一般ユーザーのデフォルト権限で作成したテーブル
    一般ユーザーで作成したこのテーブルに対する各種権限を確かめます.結果は下図の通り,管理者ユーザーはもちろんとして,テーブルを作成した一般ユーザーは一覧にしているすべての権限を持つことが確認できました.
    f:id:yy16ki:20220112183618p:plain
    一般ユーザーで作成したテーブルのユーザーごと各種権限
    ちなみに,参照権限の無いテーブルを使用し,新規テーブルを作成しようとした場合,そもそも閲覧権限がないため,実行エラーとなります.
  • INSERT権限DELETE権限
    ツールのプションでINSERTまたはDELETE処理が必要と考えられるものは下記の2オプションです.これを確認します.
    ・ 既存のものを付加する
    ・データを削除して付加する
    一般ユーザーで,先程作成した新規テーブルに対し,下記のフローを実行します.
    f:id:yy16ki:20220114185959p:plain
    ワークフロー:「既存のものを付加する」オプションの実行
    ここでは,「既存のものを付加する」オプションを実行し,下記のデータを追加しています.
catname count
TEST 1

ツール実行後,AWSのクエリエディタで確認すると追加されていることが確認できます.

SELECT *
FROM test_user_test
WHERE catname = 'TEST' ;

f:id:yy16ki:20220114190752p:plain
追加されたデータ

続いて同じテーブルを対象に上記のフローで,WriteData In DBツールのオプションを「データを削除して付加する」に変更し実行し,下記のデータを追加してみます.

catname count
delete 1

こちらも問題無く実行され,データも指定したデータのみになっていることがマネジメントコンソール上からも確認できました.

f:id:yy16ki:20220114192448p:plain
オプション「データを削除して付加する」実行後

それでは,権限を削除して確認を行います.
一般ユーザーの作成したこのテーブルに対するDELETE権限を下記の通り削除します.

REVOKE DELETE ON test_user_test FROM test_user ;

その後,再度「データを削除して付加する」オプションを実行すると下記の通りエラーとなります.

f:id:yy16ki:20220114193016p:plain
ワークフロー:「データを削除して付加する」オプションの実行
この状態では,オプションを「既存のものを付加する」に変更しても問題無く実行されます.
クエリエディタで下記を実行し「INSERT権限」も削除すると,「既存のものを付加する」オプションも実行できなくなります.

REVOKE INSERT ON test_user_test FROM test_user ;
  • DROP権限
    先程までのクエリを実行したときの一般ユーザーの権限は下記の通りです.
    f:id:yy16ki:20220114194412p:plain
    テストテーブルへの権限
    オプション「テーブルを上書きする(ドロップ)」では,「テーブルのドロップ→新規テーブルの作成」の処理を実行するので,このまま一般ユーザーで実行できるはずです.下記のフローを実行します.
    f:id:yy16ki:20220114194830p:plain
    ワークフロー:「テーブルを上書きする(ドロップ)」オプションの実行
    このフローは問題無く実行されます.また,ここで新規テーブルとして作成されるので,再度同じ名称のテーブル権限を確認すると下記の通り,すべての権限が付与されていることに注意してください.
    f:id:yy16ki:20220114195046p:plain
    テーブルを上書きする(ドロップ)後の権限
    最後に,一般ユーザーで作成したテーブルの所有者を管理者ユーザー(別のユーザー)に移譲します.この状態のままツールを実行するとエラーとなります.
ALTER TABLE test_user_test OWNER TO test_user;

所有者の権限移譲後,管理者ユーザーで下記の通り,一般ユーザーのドロップ権限のみを付与し,ツールを実行すると,ワークフローもエラー無く実行されることが確認できました.

GRANT DROP ON test_user_test TO test_user ;

4.  public以外のスキーマの使用

次に,public以外のスキーマに属するテーブルを使用した場合の一部処理を確認します.

4.1 スキーマの作成

下記の通り,スキーマを作成し,一般ユーザーである「test_user」に権限を付与します.

CREATE SCHEMA test_schema AUTHORIZATION test_user ;

作成した「test_schema」にテスト用テーブルを作成します.

CREATE TABLE test_schema.test_tbl (id int) ;
INSERT INTO test_schema.test_tbl VALUES
(1),
(2),
(3),
(4) ;

このスキーマとテーブルに対する権限は下記の通りです.

f:id:yy16ki:20220112194700p:plain
新規スキーマへの権限

4.2 publicスキーマ以外に属するテーブル接続とテーブル作成

Alteryxから管理者ユーザーで,「test_schema」上の「test_tbl」に接続し下記の通りフローを実行します.

f:id:yy16ki:20220112195232p:plain
ワークフロー:テストスキーマへの接続と新規テーブル作成
フロー実行後,AWSのクエリエディタでテーブルの定義を確認します.

SELECT * FROM pg_table_def WHERE tablename = 'aws_user_test2' ;

f:id:yy16ki:20220115120439p:plain
テーブル定義
publicスキーマ以外のデータのみを使用したとしても,Alteryxからテーブルを作成する場合は,publicスキーマが指定されテーブルが作成されるようです.

5.  データ型

最後に,Alteryx側で新規に列を追加した場合,Redshift上ではどのようなデータ型に変換されるのかを見ていきます.
「テストスキーマへの接続と新規テーブル作成」にて使用したワークフローのフォーミュラツールのオプションを下記の通りとします.

f:id:yy16ki:20220115123802p:plain
フォーミュラツールの設定
この実行結果より作成された5列のデータ型をRedshift上で確認すると下記の通りとなっていました.
f:id:yy16ki:20220115123941p:plain
Type列がRedshift上でのデータ型(columnはAlteryxのデータ型名)
Alteryxのデータ型からそれぞれ自動的に変換してくれるようです.ただし,可変長文字列や実数のスケールは,ツールインプットを格納可能な最大値を設定してくれるようです.
試しに,このテーブルに下記のデータを追加してみます.

id v_wstring int64 double bool
5 ABCDEFGHIJ 1 1.0 TRUE

フローは下記の通りです.

f:id:yy16ki:20220115125818p:plain
ワークフロー:「既存のものを付加する」オプションの実行
すると下記のようなエラーが出力されます.

Error: データ書込In-DB (20): PreSQLを実行: "INSERT INTO "datatype"WITH "Tool18_42e7" AS (SELECT * FROM "AYX2201155ffd41cf519f7c808d2a3b4f2e5f3b50")  SELECT "id", "v_wstr..." : [Amazon][Amazon Redshift] (30) Error occurred while trying to execute a query: [SQLState XX000] ERROR:  Value too long for character type
DETAIL:  
  -----------------------------------------------
  error:  Value too long for character type
  code:      8001
  context:   Value too long for type character varying(9)
  query:     1620
  location:  string.cpp:192
  process:   query0_127_1620 [pid=10621]
  -----------------------------------------------

新規テーブル作成時に,そのデータから最適なスケールを決めてくれるので,後々その容量を上回るデータを追加する場合は,データ構造の変更が必要なようです.

Alteryx Write Data In-DB Toolを用いた新規テーブル作成①(Redshift環境構築~Alteryxからの接続)

AlteryxのIn-DB機能にて使用可能なWrite Data In-DB Tool(データ書き込みIn-DBツール)を用いて,データベース上にテーブルを作成する機会がありました.ツールの使用に際して,いくつか確認・調査の必要があり,検証用の環境を用意する必要があったので,一連の流れを記事として残しておくこととしました.本記事では,Redshiftのクラスター構築からAlteryx経由での接続・データ表示までの手順を記載しています.実際にWrite Data In-DB Toolを使用する工程は,次の記事に記載する予定です.

本記事の内容は下記の通りです.

1. Alteryx

1.1. 概要

本題に入る前に,Alteryx(アルタリクス)について簡単に説明を.

Alteryxを一言でいうなれば,GUI版のSQLというとイメージしやすいでしょうか.データの準備,クレンジングから一部分析までもをワンストップで実施可能なツールです.SQLはデータベース上のデータを操作する言語ですが,Alteryxはデータベースのみならず,現場でよく用いられるようなExcelCSVファイルといった様々なインプットデータに対応し,その加工を柔軟かつ強力にサポートします.

実際にAlteryxでデータを操作する際は,「ワークフロー」というものを作成します.ワークフロー内に,特定の機能を持つアイコンを配置し,データの加工を行っていきます.SQLやその他プログラミング言語では,実際に「コード」にあたる箇所を,このワークフローが代替しており,各種アイコンの意味がわかれば,プログラミング言語に習熟することなくその成果物や処理を再現可能なまま共有することが可能となります.

1.2. In-DB機能

alteryxには,実行環境のメモリ上ではなく,直接データベース上で処理を実行可能な機能が備わっています.これをIn-DBといい,通常よりも使用可能な処理(ツール)は限定されますが,充分に強力なデータ加工をGUIで実行可能です.今回,仕様の調査対象となる,「Write Data In-DB Tool」はその名の通りIn-DB機能となります.

alteryxのIn-DB機能では,本記事で扱うAmazon Redshiftをはじめとした主要なデータベース/データウェアハウスと連携することが可能です.詳細は公式のドキュメントをご参照ください.

help.alteryx.com

 

Tableau等のBIツールでデータの可視化をする際は,元データをある程度可視化しやすい形まで整形する必要がある場合が多々あるかと思います.BIツール側でもデータの加工自体は可能ですが,元データからの加工処理が複雑な場合には,alteryxのようにデータ加工に特化したツールを用いる場合もあるでしょう.

他のBIツールもデータベースと連携可能な場合が多いので,In-DB機能を通すことでほぼノンコーディングでデータ加工~可視化までを容易に実施可能となります.

1.3. Write Data In-DB Tool

In-DB機能で使用可能なツールの一つに,データベースに直接テーブルを作成可能なWrite Data In-DB Toolがあります.

このツールを使用することで,Alteryxで加工済みのデータを新規テーブルとしてデータベース上に作成・更新といった処理を実行可能となります.ツールの詳細は下記の公式ドキュメントをご参照ください.

help.alteryx.com

2. データ連携の流れ

今回は,Amazon RedshiftをIn-DB機能で接続する対象とし,Write Data In-DB Toolの仕様を確認します.Redshiftとの連携イメージは下図の通りです.

※本記事では,Alteryxのツール仕様の確認が主目的のため,Redshift側の構成はほぼデフォルト(最低限)です.

f:id:yy16ki:20220111131651p:plain

連携のイメージ

3. Redshift環境の構築

3.1. クラスターの作成

Amazon Redshiftは,Amazon Web ServicesAWS)が提供する,データウェアハウス(DWH)です。Redshiftは「PostgreSQL」がベースとなって開発されており,クラスターと呼ばれる単位での構成となっています.作成手順は下記通りです.

AWSマネジメントコンソールよりRedshiftを検索し,「クラスターを作成」を押下します.

f:id:yy16ki:20220110130639p:plain

クラスターの作成①

クラスターの名称,用途を選択します.今回は検証用のため「無料トライアル」を選択します.

f:id:yy16ki:20220110130852p:plain

クラスターの作成②

③管理者名,管理者パスワードを設定します.

f:id:yy16ki:20220110131239p:plain

クラスターの作成③

最後に「クラスターを作成」を押下すると,設定した内容でクラスターが作成されます.

デフォルトの設定では,クラスター作成とあわせて「dev」という名前のデータベースが作成され,サンプルデータがインポートされます.今回はそのデータを使用していくこととします.

3.2. 外部接続の許可

クラスターが作成できたら,クラスターの選択画面より対象のクラスターを選択します.

f:id:yy16ki:20220110132359p:plain

作成されたクラスターの選択

作成されたクラスターについて,デフォルトでは,パブリックアクセスが「無効」となっているのでこの設定を「有効」とし,Alteryxから接続可能なように変更します.

f:id:yy16ki:20220110132706p:plain

パブリックアクセスの有効化①

パブリックアクセスが有効化されると,プロパティタブの「ネットワークとセキュリティの設定」欄の「パブリックアクセス可能」が「有効」となります.

f:id:yy16ki:20220110133042p:plain

パブリックアクセスの有効化②

4. Alteryxの準備

手元の端末にAlteryxを実行可能な環境を用意します.ツールを使用するには,ライセンスの購入が必要ですが,Alteryxを使用したことのない人や学生等は,下記の公式サイトより無料トライアルを活用できます.なお,無料トライアルの期間が終了すると,ライセンスの認証が切れ,Alteryxを使用することはできなくなりますが,自動的に料金が発生するようなことはありません.

www.alteryx.com

インストールとライセンスの認証が完了すると,実際にツールを使用可能となります.今回調査対象となるIn-DBに関するツールは,画面上部の「ツールパレット」にて「インデータベース」タブを選択することで一覧が表示されます.

f:id:yy16ki:20220110012226p:plain

インデータベースアイコン

5. Redshiftへの接続

5.1. 接続方法

新規のワークフローを開き,「データ入力ツール」をドラッグアンドドロップします.

f:id:yy16ki:20220110133715p:plain

データ入力ツール

ツールの設定より,データ接続方法として「データソース」を選択します.すると下記のように使用可能なデータソースが一覧化されるので,「Amazon Redshift」のODBC接続を選択します.

f:id:yy16ki:20220110134031p:plain

データソースの選択

下記のようなポップアップが表示されたら,「ODBCアドミニストレーター」を押下します.

f:id:yy16ki:20220110134106p:plain

ODBCアドミニストレーター

「ドライバー」タブを開き,Redshiftのドライバーがインストールされていることを確認します.

f:id:yy16ki:20220110134253p:plain

ドライバーの確認

Redshiftのドライバーのインストールを確認出来たら,「ユーザーDNS」タブを開き,「追加」を押下し,「Amazon Redshift」ドライバーが選択された状態で「完了」を押下します.

 

f:id:yy16ki:20220110135125p:plain

接続の追加

下記のような設定を入力する画面が表示されたら,接続対象となるデータベースの名称・接続するユーザーの情報を入力します.これらの情報はRedshiftのクラスター情報画面から確認できます.

f:id:yy16ki:20220110140034p:plain

接続設定

必要な情報を入力し,画面下「Test」を押下し下記のポップアップが表示されれば,問題無いです.

f:id:yy16ki:20220110140450p:plain

接続の確認

5.2. In-DB接続の管理

続いてIn-DB接続の管理を行います.「接続In-DBツール」をドラッグアンドドロップし,「接続名を作成または選択」から,「接続を管理」を押下します.

f:id:yy16ki:20220110141842p:plain

接続の作成①

「接続の管理」にて,今回は下記の通り接続するユーザーごとの接続を作成します.ひとまず,管理者ユーザーである「awsuser」に関する接続を作成します.

f:id:yy16ki:20220110232111p:plain

接続の作成②

その後,先程作成した接続方法(今回の接続名は「awsuser」)を選択すると,下記の通り,テーブルの選択画面が表示されます.

f:id:yy16ki:20220110232702p:plain

テーブルの選択

試しに「public」スキーマの「category」テーブルを選択し下記の通りフローを実行すると,データの内容を一部確認することができます.

f:id:yy16ki:20220110232905p:plain

フローの実行とデータ確認

6. まとめ

今回は,Redshiftのクラスター構築からAlteryx経由での接続・データ表示までを実施しました.これにより,以降はデータ分析に必要な前処理工程を,Alteryxの強力なデータ加工機能を用いてノンコーディング実施できます.

次の記事では,データ分析に用いるためにAlteryxで加工したデータを新規テーブルとして実際にRedshift上に作成する手順をしながら表記のWrite Data In-DBツールの詳細を確認します.

Tableau Desktop Certified Associate 試験に合格しました

2021年6月にTableau Desktop Certified Associate(CA:旧 Qualified Associate)に(ギリギリで)一発合格することができました.業務経験は無かったので,試験のことを色々と調べる際に,日本語の最新記事があれば嬉しかったので,記事にしようと思いました.これから受験される方の対策の一助になれば幸いです。

試験結果は以下の通りです.

f:id:yy16ki:20210717104053j:plain

試験のスコアレポート

1.試験概要 

  試験の概要については,公式ページを見てもらうことが一番だと思います。

www.tableau.com

 

特徴は以下の通りです.

  • 中級者向け(実務等で経験を積んで受験するイメージ)
  • ビジュアライズして回答する問題が半分程度

試験問題は,知識問題と上述のデータから図表を作成し,求められている数値を選択する問題の2種類あります.それぞれ半分程度の出題頻度ですが,ビジュアライズ問題の方が配点が高いので,いかにここで得点できるかが合否の分かれ目となります.

2.試験対策

2.1.勉強の計画

 私の場合ほぼ未経験からのスタートだったので,しっかりと計画を立てておく必要がありました.しかし,公式が公開している試験ガイドが丁寧で実際の試験でもこの内容からまんべんなく出題された印象なので,この内容を網羅する形で勉強することで試験範囲については問題ないように思います. 

 次に,試験範囲の内容を「どこまで深く知っておくべきか」という点です.周りにこの認定の取得者がいればその方に聞くのが一番ですが,そのような環境では無かったため,以下の参考サイトで記載があるように「実際にTbaleauを操作しながら他人に説明できる」レベルを目指しました.

 実際に受験した印象としても,やはり中級試験ということで,試験範囲の内容については深い知識・実装力が試されたと感じています.加えて制限時間もあるので,問題で問われていることを理解できた後は,すぐ手が動く状態まで持っていくのがよいでしょう.

data-viz-lab.com

2.2.使用教材

 上述の対策のために私はUdemyの以下の講座を購入し,使用しました.

www.udemy.com

 

この講座は,先の試験ガイドの内容に沿って初心者でもわかりやすいように構成されており,試験範囲の内容を網羅するという点で優れていると考えています.さらに,この講座には,模擬試験が用意されています.2021年6月時点で,この講座を購入すると3回分の模擬試験が含まれます.講座の内容を理解し,自身で実装できるか確認することができる内容のため,非常に助かりました.英語に抵抗がない方には本当におすすめできます.

3.最低限押さえておくポイント

 合格には試験範囲を網羅する必要がありますが,試験を受けてみて,その中でも特に押さえておくべきと感じたポイントを以下に記載します.

  • Tableauの概念の理解
    - メジャー・ディメンション
    - LOD
  • Tableau内の実行順序
  • データの準備
    - 各種結合の種類
    - 最適な結合方法の選択(データの粒度に注意できるようにする)
  • 図の作成と解釈
    - ヒストグラム
    - ブレットグラフ
    - 散布図
    - 箱ひげ図
  • 簡易表計算の作成
  • Tableauを用いた分析
    - 傾向線の作成と解釈([線形]、[対数]、[指数]、[多項]、[累乗] )
    - 予測 

 Tableauの概念に関しては,基礎的なメジャー・ディメンションの理解は当然として,LOD表現の理解も求められます.慣れるまでは難しく感じますが,LODの概念が深まるとTableauが内部でデータをどのように集約しているかを追えるようになり,自然とビジュアライズ問題全体の対策につながります.また,FIXEDについては計算を作成する必要がある問題も出題されました.

 データ準備については,問題文中で,「〇〇結合して答えなさい」などの指示があるわけではないので,自身でデータの内容を理解し,最適な結合方法を選択できるようにしておく必要があります.Tableauでは,使用するデータ間の粒度ごとに最適な結合方法が存在するためしっかりと押さえておく必要があります.

 図の作成と分析については,棒グラフのような基本的な図は前提として,やや統計学の知識を要する問題が出題されました.各種図の作成方法・解釈に加えて,用語の理解(ビン・四分位範囲・決定係数など)をしておく必要があります.

4.当日の注意

4.1.試験環境

 試験中の環境については,他のブログ等でもよく述べられているので多く記載はしませんが,以下基本的な注意事項です.

  • 試験は自身の端末からWindowsの仮想環境に接続し実施
    (接続は試験官が対応してくれます.)
  • Tableau Desktopの言語が英語仕様になっている

  •  日本語で受験する場合,問題文がわかりづらい 

最後の点は特に注意が必要です.もともと英語の問題文を機械的に訳したような文章となっているため,問題で求めていることが難解な問も存在しました.英語の問題文もあわせて表示されるので,難解な文章に遭遇した場合,早々に英語で理解するように努める方が確実だと考えられます.

4.2.難易度

  実際の難易度についてです.試験前は特にこの部分が不安な点であったため参考になれば幸いです.上述の通り試験問題は知識問題とビジュアライズ問題にわかれており,それぞれ以下の印象です.

  • 知識問題
     非常に難しいと感じました.上記で紹介したUdemyの講座では扱っていない内容も多く出題されました.試験中は,Googleで検索可能とはいえ制限時間内ではすべて調べ上げることも難しいため,もっと知識をつけて受験してもよかったと感じました.
  • ビジュアライズ問題
     知識問題と比べると簡単な印象でした.使用データが初見のものになるので,ざっくりと「データの内容」「問題で何を問われているか」を抑えることができれば,複雑な処理は要しませんでした.
    ただし,試験範囲からまんべんなく出題されるので,方法を調べながら回答することは知識問題の難易度も相まって難しいため,各種図やLODを用いた計算の作成はすぐ手が動く状態にしておく必要があります.

知識問題が難しいことに加え,ビジュアライズ問題の方が配点が高いため,ビジュアライズ問題は完答し,余った時間で知識問題の不明点を調べるという方針がよいと思います.

5.まとめ

 以上が,Tableau Desktop Certified Associate を受験してみてのレポートになりました.(すごく当たり前のことばかりのような気がしますが...)合格に向けた対策をまとめると以下の通りです。

  • 試験ガイドに記載の各項目を抑える形で計画を立てる
  • 試験範囲の手法を空で実施できるように練習しておく
  • ビジュアライズ問題の配点が高いので,得点源とし完答を目指す
  • 難易度の高い知識問題は余った時間で可能な限りGoogle検索する

丁寧に各項目を押さえていけば,公式の言う「推奨される製品使用経験: 5 か月以上」など気にする必要もありません.この記事の内容がこれから受験される方にとって,少しでも助けになりましたら幸いです!!

 

ggplot2で地図を描く

Rで地図上にプロットをする必要があったのでその方法のメモです.
ggplot2のmap_data()を使えば地図データをggplotで扱いやすい形式に 変換して返してくれるので,
あとはプロットすれば簡単にきれいな地図を描画できます!

パッケージの読み込み

library(ggplot2)
packageVersion("ggplot2")

プロット

World_Map<-map_data("world")
values <- data.frame(id=factor(unique(World_Map$group)))
positions <- data.frame(id=factor(World_Map$group),
                        x= World_Map$long,  y =World_Map$lat)
ggplot(values) +
  geom_map(aes(map_id=id),map=positions) + 
  xlim(c(120,180))+ylim(c(10,50))

f:id:yy16ki:20210310230042p:plain

地図データはmapsというパッケージから 読み込んでおり,map_data()でggplot`用に変換という流れです. 変換後のデータは次のようになっています.

head(World_Map)

項目groupが同じデータが一つのポリゴンの情報となっています.

参考文献

https://ggplot2.tidyverse.org/reference/geom_map.html