将Power BI连接到S3存储桶

时间:2018-08-11 16:12:38

标签: amazon-web-services azure amazon-s3 powerbi u-sql

在我刚接触Power BI和Redshift时需要一些指导。

我的原始JSON数据以.gz文件的形式存储在Amazon S3存储桶中(每个.gz文件都有多行JSON数据) 我想将Power BI连接到Amazon s3 Bucket。到目前为止,根据我的研究,我有以下三种方法:

  1. Amazon S3是一项Web服务,并支持REST API。我们可以尝试使用网络数据源获取数据

问题:是否可以解压缩.gz文件(在S3存储桶中或Inside Power BI内部),从S3中提取JSON数据并连接到Power BI

  1. 将数据从Amazon S3导入到Amazon Redshift。使用SQL工作台在Redshift内部进行所有数据操作。使用Amazon Redshift连接器在Power BI中获取数据

问题1 :Redshift是否允许从S3存储桶加载.gzzipped JSON数据?如果是,是否可以直接进行编码?还是必须为其编写任何代码?

问题2:我有S3帐户,是否需要单独购买Redshift帐户/空间?费用是多少?

  1. 通过Azure Data Factory将数据从AWS S3存储桶移动到Azure Data Lake Store,使用Azure Data Lake Analytics(U-SQL)转换数据,然后将数据输出到PowerBI

U-SQL识别文件扩展名为.gz的GZip压缩文件,并在提取过程中自动将其解压缩。如果我的压缩文件包含JSON数据行,此过程是否有效?

如果有其他方法,请允许我,也请您提出宝贵的建议。

谢谢。

1 个答案:

答案 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?