[英]Is there any equivalent function for an sql query: from_unixtime(unix_timestamp(${TABLE}.dt,“yyyyMMdd”) in aws athena)
[英]Concatenate variable in Athena SQL query from Python Lambda function
我有一個 Python Lambda function 可以在 AZA2A21 中創建一個 Z9778840A0100CB30C98287676741 表。 如何正確連接查詢中的變量? 當我設置 LOCATION 值時,我收到下面的錯誤響應。 如果我對 LOCATION 值進行硬編碼,則 function 會成功運行。
LOCATION “”” + s3_bucket_test + “””
錯誤響應:
Response
{
"errorMessage": "An error occurred (InvalidRequestException) when calling the StartQueryExecution operation: line 1:8: mismatched input 'EXTERNAL'. Expecting: 'OR', 'SCHEMA', 'TABLE', 'VIEW'",
"errorType": "InvalidRequestException",
"stackTrace": [
" File \"/var/task/lambda_function.py\", line 34, in lambda_handler\n queryStart = client.start_query_execution(\n",
" File \"/var/runtime/botocore/client.py\", line 386, in _api_call\n return self._make_api_call(operation_name, kwargs)\n",
" File \"/var/runtime/botocore/client.py\", line 705, in _make_api_call\n raise error_class(parsed_response, operation_name)\n"
]
}
Lambda function:
import boto3
import json
import time
database = ‘daily_reports’
s3_bucket = 's3://test/’
s3_bucket_results = 's3://test/results’
query = ("""
CREATE EXTERNAL TABLE IF NOT EXISTS `reports` (
`timestamp` bigint,
`user_id` string,
`name` string
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = '1'
) LOCATION “”” + s3_bucket + “””
TBLPROPERTIES ('has_encrypted_data'='false');
""")
def lambda_handler(event, context):
client = boto3.client('athena')
queryStart = client.start_query_execution(
QueryString = query,
QueryExecutionContext = {
'Database': database
},
ResultConfiguration = {
'OutputLocation': s3_bucket_results
}
)
謝謝你。
你試過用 Python 的 format 方法嗎? 像這樣的東西
query = ("""
CREATE EXTERNAL TABLE IF NOT EXISTS `reports` (
`timestamp` bigint,
`user_id` string,
`name` string
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = '1'
) LOCATION '{}'
TBLPROPERTIES ('has_encrypted_data'='false');
""").format(s3_bucket)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.