ファイルアップロードにより作成された不要なデータソースを特定し、削除する方法を教えてください。

質問

  • ファイルアップロードにより作成された不要なデータソースを特定し、削除する方法を教えてください。
    • 「不要なデータソース」というのは、「データセットに使用されていないデータソース」という意味です。
  • 以下の対応で事象が解消される可能性があると考えていますが、以下の対応を実施するしかないでしょうか。
    • 既存のデータセットとデータソースをすべて削除
    • データセットの再作成(同時にデータソースが作成される)
      • エラーを発生させずにファイル読み込みされるようデータセット作成中に型を変更する

発生事象

ファイルアップロードによるデータセットの型の推測がうまくいかず NUMBER_PARSE_FAILUREが発生

  • ファイルアップロードによるデータセットの型の推測がうまくいかず NUMBER_PARSE_FAILUREが発生
  • エラーに表示されたフィールドの型を変更することによりエラーにならず、行もスキップされずに読み込めることが分かった

不要なデータソースが複数作成される問題の発生

  • ファイル読み込みのエラーにより複数回試行をおこなったため不要なデータソースが同じデータソース名で複数作成されている
    • 不要データソースを特定し削除するために、データセットの詳細を確認しデータセットに紐づいているデータソースを確認しようとした
    • ファイルアップロードにより作成されたデータセットは以下の describe コマンドが対応しておらず、紐づいているデータソースが特定できない
    • describe-data-set — AWS CLI 2.23.2 Command Reference
  • 参考:AWS CLIを使ってQuickSightのSPICE使用量を計算してみた | DevelopersIO

しかし、実はこのコマンドはファイルアップロードで作成されたデータセットはサポートされていません。

[cloudshell-user@ip-10-130-76-42 ~]$ aws quicksight describe-data-set \
> --aws-account-id 123456789012 \
>   --data-set-id xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

An error occurred (InvalidParameterValueException) when calling the DescribeDataSet operation: The data set type is not supported through API yet
[cloudshell-user@ip-10-130-76-42 ~]$ 

@emikitani さん、ご質問ありがとうございます。

ご説明いただいた通り現状ではDescribeDataSet APIはファイルアップロードのデータセットには対応しておりません。そのため、ファイルアップロードのデータセットに関しては厳密にデータソースの関係を追うのは難しいかと思います。

ただ、幸い今回は特定の名称で重複するデータソースに関するお話だと思いますので、ListDataSources APIを使い、作成・更新のタイムスタンプを見ることで不要なもの(=最後に作成された以外で同名のデータソース)の当たりをつけることはできるかと思います。

以下は特定の名前のデータソースを列挙するCLIの例です。

aws quicksight list-data-sources --aws-account-id 123456789012 | jq -r '.DataSources[] | [.DataSourceId, .Name, .Type, .Status, .CreatedTime, .LastUpdatedTime] | @csv' | grep "データソース名"

※データソース名は通常だとアップロードしたファイル名です。

なお、誤ってデータソースに紐づくデータソースを削除してしまう可能性も排除できないため、念のためお手元のファイルは作業完了まで保持しておいて頂けますようお願いします。

また、このような運用上の課題を防ぐため、ファイルアップロードの代わりにS3データセットをご利用いただくこともご検討ください。

1 Like

ご回答ありがとうございます。

作成・更新のタイムスタンプである程度判断はできるものの、確証が持てないため、今回は一度すべて削除し再作成する方向で進めようと思います。

S3 ファイルを使用したデータセットの作成についてもご教示ありがとうございました。