在 Power BI 服务中使用 R 脚本将 CSV 文件导出到 OneDrive
Export CSV file to OneDrive Using R Scripting in Power BI Service
我正在尝试在 Power BI 中构建一个完全自动化且可持续的报告工具。我在 Power BI 中构建了一个报告,除其他外,它在某一点使用 R 脚本创建一个数据导出到我的本地 C: 驱动器,它是以下代码:
# 'dataset' holds the input data for this script
.libPaths(.libPaths()[3])
require(gdata)
write.table(trim(dataset), file="C:\Users\Username\OneDrive\Folder\Inventory Log.csv", sep=",", row.names=FALSE, append=TRUE, col.names=FALSE)
plot(dataset);
虽然我的所有其他数据都通过 OneDrive 或在线资源连接到 PBI,但它仍然连接到我的本地计算机。我有个人网关设置,但这仍然需要我的本地计算机在 PBI 服务的计划刷新期间物理打开。
我试过使用 Microsoft365R 包,但我的 R 知识和经验仍然有限,所以我无法想出一个解决方案,允许 file="OneDrive Path"
在 write.table()
函数中在 Power BI Desktop 上成功执行,更不用说 Power BI 服务了。
目标是完全自动化,不需要我在周末或非工作日打开计算机。
是否可以将 csv 写入 OneDrive 文件?如果是这样,有哪些成功的方法?
有什么想法吗?感谢您提供的任何帮助!
这里是Microsoft365R作者。免责声明:我不熟悉 PowerBI,但我假设您可以 运行 在其中运行 R 脚本并连接到 Internet 等
需要做一些事情才能 运行 无人值守。
无需登录即可将数据框作为 CSV 格式上传到 Onedrive 的功能如下:
upload <- function(dataset, upload_path, drive_id, ...)
{
outfile <- tempfile()
on.exit(unlink(outfile))
write.table(dataset, outfile, ...)
library(Microsoft365R)
library(AzureGraph)
gr <- create_graph_login(
tenant="{yourtenant}",
app="{client_id}",
password="{client_secret}",
auth_type="client_credentials"
)
gr$get_drive(drive_id)$upload_file(outfile, upload_path)
}
在 AAD 端,创建一个 app registration and give it a client secret (password). You then give it the Microsoft Graph application permissions necessary to read drives--most likely "Files.Readwrite.All"。
记下您的应用程序注册的客户端 ID 和客户端密码。这些是您插入到上面的 R 函数中的值。
您可以使用以下 R 代码获取您的驱动器 ID。
drv <- get_business_onedrive(tenant="yourtenant")
drv$properties$id
您可能需要友好的本地管理员的帮助才能完成所有这一切,即使仅仅是因为大多数组织都锁定了注册应用程序的能力。
我正在尝试在 Power BI 中构建一个完全自动化且可持续的报告工具。我在 Power BI 中构建了一个报告,除其他外,它在某一点使用 R 脚本创建一个数据导出到我的本地 C: 驱动器,它是以下代码:
# 'dataset' holds the input data for this script
.libPaths(.libPaths()[3])
require(gdata)
write.table(trim(dataset), file="C:\Users\Username\OneDrive\Folder\Inventory Log.csv", sep=",", row.names=FALSE, append=TRUE, col.names=FALSE)
plot(dataset);
虽然我的所有其他数据都通过 OneDrive 或在线资源连接到 PBI,但它仍然连接到我的本地计算机。我有个人网关设置,但这仍然需要我的本地计算机在 PBI 服务的计划刷新期间物理打开。
我试过使用 Microsoft365R 包,但我的 R 知识和经验仍然有限,所以我无法想出一个解决方案,允许 file="OneDrive Path"
在 write.table()
函数中在 Power BI Desktop 上成功执行,更不用说 Power BI 服务了。
目标是完全自动化,不需要我在周末或非工作日打开计算机。
是否可以将 csv 写入 OneDrive 文件?如果是这样,有哪些成功的方法?
有什么想法吗?感谢您提供的任何帮助!
这里是Microsoft365R作者。免责声明:我不熟悉 PowerBI,但我假设您可以 运行 在其中运行 R 脚本并连接到 Internet 等
需要做一些事情才能 运行 无人值守。
无需登录即可将数据框作为 CSV 格式上传到 Onedrive 的功能如下:
upload <- function(dataset, upload_path, drive_id, ...)
{
outfile <- tempfile()
on.exit(unlink(outfile))
write.table(dataset, outfile, ...)
library(Microsoft365R)
library(AzureGraph)
gr <- create_graph_login(
tenant="{yourtenant}",
app="{client_id}",
password="{client_secret}",
auth_type="client_credentials"
)
gr$get_drive(drive_id)$upload_file(outfile, upload_path)
}
在 AAD 端,创建一个 app registration and give it a client secret (password). You then give it the Microsoft Graph application permissions necessary to read drives--most likely "Files.Readwrite.All"。
记下您的应用程序注册的客户端 ID 和客户端密码。这些是您插入到上面的 R 函数中的值。
您可以使用以下 R 代码获取您的驱动器 ID。
drv <- get_business_onedrive(tenant="yourtenant")
drv$properties$id
您可能需要友好的本地管理员的帮助才能完成所有这一切,即使仅仅是因为大多数组织都锁定了注册应用程序的能力。