查看日期/时间 Athena 文档,我没有看到执行此操作的函数,这让我感到惊讶。我看到的最接近的是date_trunc('week', timestamp)但结果类似于2017-07-09 00:00:00.000我希望格式为2017-07-09
是否有一个简单的函数可以将时间戳转换为日期?
我是 AWS Athena 的新手,并试图将一些行转为列,类似于此StackOverflow 帖子中的最佳答案。
但是,当我尝试时:
SELECT column1, column2, column3
FROM data
PIVOT
(
MIN(column3)
FOR column2 IN ('VALUE1','VALUE2','VALUE3','VALUE4')
)
Run Code Online (Sandbox Code Playgroud)
我收到错误: mismatched input '(' expecting {',', ')'} (service: amazonathena; status code: 400; error code: invalidrequestexception
有谁知道如何在 AWS Athena 中完成我想要实现的目标?
我有一些单元测试,但我正在寻找一种方法来标记一些特定的单元测试以跳过它们,除非你在调用测试时声明一个选项.
示例:如果我打电话pytest test_reports.py,我想要一些特定的单元测试不能运行.
但如果我打电话pytest -<something> test_reports,那么我希望我的所有测试都能运行.
我查看了@pytest.mark.skipif(condition)标签,但无法弄清楚,所以不确定我是否在正确的轨道上.这里的任何指导都会很棒!
我有一个原始的 pandas 数据框,我们称之为df。我将数据帧转换为 csv 文件,然后将其转换回 pandas 数据帧。当我调用 df.equals(new dataframe) 时,它返回 false。我认为一个错误可能是索引可能关闭,因此我将新数据帧的索引设置为 csv 文件的第一列(这是原始数据帧的索引),但仍然得到相同的结果。
示例代码:
import pandas as pd
df = <stuff here that aggregates other dataframes into one>
file_name = 'test/aggregated_reports.csv'
df.to_csv(file_name)
df2 = pd.read_csv(file_name, index_col=0)
assert df.equals(df2)
Run Code Online (Sandbox Code Playgroud)
我通过再次将 df2 转换为 csv 并比较 2 个 csv(file_name 和从 中创建的 csv df2.to_csv())进行了一些手动测试,它们似乎是相同的,所以我假设在将原始数据帧转换为 csv 时发生“差异”文件。但我还是不太明白...
任何有关可能导致此处“差异”的原因的见解将不胜感激!
S3存储桶中有一个CSV文件我要解析并在Python中变成字典.使用Boto3,我调用了s3.get_object(<bucket_name>, <key>)函数并返回一个字典,其中包含一个"Body" : StreamingBody()显然包含我想要的数据的键值对.
在我的python文件中,我添加import csv了我在网上看到的有关如何读取csv文件的示例,您传递的文件名如下:
with open(<csv_file_name>, mode='r') as file:
reader = csv.reader(file)
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何从StreamBody中检索csv文件名,如果可能的话.如果没有,我有更好的方法来阅读Python中的csv文件吗?谢谢!
编辑:想要添加我在AWS Lambda中这样做,并且在Lambda中使用pandas存在记录的问题,所以这就是为什么我想使用csv库而不是pandas.
我们通过 Kinesis Stream 处理数据(记录)到 Kinesis Firehose,然后将数据输出到 S3 存储桶中的文件。
然而,目前,所有记录都位于输出文件中的同一行,但我们希望将每个记录分开,以便它们位于自己的行上。
而不是类似的东西:
Store1, 100, Broccoli
Store1, 101, Avocado
Store1, 102, Apple
Run Code Online (Sandbox Code Playgroud)
目前看起来像:
Store1, 100, BroccoliStore1, 101, AvocadoStore1, 102, Apple
Run Code Online (Sandbox Code Playgroud)
这是我们的 CloudFormation 模板:
Resources:
MyBucket:
Type: AWS::S3::Bucket
MyStream:
Type: AWS::Kinesis::Stream
Properties:
Name: my-stream
RetentionPeriodHours: 24
ShardCount: 5
MyFirehose:
Type: AWS::KinesisFirehose::DeliveryStream
Properties:
DeliveryStreamName: my-firehose
DeliveryStreamType: KinesisStreamAsSource
KinesisStreamSourceConfiguration:
KinesisStreamARN:
Fn::Sub: "${MyStream.Arn}"
RoleARN:
Fn::Sub: "${MyRole.Arn}"
S3DestinationConfiguration:
BufferingHints:
IntervalInSeconds: 60
SizeInMBs: 50
CompressionFormat: UNCOMPRESSED
Prefix: concessions/
BucketARN:
Fn::Sub: "${MyBucket.Arn}"
RoleARN:
Fn::Sub: "${MyRole.Arn}"
Run Code Online (Sandbox Code Playgroud)
我们如何添加行分隔符以使记录显示在自己的行上?
我进行了一些研究,但还没有找到是否可行的方法,但是有人知道您是否可以为AWS Athena查询指定参数吗?
例如,我希望查询能够过滤WHERE merchant_id = {merchant_id}。是否可以指定此名称,以便我可以对想要的每个商人使用相同的查询?如果是这样,我应该在哪里将输入传递给Athena查询?