はじめに
こんにちは、積立お兄さんです。
大企業新卒3年目のAlteryx初心者です。
ひょんなことから「365日後にPredictive Masterになる!」という目標を掲げて、公式のWeekly Challengeにコツコツ挑戦しています。
この記事では、Alteryx歴3か月の平社員が、実務で生かせそうなノーコード分析力をどうやって身につけていくかを記録&共有していきます。
- 目標:ETLツールを自在に使いこなせるようになる
- 対象読者:Alteryxを始めたばかりの方/Weekly Challengeの解説が欲しい方
今回のチャレンジ:Weekly Challenge #008
先に白状いたしますが、今回のチャレンジは自力では解けませんでした。
ACEの方のものをもろパクリして作成しております。ですが、内容はしっかりと理解して作成したため、その解説を行っていこうと思います。
- タイトル:[Weekly Challenge #008:三角、三角、三角.....] LINK
- レベル感:中級者向け(個人的には上級)
- ゴール:入力では16点の座標が準備されている。これを使用して、516個のユニークな三角形を空間ツールを使用して描画する。
- 入力
- 出力
解いた流れと使用ツール
ワークフロー全体
処理の手順と解説
- レコードIDツール :各座標にラベル付の用途でindexの列を作成。
- フィールド付加ツール:三角形を構成する3点の内、2点目を選択する。各1点目に対して2点目16点(16*16=256)の合計256パターンの行が完成する。
- フィルターツール:フィールド付加ツールの出力段階では、2つの点が同じ点のパターンが存在してしまう。こうなると三角形が作成できないので、それらを除外する必要がある。レコードIDツールでindexを付与しているため、各行に対して同じ点を付与しないように[RecordID_1] < [Record_2]としている。こうすることで、点1と点2、点2と点3のように2点が重複しないようになる。
- フィールド付加ツール:2と同様の考えで3点目を選択する。
- フィルターツール :3と同様の考えで、各点が重複しないようにする。
- フィルターツール:重複のない3点の座標が手に入ったが、まだ考えるべきことがある。それは、3点すべてが1直線上にある場合に三角形が作成できないという点である。よって、3点の座標を用いて3角形の面積を計算し、誤差含めて0.001より多きもののみ採用するようにした。
計算の公式は以下のものを使用している(引用元:https://univ-juken.com/vector-sankakkei)
高校数学で学んだベクトルの計算です。忘れているなぁ...
7. セレクトツール:必要な列以外を消す。また、この後のフローで各列の値を結合するので、文字列型に変換しておく。
8. フォーミュラツール:以下のような形に変換する。
'{ "type": "Polygon", "coordinates": [ [ [' + [Longitude_1] +','+[Latitude_1]+'], ['+[Longitude_2]+','+[Latitude_2]+'],['+[Longitude_3]+','+[Latitude_3]+'], ['+[Longitude_1] +','+[Latitude_1]+'] ] ] }'
上記の式は、GeoJSON形式で三角形のポリゴンを記述している文字列を作成する式です。
✅ GeoJSONとは?
- 地理空間データを表すための標準的なJSON形式
- Alteryxでは、このGeoJSON文字列を ST_CreateSpatialObj() などでSpatialオブジェクトに変換可能です
✅ 各パーツの説明
部分 | 意味 |
---|---|
"type": "Polygon" | ジオメトリの種類 → 「ポリゴン(多角形)」 |
"coordinates": [[...]] | 多角形の頂点の座標リスト |
[Longitude_1], [Latitude_1] | 1つ目の点(経度, 緯度) |
[Longitude_2], [Latitude_2] | 2つ目の点 |
[Longitude_3], [Latitude_3] | 3つ目の点 |
[Longitude_1], [Latitude_1](再度) | 始点と同じ座標で終点を閉じる → ポリゴンの必須要件! |
つまり、三角形の3点を指定し、始点と終点を一致させて1つのポリゴンを閉じている構造です。
9. セレクトツール:8で作成した列をSpetialObj型に変換する。
詰まったポイントとその解決
-
問題1:そもそも描画ってどうやんの!?
→ まずそもそもこれ。インタラクティブレッスンで、空間ツールを使用して描画する方法を見た気がするが、忘れてしまっていた。一方で、ACEの方のものを見るとGeoJSONを使用することで描画できる方法を見つけた。これの方が直感的で簡単な気がした(個人の感想)。 -
問題2:数学力の欠如
→ 16点から三角形をたくさん作るときの考え方がわからなかった。これは単純に16点中3点を選んで結べばよい。ただ、1直線状の3点を除く必要がある。
また、ベクトルを用いた三角形の面積の公式は完全に忘れていた。高校数学勉強し直したくなったなぁ。
結果と出力確認
→行が516行あるので、おそらく問題なくできているはず(数えるのは勘弁)。
今日の学び・振り返り
- 新しく覚えたツール:フィールド付加ツール
- 新たな知識1:フィールド付加ツールを使用するとかんたんに2つのデータを連結させることができる。ソースの方は繰り返しで連結させることができる。
- 新たな知識2:GeoJSON形式で書いたものをSpetialOjb型に変換すると、図形を描画することができる。
次回予告
次は【Weekly Challenge #009】に挑戦予定!
図形を描画する方法を学べた。なかなか楽しかったが個人的には激むず。
自力でやられた方々すごいなぁ。
今日もお疲れ様でした!
タグ
Alteryx
weekly Challenge
データ分析
Predictive Master
365日チャレンジ
ノーコード