Power Query - 来自 table 的 Select 列,而不是之后删除
Power Query - Select Columns from table instead of removing afterwards
从数据库 table(例如 SQL 服务器)导入数据时的默认行为是导入所有列,然后 select 要删除哪些列。
有没有办法反过来做?即 Select 您想要 table 中的哪些列?最好不使用本机 SQL 解决方案。
男:
let
db = Sql.Databases("sqlserver.database.url"){[Name="DatabaseName"]}[Data],
Sales_vDimCustomer = db{[Schema="Sales",Item="vDimCustomer"]}[Data],
remove_columns = Table.RemoveColumns(Sales_vDimCustomer,{"Key", "Code","Column1","Column2","Column3","Column4","Column5","Column6","Column7","Column8","Column9","Column10"})
in
remove_columns
上面的代码片段显示了连接和随后的删除。
相比原生SQL方式方式:
= Sql.Database("sqlserver.database.url", "DatabaseName", [Query="
SELECT Name,
Representative,
Status,
DateLastModified,
UserLastModified,
ExtractionDate
FROM Sales.vDimCustomer
"])
我在该步骤中看不到很多关于 }[Data],
值的文档,所以希望我可以劫持该字段以指定该数据中的哪些字段。
任何想法都会很棒! :)
我首先担心的是,当它被编译成 SQL 时,它会作为两个查询发送(在 ExpressProfiler 中观察到)。
第一个查询删除了 select 列,第二个查询删除了 select 的所有列。
我的第二个担心是,如果在数据库中添加或删除一列,那么它可能会使我的报告崩溃(Excel 表中的其他列会将结构化 table 语言公式跳到错误的位置柱子)。这不是使用 Native SQL 的问题,因为它不会 select 新列,如果列被删除实际上会崩溃,这是我想知道的。
在我再次思考并查看 docs.
之后,这实际上很容易
let
db = Sql.Databases("sqlserver.database.url"){[Name="DatabaseName"]}[Data],
Sales_vDimCustomer = Table.SelectColumns(
(db{[Schema="Sales",Item="vDimCustomer"]}[Data],
{
"Name",
"Representative",
"Status",
"DateLastModified",
"UserLastModified",
"ExtractionDate"
}
)
in
Sales_vDimCustomer
这也比其他方式加载速度快得多,并且只生成了一个 SQL 请求而不是两个。
从数据库 table(例如 SQL 服务器)导入数据时的默认行为是导入所有列,然后 select 要删除哪些列。
有没有办法反过来做?即 Select 您想要 table 中的哪些列?最好不使用本机 SQL 解决方案。
男:
let
db = Sql.Databases("sqlserver.database.url"){[Name="DatabaseName"]}[Data],
Sales_vDimCustomer = db{[Schema="Sales",Item="vDimCustomer"]}[Data],
remove_columns = Table.RemoveColumns(Sales_vDimCustomer,{"Key", "Code","Column1","Column2","Column3","Column4","Column5","Column6","Column7","Column8","Column9","Column10"})
in
remove_columns
上面的代码片段显示了连接和随后的删除。
相比原生SQL方式方式:
= Sql.Database("sqlserver.database.url", "DatabaseName", [Query="
SELECT Name,
Representative,
Status,
DateLastModified,
UserLastModified,
ExtractionDate
FROM Sales.vDimCustomer
"])
我在该步骤中看不到很多关于 }[Data],
值的文档,所以希望我可以劫持该字段以指定该数据中的哪些字段。
任何想法都会很棒! :)
我首先担心的是,当它被编译成 SQL 时,它会作为两个查询发送(在 ExpressProfiler 中观察到)。
第一个查询删除了 select 列,第二个查询删除了 select 的所有列。
我的第二个担心是,如果在数据库中添加或删除一列,那么它可能会使我的报告崩溃(Excel 表中的其他列会将结构化 table 语言公式跳到错误的位置柱子)。这不是使用 Native SQL 的问题,因为它不会 select 新列,如果列被删除实际上会崩溃,这是我想知道的。
在我再次思考并查看 docs.
之后,这实际上很容易
let
db = Sql.Databases("sqlserver.database.url"){[Name="DatabaseName"]}[Data],
Sales_vDimCustomer = Table.SelectColumns(
(db{[Schema="Sales",Item="vDimCustomer"]}[Data],
{
"Name",
"Representative",
"Status",
"DateLastModified",
"UserLastModified",
"ExtractionDate"
}
)
in
Sales_vDimCustomer
这也比其他方式加载速度快得多,并且只生成了一个 SQL 请求而不是两个。