Power BI是微软开发的一款功能非常强大的的BI工具,可以制作非常美观的报表,但这个工具的核心是DAX,翻译为中文就是 数据分析表达式,有点类似于excel函数,但又很不一样。
DAX中的很多功能可以与SQL对应,但差异也很大。
本文要讲的是用 表构造函数(Table Constructor)实现 sql server中的虚拟表。
1、sql server中的虚拟表不是一张真实存在表,是只存在于当前会话中的数据,类似这样:
SELECT 111 AS 产品编码,'2019-01-01' 销售日期, 30 数量,600 金额 UNION ALL
SELECT 222 ,'2019-01-02', 25 ,250 UNION ALL
SELECT 111 ,'2019-01-08', 20 ,400 UNION ALL
SELECT 333 ,'2019-01-13', 10 ,300 UNION ALL
SELECT 222 ,'2019-01-16', 10 ,100
在 sql server中的运行结果:
2、power bi的实现方式
输入代码:
虚拟表 =
SELECTCOLUMNS
(
{
(111, DATE(2019, 1, 1), 30, currency(600)),
(222, DATE(2019, 1, 2), 25, currency(250)),
(111, DATE(2019, 1, 8), 20, currency(400)),
(333, DATE(2019, 1, 13),10, currency(300)),
(222, DATE(2019, 1, 16),10, currency(100))
},
"产品编码",[Value1],
"销售日期",[Value2],
"数量",[Value3],
"金额",[Value4]
)
查询结果:
表构造函数(Table Constructor)的使用方法是:
(1) 行数据的格式是 { 第1行数据 , 第2行数据 ....... } ,也就是所有数据都放到一对 { } 中。
(2)每1行数据的格式是:( 列值1,列值2 ......)
(3)但是这种方式 没办法直接指定数据类型,而是直接在数据中指定类型,比如 :111 就是integer 类型,date(2019,1,1)就是引用date函数构造日期,返回的就是datetime类型。
(4)由于无法指定 列名,默认情况下 列名为 value1,value2 , ... valueN ,所以上面用了 selectcolumns函数重新指定了列名。