ForecastFlow予測モデル構築エラー(Internal Error ValueError)の対応方法

ForecastFlowで予測モデルを構築する際、下記のようなエラーが出ることがあります。その対応方法を記述します。

現象
  • 予測モデルを構築する際、Internal ValueErrorのメッセージと共にエラー終了する

    Internal Error ValueError("'application/vnd.ms-excel' is not a valid FileType")

  • エラーの発生するデータセットは、2021年4月以前にアップロードしたデータである。

f:id:gri-blog:20210706150017j:plain

解決策
  • 該当のデータ画面に戻り、該当データをダウンロードし、そのデータを再アップロードし、予測モデルを構築する

f:id:gri-blog:20210706150631j:plain

原因
  • ForecastFlowの機能追加により、ファイルアップロード時のデータ整合性チェック機能が追加された
  • この機能が追加される前にアップロードされたファイルに対し、整合性チェックが機能していないため、予測モデル構築時にエラーが吐き出されてしまう。
お詫び

既存のユーザの方におきましては、お手数をおかけいたしますが、過去にアップロードしたデータをダウンロードし、再アップロード後に予測モデルの構築をお願いいたします。

古幡征史

HPのPCをTPM2.0対応にする

PCの暗号化機能を受け持つTPMチップ、Windows 7にも対応していた古いPCはTPM1.2になっているようだ。メーカーによってはTPM2.0に変更できるようなので、HP製のPCで試してみた。

ちなみに、Windows11の要件の1つでもあるが、今回のPCはその他の要件で対応しなさそうである。

環境

  • HP Prodesk 400 G3 DM
  • Windows 10 Pro 64bit
    • 暗号化未設定

f:id:gri-blog:20210630234433p:plain
作業前 TPM1.2

手順

サポートサイトに記載されている対応機種であることを確認 support.hp.com

https://ftp.hp.com/pub/softpaq/sp81501-82000/sp81900.exe をダウンロードし、実行

f:id:gri-blog:20210630233610p:plain
次へ

f:id:gri-blog:20210630233616p:plain
規約同意後次へ

f:id:gri-blog:20210630233640p:plain
次へ

f:id:gri-blog:20210630233706p:plain
展開されたファイル

TPMConfig64.exeを別の作業フォルダにコピーする。(展開されたフォルダは書き込み不可でエラーになるようだ)

現行のTPMバージョンを調べるため、TPMConfig64.exeを実行し、同じフォルダに作成されるTPMConfig64.logをテキストエディタで開き、バージョンを確認する。

f:id:gri-blog:20210630234114p:plain
最初に展開されたフォルダのFirmwareフォルダから作業フォルダに該当バージョンのbinファイルをコピーする

f:id:gri-blog:20210630234951p:plain
再度、TPMConfig64.exeを実行

f:id:gri-blog:20210630235146p:plain
完了後、再起動

f:id:gri-blog:20210630235235j:plain
再起動後、画面の指示に従ってF1キーを押す

f:id:gri-blog:20210630235421p:plain
再起動完了後 TPM2.0になった

OSS-DB Silver試験 オンライン受験

OSS-DB Silver試験をオンラインで受験しました。オンライン試験は2020年11月末から始まったもので、試験機関はピアソンVUEです。

試験内容には触れず、初めてピアソンVUEを利用する方へ、オンライン試験の様子を残します。

直近で受けたオンライン試験はTableau Desktop Certificateでしたが、それより厳しく監視していると感じました。

試験前

所定の開始時刻より15分くらい前からチェックが始まりました。

PCでのやり取りが始まる前に、スマホにSMSが送られてきて、そこからピアソンのサイトを起動し、身分証やPC周りの写真を撮影して送信する流れです。スマホへの連絡は緊急時くらいかと思い込んでおり、離れたところに置いていたため、SMSに気づかなかったらマズいところでした。

