其实这个说Azure Analysis Service(AAS)无非就是我把这个cube发布到了Azure云上,如果发布到本地的Analysis Service上应该也是一样的。
下图就是设置analysis server的地方。
用的是Visual Studio 2017(SSDT)的版本。
因为之前对数据库Netezza不支持,所以一直用的是ODBC做数据连接。刚开始我只配置了64位的ODBC,没有配置32位的ODBC,老是有下面的问题。
忘记原因了,反正对于Netezza数据库,就是要配置32位和64位的ODBC才不会报下面的错误。DB2我忘记了,不过ODBC显示也是32位和64位都配置了的。
有的时候对于不同的环境,需要对数据源进行转换。
可能用Connection String会好些?不过我习惯用ODBC了,这个名称要在Power BI Server里面gateway要配置一样的名字。
如果直接右键change source应该是可以的。但是也要看数据源~~
比如,如果是SQL Server到Netezza数据库。因为定义的方式比较一致,所以还是挺好改的。直接在View Code里面整理就好了。
例如:
随便取了SQL Server的一个表定义如下:
let Source = #"Odbc/dsn=SQL_Prod", dw_Database = Source{[Name="dwing",Kind="Database"]}[Data], dbo_Schema = dw_Database{[Name="dbo",Kind="Schema"]}[Data], vDWTime_View = dbo_Schema{[Name="vDWTime",Kind="View"]}[Data], #"Filtered Rows" = Table.SelectRows(vDWTime_View, each ([Object] = "Doe"))in #"Filtered Rows"
取了Netezza数据库的一个表定义如下:
let Source = DW_Database = Source{[Name="dwing",Kind="Database"]}[Data], DBO_Schema = DW_Database{[Name="DBO",Kind="Schema"]}[Data], V_View = DBO_Schema{[Name="vDWTime",Kind="View"]}[Data] in
基本上就是一致了,所以在View Code里面,改Odbc/dsn=NZ_Prod 到Odbc/dsn=SQL_Prod就可以了。这个还是比较简单的。
但是如果是SQL Server或者Netezza到DB2的数据库。实践来讲View Code的修改就不是很好用了。
取出table在DB2下的属性。如下代码所示:
let Source = DW_Schema = Source{[Name="dwing",Kind="Schema"]}[Data], V_View = DW_Schema{[Name="vDWTime",Kind="View"]}[Data]in V_View
不太确定别人家是不是也是这样的,不过这个例子里面可以看到。
在SQL Server或者Netezza数据库里面。dwing是database的名称,DBO是Schema,但是在DB2数据库里面,dwing是Schema的名称,database的名称已经被一个BLUEXX给占了。惨不惨~~
当然既然已经了解了这个差异,所以直接replace修改view code也可以。或者一个一个修改也是可以的,实践证明,这个一个一个修改,验证,更不容易出错。
本来想写个AAS里面小雷点的总结。没想到写了一个切换数据源,就写了这么多~~不过正常来讲,应该不会有需求这么换来换去数据库吧~~迁移项目倒是可以考虑考虑。还有就是了解一些,方便以后拆解AAS。随便怎么拆,都有办法拼起来吖~~
谢谢关注!