由于我是 Power BI 和 Redshift 的新手,需要一些指导..
我的原始 JSON 数据以 .gz 文件的形式存储在 Amazon S3 存储桶中(每个 .gz 文件有多行 JSON 数据)
我想将 Power BI 连接到 Amazon s3 Bucket。到目前为止,根据我的研究,我得到了三种方法:
- Amazon S3 是一项 Web 服务,支持 REST API。我们可以尝试使用Web数据源来获取数据
问题:是否可以解压缩 .gz 文件(在 S3 存储桶或内部 Power BI 内),从 S3 中提取 JSON 数据并连接到 Power BI
- 将数据从 Amazon S3 导入 Amazon Redshift。使用 SQL 工作台在 Redshift 内进行所有数据操作。使用 Amazon Redshift 连接器获取 Power BI 中的数据
问题1:Redshift 是否允许从 S3 存储桶加载 .gzzipped JSON 数据?如果是,是直接可能的还是我必须为其编写任何代码?
问题2:我有 S3 帐户,是否需要单独购买 Redshift 帐户/空间?费用是多少?
- 通过 Azure 数据工厂将数据从 AWS S3 存储桶移动到 Azure Data Lake Store,使用 Azure Data Lake Analytics (U-SQL) 转换数据,然后将数据输出到 PowerBI
U-SQL 可识别文件扩展名为 .gz 的 GZip 压缩文件,并在提取过程中自动解压缩它们。如果我的 gzip 压缩文件包含 JSON 数据行,此过程是否有效?
如果还有其他方法,请告诉我,也请您对这篇文章提出宝贵的建议。
提前致谢。
关于你的第一个问题:我最近刚刚遇到了类似的问题(但提取了 csv),我想注册我的解决方案。
Power BI 仍然没有直接插件来下载 S3 存储桶,但您可以使用 python 脚本来完成此操作。获取数据 --> Python 脚本
PS.:确保 boto3 和 pandas 库安装在您在 Power BI 选项中通知的 Python 主目录的同一文件夹(或子文件夹)中,
或者在 Anaconda 库文件夹 (c:\users\USERNAME\anaconda3\lib\site-packages) 中。
Python 脚本选项的 Power BI 窗口
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)。请参阅以下主题:如何使用带有 gzip 压缩选项的 pandas read_csv 读取 tar.gz 文件?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)