从数据库中仅获取我想要的数据,但保留结构

时间:2017-10-12 16:57:00

标签: sql sql-server powerbi

我试图在powerbi上做这个,但我想它只是基本的SQL

我想在powerBi中导入我的数据,但是用一些id过滤它。我们来看这个例子吧。我有一些公司的数据库(表1)。每个compay都有建筑物(table2),每个建筑物都有雇员(table3)。 我想导入三张桌子,但仅限于一家公司(OnePowerBi是关于一家公司,永远不会更多)。请注意,每个表都有父表的外键。我的架构在powerBI中运行良好

我尝试在高级选项中进行SQL查询(关于功能BI,你可以在选择哪个表导入之前做一些SQL)但是如果我这样做:

select * from companies where idcomp=1

它只会导入公司表。 我想导入所有表的所有数据,如果这些数据链接到选定的公司ID,但保留结构而不是在"请求中获取所有数据"或者" table",作为内部联接会做。我该怎么办?

1 个答案:

答案 0 :(得分:6)

这个答案是基于我对这个问题的理解。如果此解决方案无法满足您的需求,我建议您更新问题以澄清您的问题和所需结果。

另外,我提前为这个答案的长度道歉;我不知道您对Power BI的专业水平,我想确保涵盖我所采取的每一步。

注意 - 我使用的是通过Windows应用商店提供的最新版本的Power BI Desktop。如果我拍摄的任何操作或我发布的图片与您的Power BI应用程序不一致,请确保您使用的是最新版本。

0)首先,我创建了一个包含三个表和一些数据的示例SQL结构。我运行的SQL代码可以找到here

1)在Power BI中,点击获取数据 - > SQL Server

Get data

2)在此输入您的SQL服务器和数据库名称(我使用的是本地数据库,因此是“。”)。

SQL info

3)仅选择公司表,然后点击修改...

Select companies table

......像这样进口。

Imported companies table

4)点击管理参数 - >新参数。

New parameter

5)填写表格,如下所示。

Parameter config

6)返回公司查询,点击idcomp列的下拉箭头,然后转到数字过滤器 - >等于...

Filter rows

7)在弹出框中,单击第一个条件的下拉箭头并将其切换到参数。由于只有一个参数,因此应自动填写。单击“确定...”

Filter config

......得到这个。

Filter results

8)右键单击“公司”查询,然后单击“复制”。这是第二次,所以你有原始查询和两个副本。

Duplicate query

9)返回原始查询,右键单击“建筑物”列,然后选择“删除”。

Remove extra column in companies

10)右键单击Companies(2)查询并选择重命名。将此第二个查询命名为Buildings。

Rename second query

11)在“建筑物”查询中,右键单击“建筑物”列,然后选择“删除其他列”。

Remove extra columns in buildings

12)单击“建筑物”列上的展开箭头按钮,然后取消选择除idbuild和BuildingName之外的所有内容(如下所示)。

Expand buildings column

13)右键单击Companies(3)查询并选择重命名。将此第三个查询命名为Employees。

Rename third query

14)在Employees查询中,右键单击Buildings列并选择Remove Other Columns。

Remove extra columns in employees

15)点击“建筑物”列上的展开箭头按钮,然后取消选择除员工以外的所有内容(如下所示)。

Expand buildings column in employees

12)单击Employees列上的扩展箭头按钮,然后取消选择除idemp,FirstName和LastName之外的所有内容(如下所示)。

Expand employees column

13)点击关闭&应用

Close and apply

14)要检查数据,请制作一些表,并查看是否只加载了公司1的信息。

Tables

15)要更改加载的公司,请点击首页 - >编辑查询。

Edit queries

16)点击CompanyID(1)查询并将当前值更改为2.

Edit parameter

17)点击关闭&应用并注意表格更新为仅显示公司2的信息。

Updated tables