需要一些指导,因为我是新的动力BI和红移。
我的原始JSON数据以.gz文件的形式存储在Amazon桶中(每个.gz文件都有多行JSON数据),我想将Power连接到Amazon桶。到目前为止,根据我的研究,我有三个方法:
问题:是否可以解压缩.gz文件(在S3桶内或在Power内部),从S3中提取JSON数据并连接到Power
问题1:Redshift是否允许从S3桶加载.gzzipped JSON数据?如果是的话,它是直接可能的,还是我必须为它编写任何代码?
问题2:我有S3帐户,我必须单独购买Redshift帐户/空间吗?费用是多少?
U识别具有文件扩展名GZip的.gz压缩文件,并自动解压缩它们作为提取过程的一部分。如果gzipped文件包含JSON数据行,此进程有效吗?
如果还有其他的方法,也请给我一些宝贵的建议。
提前谢谢。
发布于 2020-07-31 03:48:01
关于你的第一个问题:我最近遇到了一个类似的问题(但提取了一个csv),我想注册我的解决方案。
Power仍然没有直接的插件来下载S3存储桶,但是您可以使用python脚本来完成它。Get data --> Python Script
确保boto3和熊猫库安装在您在Power选项中通知的同一个文件夹(或子文件夹)中,或者安装在Anaconda库文件夹中的boto3中。
import boto3
import pandas as pd
bucket_name= 'your_bucket'
folder_name= 'the folder inside your bucket/'
file_name = r'file_name.csv' # or .json in your case
key=folder_name+file_name
s3 = boto3.resource(
service_name='s3',
region_name='your_bucket_region', ## ex: 'us-east-2'
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY
)
obj = s3.Bucket(bucket_name).Object(key).get()
df = pd.read_csv(obj['Body']) # or pd.read_json(obj['Body']) in your case
dataframe将作为一个新查询导入(在本例中名为"df“)
显然,熊猫库也可以获得一个压缩文件(例如.gz)。请参阅以下主题:csv与gzip压缩选项?
https://stackoverflow.com/questions/51801521
复制相似问题