将 Power BI 连接到 S3 存储桶

问题描述 投票:0回答:2

需要一些指导,因为我是 Power BI 和 Redshift 的新手..

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

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

问题:是否可以解压.gz文件(在S3存储桶或内部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 数据工厂将数据从 AWS S3 存储桶移动到 Azure Data Lake Store,使用 Azure Data Lake Analytics (U-SQL) 转换数据,然后将数据输出到 PowerBI

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

如果还有其他方法请告诉我,也请您对这篇文章提出宝贵的建议。

提前致谢。

amazon-web-services azure amazon-s3 powerbi u-sql
2个回答
7
投票

关于你的第一个问题:我最近刚刚遇到了类似的问题(但提取了 csv),我想注册我的解决方案。

Power BI 仍然没有直接插件来下载 S3 存储桶,但您可以使用 python 脚本来完成。 Get data -->Python 脚本”/></a></p>
<p>PS.:确保 boto3 和 pandas 库安装在您在 Power BI 选项中告知的 Python 主目录的同一文件夹(或子文件夹)中,
或者在 Anaconda 库文件夹中 (c:\users\USERNAME naconda3\lib\site-packages)。</p>
<p><a href=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)。请参阅以下主题:如何使用带有 gzip 压缩选项的 pandas read_csv 读取 tar.gz 文件?


0
投票

您好@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

如何连接到此存储桶并提取所有文件?

关于您已经放置的脚本,您能否在每个步骤中放置一个示例,说明它在虚拟代码行中的外观如何?请。

© www.soinside.com 2019 - 2024. All rights reserved.