我在SQL中有这两个表:
for
我通过这两个M脚本将两者都导入到Power BI中:
CREATE TABLE X(
"User" VARCHAR(5),
"Amount" INT
);
INSERT INTO X
values
('Phil', 10),
('jon', 4),
('jo', 5);
CREATE TABLE Y(
"User" VARCHAR(5)
);
INSERT INTO Y
values
('Phil'),
('jo'),
('paul'),
('jon');
和
let
Source = Sql.Database("serverX", "dbFoo"),
dbo_X = Source{[Schema="dbo",Item="X"]}[Data]
in
dbo_X
是否可以修改Y let
Source = Sql.Database("serverX", "dbFoo"),
dbo_Y = Source{[Schema="dbo",Item="Y"]}[Data]
in
dbo_Y
脚本,以便它只导入已由X脚本导入的用户名?
因此,在上面的示例中,我希望第二个脚本检查用户是否在X中以及是否不在,例如" Paul"然后它不会出现在Y
答案 0 :(得分:1)
有几种方法可以做到这一点。
将查询与内部联接合并
在“主页”选项卡下选择“合并查询”,然后选择“内部”作为“连接类型”:
这应该产生下表:
选择X列并使用“删除列”来获取“用户”列。
使用Table.SelectRows
过滤Y.在Y查询M代码中添加一个新行,如下所示:
let
Source = Sql.Database("serverX", "dbFoo"),
dbo_Y = Source{[Schema="dbo",Item="Y"]}[Data],
YTable = Table.SelectRows(dbo_Y, each List.Contains(X[User], [User]))
in
YTable
在服务器端进行过滤
加载表时使用自定义SQL查询:
let
Source = Sql.Database("serverX", "dbFoo",
[Query = "select * from Y inner join X on Y.User = X.User"])
in
Source