Powerbi 在Power BI服务上使用自定义函数的刷新报告?

Powerbi 在Power BI服务上使用自定义函数的刷新报告?,powerbi,powerquery,powerbi-desktop,m,powerbi-datasource,Powerbi,Powerquery,Powerbi Desktop,M,Powerbi Datasource,我正试图找到一种解决方法,通过Power BI服务使用自定义函数刷新数据集。我的查询如下所示: _op_kiekis的数据源 _eil_sk的数据源 逻辑文件 Q_Sybase_2_Op_Kiekis Q_Sybase_1_Eil_Sk_2 这在Power BI桌面上运行良好。但是,我在Power BI服务上遇到以下错误: 您需要一个SQL Server包装器:PowerBI不能很好地与Sybase配合使用,但您有一个可以完全支持刷新的解决方案,其中Sybase实际上是后端数据存储: 安装SQ

我正试图找到一种解决方法,通过Power BI服务使用自定义函数刷新数据集。我的查询如下所示:

_op_kiekis的数据源

_eil_sk的数据源

逻辑文件

Q_Sybase_2_Op_Kiekis

Q_Sybase_1_Eil_Sk_2

这在Power BI桌面上运行良好。但是,我在Power BI服务上遇到以下错误:


您需要一个SQL Server包装器:PowerBI不能很好地与Sybase配合使用,但您有一个可以完全支持刷新的解决方案,其中Sybase实际上是后端数据存储:

  • 安装SQL Server并将其添加到Datagateway
  • 在SQL Server上,从新SQL Server向Sybase服务器添加链接服务器连接
  • 在PowerBI中,连接作为SQL Server数据源,并访问在SQL Server上设置的链接服务器以获取Sybase数据

  • 您是否使用网关连接到数据库?如果不是,这可能是为什么它在桌面上工作而不是在服务中的问题。当然,我使用gateway,它认为对数据库的身份验证有问题,就像在桌面版本中,我手动放置凭据一样,但PBI服务无法做到这两个有问题的函数都使用
    Loginai_File
    引用本地存储在您电脑上的文件。如果您将该步骤替换为静态值,它是否允许您刷新?您的Excel文件位于何处?你的网关有权访问它吗?要为您的网关提供凭据,您可以在pbi服务Stachu的“管理网关”部分输入它们-NO@Nikolaj Klitlund Børty,Localy,gateway有访问权限,auth有问题,因为访问了多个数据库,每个数据库都需要通过网关提供凭据,我无法管理网关,因为我在Loginai_文件中有>100个数据库,哪个数据库具有不同的凭据那么如何为每个数据库放置不同的凭据?@DmitrijHolkin您可以在将连接添加到数据网关时设置连接的凭据。在数据网关上,您只需添加到具有链接服务器的SQL Server的连接。在SQL Server上,无论您在哪里拥有Sybase Server+dbs,都会有几个不同的链接服务器连接。设置数据网关和链接服务器时,两者都是单独的任务,但在这两个任务中,您都需要设置凭据、用户名和密码。这太复杂了,我需要为每个sybase db创建链接服务器,我有100多个
    let
        Source = Loginai_File,
        #"Invoked Custom Function" = Table.AddColumn(Source, "Q_Sybase_2_Op_Kiekis", each Q_Sybase_2_Op_Kiekis([Source], [IP], [PORT], [DB_name]))
    
    in
        #"Invoked Custom Function"
    
    let
        Source = Loginai_File,
        #"Invoked Custom Function" = Table.AddColumn(Source, "Q_Sybase_1_Eil_Sk_2", each Q_Sybase_1_Eil_Sk_2([Source], [IP], [PORT], [DB_name]))
    in
        #"Invoked Custom Function"
    
    let
        Source = Excel.Workbook(File.Contents(PathToLoginai & Loginai_File_Name), null, true),
        dbs = Source{[Name="Sheet1"]}[Data],
    
    in
        dbs
    
    (Name, strSource, Ip , Port, dBase ) =>
    
    let
    
        Source = Sybase.Database(Ip & ":" & Number.ToText(Port), dBase, [Query="select [_].[Count] from [DBA].[dbs] [_] where [_].[DID_DAT] >= '" & sFilterDate & "' order by [DID_DAT]"])
    in
        Source
    
    (Name, strSource, Ip , Port, dBase ) =>
    
    let
    
        Source = Sybase.Database(Ip & ":" & Number.ToText(Port), dBase, [Query="select [_].[Count] from [DBA].[dbs2] [_] where [_].[DID_DAT] >= '" & sFilterDate & "' order by [DID_DAT]"])
    in
        Source