職場の会議室で受けたのですが、

  • 室内のモニター(試験で使うものとは別)に布をかけること(布ないので室外に搬出)
  • 壁に貼ってあるポスター類をはがすこと(これはまあその通り)

という指示があり、

  • 眼鏡をカメラにかざしてチェック(録画・送信機能とかの確認か)
  • 腕まくりして何もつけていないことの確認

といった細かい確認が行われたあと、ようやく始まりました。

試験官からいろいろ指示はあるものの、カタコトでも日本語が通じる方からの指示でしたので対応に困ることはありませんでした。

試験後

回答終了後、すぐに合否が表示されます(Tableauの時のような、アンケート回答の間もなく)

f:id:gri-blog:20210630231501j:plain
1週間後くらいに届いた

tableau refreshextractでデータソースを更新する

Tableau Server / Online 上に存在する抽出データソースを更新する方法の1つです。

公式にもまあ説明はあるのですが、動かすまでにそこそこハマりポイントがありました。 Tableau データ抽出コマンド ライン ユーティリティ - Tableau

動作例

csvファイルでTableau Server上のデータソースを更新しています。※文字列はダミーです

"C:\Program Files\Tableau\Tableau 2021.2\bin\tableau" refreshextract --force-full-refresh --server http://xxx.123.23.34 --username updateuser --password CcHcP7-!Cg>a --project sales --datasource salesdata --original-file "D:\datasource\salesdata.csv"

再度同じものです

"C:\Program Files\Tableau\Tableau 2021.2\bin\tableau" ←tableauに.exeつけたらダメ

refreshextract

--force-full-refresh ←これはなくても動いた

--server http://xxx.123.23.34 ←末尾に/つけたらダメ

--username updateuser ←ダブルクォートで囲んだらダメ

--password CcHcP7-!Cg>a ←ダブルクォートで囲んだらダメ

--project sales ←ダブルクォートで囲んだらダメ

--datasource salesdata ←ダブルクォートで囲んだらダメ

--original-file "D:\datasource\salesdata.csv" ←ダブルクォートが必要

その他わかっていること

  • データソースがCSVの場合は成功したが、json形式は対応してなさそう
  • パブリッシュしたTableau Desktopのバージョンと、refreshextractのバージョンが異なると更新できない

Tableauのファイルが最新バージョンで開かれるようにする

Tableau Desktop / Prep Builderは異なるメジャーバージョンを1台のPCで共存して使うことができますが、ファイル(twb/twbx/tfl/tflxファイル)をダブルクリックしたときに、意図しないバージョンで開いてしまうことがあります。

直近にインストールしたバージョンが優先に設定されてしまうため、旧バージョンのマイナー更新などを行うと、そちらの旧バージョンで開いてしまうのです。

意図したバージョンで開くよう修正する方法をまとめました。Tableauの話ではなく、Windowsの話になります。(Windows10 / Tableau Desktop 2021.2.0 / Tableau Prep Builder 2021.2.1での情報)

手順

コマンドプロンプト(管理者)で下記を実行します。ファイルパスのバージョン数字だけ変えてください。

twbファイル

>ftype Tableau.Workbook.2="C:\Program Files\Tableau\Tableau 2021.2\bin\tableau.exe" "%1"

twbxファイル

>ftype Tableau.PackagedWorkbook.2="C:\Program Files\Tableau\Tableau 2021.2\bin\tableau.exe" "%1"

tflファイル

>ftype Tableau.FlowFile.1="C:\Program Files\Tableau\Tableau Prep Builder 2021.2\Tableau Prep Builder.exe"--tfl "%1"

tflxファイル

>ftype Tableau.FlowExecution.1="C:\Program Files\Tableau\Tableau Prep Builder 2021.2\Tableau Prep Builder.exe" --tflx "%1"

解説

ファイル名拡張子→ファイルタイプ→アプリの順に関連付けされています。

まずファイルタイプを調べます。

>assoc .twb
.twb=Tableau.Workbook.2

.twbにはTableau.Workbook.2というファイルタイプが定義されていました。

