我正在使用AWS Athena从S3查询原始数据。由于Athena将查询输出写入S3输出存储桶,所以我曾经这样做:
df = pd.read_csv(OutputLocation)
Run Code Online (Sandbox Code Playgroud)
但这似乎是一种昂贵的方法。最近,我注意到该get_query_results方法boto3返回一个复杂的结果字典。
client = boto3.client('athena')
response = client.get_query_results(
QueryExecutionId=res['QueryExecutionId']
)
Run Code Online (Sandbox Code Playgroud)
我面临两个主要问题:
get_query_results为pandas数据框?get_query_results仅返回1000行。如何使用它获得两百万行?我有一个 Pandas 数据框,我试图将它作为镶木地板文件保存到 S3 中:
dftest = pd.DataFrame({'field': [1,2,3]})
dftest.to_parquet("s3://bucket_name/test.parquet", engine='pyarrow',
compression='gzip')
Run Code Online (Sandbox Code Playgroud)
我得到:“FileNotFoundError:bucket_name/test.parquet”
我正在使用 SQL Server 2012 并希望查询以下内容:
我有两个表,其中的列大部分不同。(一个表有 10 列,另一个表有 6 列)。然而,它们都包含一个包含 ID 号的列和另一个包含类别名称的列。
现在我希望有一个表,其中包含两个表的所有行,并具有一个 ID 列和一个 Category_name 列(总共 14 列)。因此,如果相同的 ID 在表 1 中有 3 条记录,在表 2 中有另外 5 条记录,我希望拥有所有 8 条记录(8 行)
我认为这里复杂的事情是有一个“Category_name”列。
我尝试了以下操作,但是当两个表中都没有空值时,我只得到一条记录而不是两条记录:
SELECT isnull(t1.id, t2.id) AS [id]
,isnull(t1.[category], t2.[category_name]) AS [category name]
FROM t1
FULL JOIN t2
ON t1.id = t2.id;
Run Code Online (Sandbox Code Playgroud)
关于正确的完成方法有什么建议吗?