我正试图在Power中构建一个完全自动化和可持续的报告工具。我在Power中构建了一个报告,其中包括在某个地方使用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上执行,更不用说Power服务了。
目标是完全自动化,而不是要求我的电脑在周末或非工作日。
是否可以将csv写入OneDrive文件?如果是这样的话,有哪些方法是成功的?
有什么想法吗?感谢您能提供的任何帮助!
发布于 2021-10-01 20:25:29
这里是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注册并给它一个客户端机密(密码)。然后,您给它读取驱动器所需的权限--很可能是"Files.Readwrite.All“。
记下您的应用程序注册的客户端ID和客户端机密。这些是插入到上面的R函数中的值。
您可以使用以下R代码获取驱动器ID。
drv <- get_business_onedrive(tenant="yourtenant")
drv$properties$id您可能需要您友好的本地管理员的帮助,以完成所有这些,如果只是因为大多数orgs锁定了注册应用程序的能力。
https://stackoverflow.com/questions/69411178
复制相似问题