次に、関連付けされているアプリを調べます。

>ftype Tableau.Workbook.2
Tableau.Workbook.2="C:\Program Files\Tableau\Tableau 2020.3\bin\tableau.exe" "%1"

Tableau 2020.3に紐づいていました。

これを2021.2に変更します。

>ftype Tableau.Workbook.2="C:\Program Files\Tableau\Tableau 2021.2\bin\tableau.exe" "%1"
Tableau.Workbook.2="C:\Program Files\Tableau\Tableau 2021.2\bin\tableau.exe" "%1"

Tableau DesktopからTreasure Dataに接続する

Tableau Desktopで、データソースにTreasure Dataを使うときに必要な設定をまとめました。(Windows 10 / Tableau Desktop 2021.2.0での情報)

ドライバのダウンロード

Tableau Desktopは、JDBCドライバを介してTreasure Dataに接続するため、JDBCドライバを入手し、 C:\Program Files\Tableau\Drivers に保存します。

下記が最新版ですが、自環境では接続が遅い問題があり、

JDBC Driver — Presto 0.256 Documentation

こちらの記事を参考にバージョン0.179を使っています。

DataGrip w/Presto JDBC DriverがTreasureDataと相性悪い問題 - 半空洞男女関係

https://repo1.maven.org/maven2/com/facebook/presto/presto-jdbc/0.179/presto-jdbc-0.179.jar

設定

各項目を入力します。参考までに自環境の場合を記します。

  • サーバー: api-presto.treasuredata.co.jp
  • ポート: 443
  • カタログ: presto
  • 認証: ユーザー名
  • ユーザ名: Treasure DataのAPIキー(44文字)

f:id:gri-blog:20210630205548p:plain
Prestoを選択

f:id:gri-blog:20210630205241p:plain
各項目を入力※ユーザー名はダミーです

Treasure Data接続のTableauワークブックを安全に共有する

Tableau Desktopで、データソースにTreasure Dataを使った場合、ワークブック(twbファイル)にTreasure Dataのアカウント情報が埋め込まれてしまいます。

アカウント情報を毎回入力する必要がないため、自分だけが使う場合は便利ですが、他の人に共有する場合には不都合な仕様です。

作成した人がアカウント情報を削除し、共有された人が自分のアカウントで利用できる方法をまとめました。(Windows10 / Tableau Desktop 2021.2.0 / Presto JDBC Driver 0.179 での情報)

作成したAさんの手順

twbファイルをテキストエディタで開き、アカウント情報の箇所を探します。データソースが複数の場合は複数あります。Aさんのユーザー名で検索すれば確実です。※下記の文字列はダミーです

<connection authentication='No Authentication' class='presto' dbname='td-presto' one-time-sql='' port='443' schema='sample_datasets' server='api-presto.treasuredata.co.jp' sslmode='require' username='MZ61QyM1lQwU4XJmdWhfn2KNtfAqc0KuPICyL6ZT3vxG' warehouse=''>

username以下のユーザー名部分を削除し(引用符は残す)、上書き保存します。

<connection authentication='No Authentication' class='presto' dbname='td-presto' one-time-sql='' port='443' schema='sample_datasets' server='api-presto.treasuredata.co.jp' sslmode='require' username='' warehouse=''>

共有されたBさんの手順

最初、サーバー名などすべての項目が空欄ですが、いったんスキップするとユーザー名の入力だけで済みます。

f:id:gri-blog:20210630191026p:plain
最初の画面は全項目要求されるのでスキップ

f:id:gri-blog:20210630191115p:plain
接続の編集を選択

f:id:gri-blog:20210630193652p:plain
Bさんのユーザー名だけ入力すればよい状態

接続後、ワークブックを上書き保存すれば、Bさんのアカウント情報が埋め込まれたファイルになります。

Prepでもできるのか

Tableau Prep Builderでも同じようなことを試しましたが、いまのところ不可でした。