在我刚接触Power BI和Redshift时需要一些指导。
我的原始JSON数据以.gz文件的形式存储在Amazon S3存储桶中(每个.gz文件都有多行JSON数据) 我想将Power BI连接到Amazon s3 Bucket。到目前为止,根据我的研究,我有以下三种方法:
问题:是否可以解压缩.gz文件(在S3存储桶中或Inside Power BI内部),从S3中提取JSON数据并连接到Power BI
问题1 :Redshift是否允许从S3存储桶加载.gzzipped JSON数据?如果是,是否可以直接进行编码?还是必须为其编写任何代码?
问题2:我有S3帐户,是否需要单独购买Redshift帐户/空间?费用是多少?
U-SQL识别文件扩展名为.gz的GZip压缩文件,并在提取过程中自动将其解压缩。如果我的压缩文件包含JSON数据行,此过程是否有效?
如果有其他方法,请允许我,也请您提出宝贵的建议。
谢谢。
答案 0 :(得分:0)
关于您的第一个问题:我最近也遇到了类似的问题(但是提取了一个csv),我想注册我的解决方案。
Power BI仍然没有直接的插件来下载S3存储桶,但是您可以使用python脚本来完成。 Get data --> Python Script
PS .:确保将boto3和pandas库安装在Power BI选项中告知的Python主目录的同一文件夹(或子文件夹)中, 或者在Anaconda库文件夹(c:\ users \ USERNAME \ anaconda3 \ lib \ site-packages)中。
Power BI window for Python scripts options
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
数据框将作为新查询导入(在本例中为“ df”)
显然,pandas库也可以获取压缩文件(例如.gz)。请参阅以下主题:How can I read tar.gz file using pandas read_csv with gzip compression option?