sql-server - 一个 M 查询依赖于来自并行 M 查询的数据
问题描述
我在 SQL 中有这两个表:
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');
我通过这两个 M 脚本将两者都导入 Power BI:
let
Source = Sql.Database("serverX", "dbFoo"),
dbo_X = Source{[Schema="dbo",Item="X"]}[Data]
in
dbo_X
和
let
Source = Sql.Database("serverX", "dbFoo"),
dbo_Y = Source{[Schema="dbo",Item="Y"]}[Data]
in
dbo_Y
是否可以修改 YM
脚本使其仅导入已由 X 脚本导入的用户名?所以在上面的例子中,我希望第二个脚本检查用户是否在 X 中,如果不是,例如“Paul”,那么它不会出现在 Y
解决方案
有几种方法可以做到这一点。
使用内部联接合并查询
选择 Home 选项卡下的 Merge Queries 并选择 Inner 作为 Join Kind:
这应导致下表:
选择 X 列并使用 Remove Column 来获取 User 列。
使用 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
推荐阅读
- angularjs - 使用上下文访问嵌套 Angular foreach 循环中的变量
- vba - 键的集合返回值
- regex - 如何根据 Google 表格中的一列中的多个文本值查找并返回一个值
- python - 我的绑定不会执行我的功能
- alexa - 问 cli 生成语言模型很多语言,怎么只做en-US?
- javascript - Firebase 云功能在完成 foreach 之前完成
- sql - Netezza SQL 中的 ltrim(s,t)、rtrim(s,t) 如何转换为 Hive SQL?
- winapi - Rich Edit Control 在取消最小化后将整个应用程序涂成黑色
- jointjs - 在中心旋转元素
- python-3.x - 请帮助在python中编写一个tcp udp扫描程序