需要一些指导,因为我是 Power BI 和 Redshift 的新手..
我的原始 JSON 数据以 .gz 文件的形式存储在 Amazon S3 存储桶中(每个 .gz 文件有多行 JSON 数据) 我想将 Power BI 连接到 Amazon s3 Bucket。截至目前,根据我的研究,我得到了三种方法:
问题:是否可以解压.gz文件(在S3存储桶或内部Power BI中),从S3中提取JSON数据并连接到Power BI
问题 1:Redshift 是否允许从 S3 存储桶加载 .gzzipped JSON 数据?如果是,是直接可能的还是我必须为其编写任何代码?
问题2:我有S3帐户,是否需要单独购买Redshift帐户/空间?费用是多少?
U-SQL 识别文件扩展名为 .gz 的 GZip 压缩文件,并在提取过程中自动解压缩它们。如果我的 gzip 压缩文件包含 JSON 数据行,此过程是否有效?
如果还有其他方法请告诉我,也请您对这篇文章提出宝贵的建议。
提前致谢。
关于你的第一个问题:我最近刚刚遇到了类似的问题(但提取了 csv),我想注册我的解决方案。
Power BI 仍然没有直接插件来下载 S3 存储桶,但您可以使用 python 脚本来完成。
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 文件?
您好@Dalciana B Waller,感谢您提供这个解决方案。 我正在寻找类似的东西。
就我而言,S3 存储桶中有许多按年份和月份排序的文件夹和子文件夹,每个月的子文件夹中都有一个 csv 文件。
例如,像这样:
-> format=v1/country=ni/year=2023/month=08/business_unit=mobile/filemonth08.csv
-> format=v1/country=ni/year=2023/month=09/business_unit=mobile/filemonth09.csv
如何连接到此存储桶并提取所有文件?
关于您已经放置的脚本,您能否在每个步骤中放置一个示例,说明它在虚拟代码行中的外观如何?请。