首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Power服务中使用R脚本将CSV文件导出到OneDrive

在Power服务中使用R脚本将CSV文件导出到OneDrive
EN

Stack Overflow用户
提问于 2021-10-01 19:35:35
回答 1查看 752关注 0票数 0

我正试图在Power中构建一个完全自动化和可持续的报告工具。我在Power中构建了一个报告,其中包括在某个地方使用R脚本来创建到本地C:驱动器的数据导出,这是如下代码:

代码语言:javascript
复制
# '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上执行,更不用说Power服务了。

目标是完全自动化,而不是要求我的电脑在周末或非工作日。

是否可以将csv写入OneDrive文件?如果是这样的话,有哪些方法是成功的?

有什么想法吗?感谢您能提供的任何帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-01 20:25:29

这里是Microsoft365R作者。免责声明:我不熟悉PowerBI,但我假设您可以在其中运行R脚本并连接到Internet等。

要让这件事在无人看管的情况下进行,还需要几件事。

将数据帧作为CSV上载到Onedrive,而不需要您登录的函数如下:

代码语言:javascript
复制
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注册并给它一个客户端机密(密码)。然后,您给它读取驱动器所需的权限--很可能是"Files.Readwrite.All“

记下您的应用程序注册的客户端ID和客户端机密。这些是插入到上面的R函数中的值。

您可以使用以下R代码获取驱动器ID。

代码语言:javascript
复制
drv <- get_business_onedrive(tenant="yourtenant")
drv$properties$id

您可能需要您友好的本地管理员的帮助,以完成所有这些,如果只是因为大多数orgs锁定了注册应用程序的能力。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69411178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档