如何从Athena中查询DynamoDB嵌套元素

0

【以下的问题经过翻译处理】 我正在尝试在DynamoDB文档中提供的示例电影表上执行查询。我尝试了以下几种变体,但结果都是相同的语法错误。

可以在以下网址上找到数据样本: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.Python.02.html

以下是Athena查询和输出。具体错误是:“无法解析列'lds。”info“。”release_date“'”

bash$ aws athena start-query-execution --query-string "select lds.\"info\".\"release_date\" from \"dynamodb\".\"default\".\"movies\" as lds where year = 1985" --region us-east-1 --work-group AmazonAthenaPreviewFunctionality
{
    "QueryExecutionId": "f1c21259-43ea-4c69-8c42-55ff70998953"
}
bash$ aws athena get-query-execution --query-execution-id f1c21259-43ea-4c69-8c42-55ff70998953
{
    "QueryExecution": {
        "QueryExecutionId": "f1c21259-43ea-4c69-8c42-55ff70998953",
        "Query": "select lds.\"info\".\"release_date\" from \"dynamodb\".\"default\".\"movies\" as lds where year = 1985",
        "StatementType": "DML",
        "ResultConfiguration": {
            "OutputLocation": "s3://<BUCKET-NAME>/results/f1c21259-43ea-4c69-8c42-55ff70998953.csv"
        },
        "QueryExecutionContext": {},
        "Status": {
            "State": "FAILED",
            "StateChangeReason": "SYNTAX_ERROR: line 1:8: Column 'lds.\"info\".\"release_date\"' cannot be resolved",
            "SubmissionDateTime": 1589221630.629,
            "CompletionDateTime": 1589221632.273
        },
        "Statistics": {
            "EngineExecutionTimeInMillis": 998,
            "DataScannedInBytes": 0,
            "TotalExecutionTimeInMillis": 1644,
            "QueryQueueTimeInMillis": 625,
            "ServiceProcessingTimeInMillis": 21
        },
        "WorkGroup": "AmazonAthenaPreviewFunctionality"
    }
}
profile picture
EXPERTE
gefragt vor 5 Monaten11 Aufrufe
1 Antwort
0

【以下的回答经过翻译处理】 您只是在表别名缺少双引号:

bash$ aws athena start-query-execution --query-string "select \"lds\".\"info\".\"release_date\" from \"dynamodb\".\"default\".\"movies\" as \"lds\" where year = 1985" --region us-east-1 --work-group AmazonAthenaPreviewFunctionality

您还应该检查表schema。您可以通过在Athena中执行此查询来执行此操作:

DESCRIBE dynamodb.default.movies

如果该schema中缺少您的列,则应:

  • 验证您的Glue目录:您可能已经创建了一个名为“movies”的表,该表具有不正确的schema。
  • 要么从Glue目录中删除该表,要么确保它使用正确的schema创建。

您的查询在我这里是能够工作的。我没有在Glue目录中定义表,因此连接器会推断出schema。

希望这能帮助您。

profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen

Relevanter Inhalt