先週のチャレンジの回答はこちらで見つけることができます。
このチャレンジは @Sebastian_Chaieb2からのものです。Sebastianさん、ご投稿ありがとうございました!
このチャレンジは、前回のLEGO®データ分析(#213)の上級バージョンです。今回も、同じデータセットを使ってレポートを作成しますが、今回はレポートにレゴモデルの画像を組み込みます!
また、前回と異なり、このチャレンジで開発するアプリでは、ドロップダウンメニューを組み込み、ユーザーがレゴコレクションを選択できるようにします。さらに、リストボックスは、リストから1つまたは複数のリリース年を選択できるようにします。
以下は、このチャレンジを克服するために待ち受けているタスクの内訳です:
1.データセットの統合と表の作成:
データセットを統合して、以下の列を持つ包括的な表を作成します:
2.アプリ開発:
ユニークなコレクション名(Collection Name)を選択可能なドロップダウンメニューを作成します:
ユーザーが、単一のリリース年または複数のリリース年を選択できるリストボックスを設計します:
3.フィルタリングとモデル選択:
アプリユーザーが設定した入力データを使用して表をフィルタリングし、ユーザーが選択したコレクション名と発売年に対応するModel Numberを選択します。
4.画像の自動取得:
'https://brickset.com/search?query=' + tostring([Model Number]) + '&scope=All'
5.最終の出力とPDF表示:
データソース:https://www.kaggle.com/datasets/rtatman/lego-database?resource=download
ダウンロードツールで画像をうまく取得できたときに興奮するのは私だけでしょうか
blobのエラーがどうしても解消できず・・・、うまくいくコレクションとそうでないのがあります。なぜでしょう・・・。
できました!今回のはかなりヘビーな感じですね・・・。
Blobエラーもどうにもならなかったです・・・。一部は何かしら不正な画像になっていそうですね、、、
BlobエラーをPythonツールで解消したものを作成してみました!
Blobエラーを解消するために、落としてきたBlobをそのままファイルに保存し、それをPythonツールで一度読み込み、jpgファイルとして保存することで正常なjpgファイルに変換し、再度読み込むという回りくどい方法で回避してみました。
Pythonコードは以下のとおりです。Pillowというパッケージを使ってみました。
from ayx import Package
Package.installPackages(['Pillow'])
from ayx import Alteryx
from PIL import Image
df = Alteryx.read("#1")
image_list =[]
print(df['DownloadTempFile'])
for img in df['DownloadTempFile']:
if img is not None:
with open(img, mode='rb') as f:
image_file = Image.open(img)
image_file.save(img+'.jpg', quality=95)
image_list.append(img+'.jpg')
else:
image_list.append(None)
df['image_path'] = image_list
Alteryx.write(df,1)
Pythonツールの前の段階で、ダウンロードツールで一時ファイルとして保存し、それをPythonツール内で読み込んだ後、再度jpgとして保存し、最終的に画像ツールで再度読み込み直しています。
基本的にBlobエラーを起こしているのは、Alteryxが使っている画像変換のライブラリかなにかで、何かしら正常ではないjpgだとエラーを起こすのだと思います・・・。