LoginSignup
2
0

More than 1 year has passed since last update.

Athena Federated QueryでDynamoDBのスキーマが正常に認識できなかった際の対処法

Last updated at Posted at 2023-03-13

はじめに

DynamoDB上に格納されたデータをQuickSightで可視化しようとAthena Federated Query(DynamoDBコネクタ)を使用したところ、DynamoDB上に定義された属性(カラム)が一部しか取得できないという状況が発生しました。
本記事ではその解消手順について記載しています。

実際の設定手順

DynamoDBコネクタに組み込まれているスキーマの推論機能が完全ではないらしく、このような現象が発生してしまっているようです。
これを解消してあげるために、GlueでDynamoDBのスキーマを定義します。

Glue上でスキーマを定義する

GlueのCrawlerを使用して自動でテーブルスキーマを生成した場合、DynamoDBのテーブル名の-(ハイフン)が_(アンダーバー)に自動的に変換されてテーブル名の整合が取れなくなる場合があります。なので、ここでは手動で作成する手順を紹介します。

まず、コンソール上からGlueのページを開き、データベースを作成します。
image.png

その際、Database名はdefaultを指定します。(それ以外は空欄でOK)
MicrosoftTeams-image (1).png

次にtableを作成します。
NameにはDynamoDBのテーブル名を指定してください。
Databaseには先程作成したdefaultを指定します。
それ以外はデフォルト値のまま作成してください。
image.png

tableの作成が完了したら、テーブルの詳細ページ → Actions → Edit tableより設定を変更します。
以下の図のように各項目を修正してください。

  • Table details
    • input format: 削除
    • Output format: 削除
    • Serialization lib: 削除
  • Table properties
    • classification: json → dynamodb へ変更

image.png

その後、dynamodb上の実際のスキーマ定義を設定します。
image.png

スキーマ定義が完了し、Athena上でスキーマ定義が正常に参照可能か確認します。
image.png

Glue上で定義したdynamoDBの定義がAthena上で参照できることが確認できました!

終わりに

Athena Federated Queryを使用した際、dynamoDBのテーブル定義をGlueで実施する方法を記載しました。
本記事がどなたかのお役に立てれば幸いです。

参考記事

https://docs.aws.amazon.com/ja_jp/athena/latest/ug/connectors-dynamodb.html
https://github.com/awslabs/aws-athena-query-federation/issues/348

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0