Power BI:使用键盘重命名许多表和列
Power BI: Renaming many tables and columns using the keyboard
有没有办法在 Power BI 中使用键盘重命名表和列。我有数百(或数千)个列和表,它们的名称需要比数据库中的名称更易于阅读。使用右键单击 |重命名非常慢。跳转到该列并按 F2 似乎不起作用。进入重命名模式的按键是什么?
或者...有没有办法在文本编辑器中打开 .pbix 文件,以便我可以在那里进行工作? (当然,Microsoft 一定为该文件选择了某种开放、标准、可移植的格式——例如 XML?;))我已经解压缩了该文件,但 DataModel 文件似乎是二进制文件而不是存档文件。
如果这只能部分解决您的问题,请提前致歉-
加速 table 中多列重命名的一种可能方法是:
您仍然需要手动更改 table 名称 - 但这可能会加快列重命名速度,特别是如果您有很多 table 超过 20 列
- 打开 Power Query 编辑器
- 导航到 table 您希望更改的列(重命名)
- 重新排序列
- 从高级编辑器中的重新排序列步骤中获取列名称
- 在 Excel 或您选择的文本编辑器中进行操作(第一次可能需要做一些工作,但您可以创建一些东西来生成必要的输出)
- 将您更改的列名称字符串插入格式:{"Column Original", "Column Changed"} 到新插入的步骤 #"Renamed Columns" = Table.RenameColumns(#"Last Step",{ {"原始列", "已更改列"},{"原始列", "已更改列"},{"原始列", "已更改列"}}),
根据 user12439754 的回答...
(Power BI 中此任务的“易用性”非常糟糕。)
因为我使用的是 SQL 服务器,所以我能够编写一个脚本来完成大部分工作。
Issues/future 增强:
- 参数化模式(或搜索所有模式)。
- 删除 #"Renamed Columns" 定义末尾的逗号。
用法:
- 运行 脚本。
- 删除#"Renamed Columns"末尾的逗号。
- 根据需要将列名移动到#"Removed Columns"。
- 更改名称
到您希望用户看到的内容。粘贴结果(一个 table 在
时间)进入高级编辑器。
declare @q table (
id int identity(1,1) not null,
tbl varchar(128) not null,
col varchar(128) not null
)
insert @q
select o.name as 'Table'
, c.name as 'Column'
from sys.sysobjects o
inner join sys.syscolumns c on c.id = o.id
inner join sys.schemas s on s.schema_id = o.uid
where s.name = 'dbo'
order by o.name
, c.colorder
declare @tbl varchar(128), @t varchar(128), @c varchar(128)
select @tbl = (select top 1 tbl from @q order by id)
declare @i int, @max int
set @i = 1
select @max = count(*) from @q
declare @out table(
id int identity(1,1) not null,
a varchar(4000) not null
)
while @i <= @max
begin
select @t = (select tbl from @q where id = @i)
insert @out
values ('let')
, (' Source = Sql.Database("FinancialDM", "FinancialDataMart"),')
, (' dbo_' + @t + ' = Source{[Schema="dbo",Item="' + @t + '"]}[Data],')
, (' #"Removed Columns" = Table.RemoveColumns(dbo_' + @t + ',{}),')
, (' #"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{')
while @tbl = @t and @i <= @max
begin
select @c = ' {"' + col + '", "' + col + '"}, ' from @q where id = @i
insert @out
values (@c)
set @i = @i + 1
select @t = (select tbl from @q where id = @i)
end
insert @out
values (' })')
, ('in')
, (' #"Renamed Columns"')
, ('')
, ('')
, ('')
set @tbl = @t
end
select *
from @out
有没有办法在 Power BI 中使用键盘重命名表和列。我有数百(或数千)个列和表,它们的名称需要比数据库中的名称更易于阅读。使用右键单击 |重命名非常慢。跳转到该列并按 F2 似乎不起作用。进入重命名模式的按键是什么?
或者...有没有办法在文本编辑器中打开 .pbix 文件,以便我可以在那里进行工作? (当然,Microsoft 一定为该文件选择了某种开放、标准、可移植的格式——例如 XML?;))我已经解压缩了该文件,但 DataModel 文件似乎是二进制文件而不是存档文件。
如果这只能部分解决您的问题,请提前致歉-
加速 table 中多列重命名的一种可能方法是:
您仍然需要手动更改 table 名称 - 但这可能会加快列重命名速度,特别是如果您有很多 table 超过 20 列
- 打开 Power Query 编辑器
- 导航到 table 您希望更改的列(重命名)
- 重新排序列
- 从高级编辑器中的重新排序列步骤中获取列名称
- 在 Excel 或您选择的文本编辑器中进行操作(第一次可能需要做一些工作,但您可以创建一些东西来生成必要的输出)
- 将您更改的列名称字符串插入格式:{"Column Original", "Column Changed"} 到新插入的步骤 #"Renamed Columns" = Table.RenameColumns(#"Last Step",{ {"原始列", "已更改列"},{"原始列", "已更改列"},{"原始列", "已更改列"}}),
根据 user12439754 的回答...
(Power BI 中此任务的“易用性”非常糟糕。)
因为我使用的是 SQL 服务器,所以我能够编写一个脚本来完成大部分工作。
Issues/future 增强:
- 参数化模式(或搜索所有模式)。
- 删除 #"Renamed Columns" 定义末尾的逗号。
用法:
- 运行 脚本。
- 删除#"Renamed Columns"末尾的逗号。
- 根据需要将列名移动到#"Removed Columns"。
- 更改名称 到您希望用户看到的内容。粘贴结果(一个 table 在 时间)进入高级编辑器。
declare @q table (
id int identity(1,1) not null,
tbl varchar(128) not null,
col varchar(128) not null
)
insert @q
select o.name as 'Table'
, c.name as 'Column'
from sys.sysobjects o
inner join sys.syscolumns c on c.id = o.id
inner join sys.schemas s on s.schema_id = o.uid
where s.name = 'dbo'
order by o.name
, c.colorder
declare @tbl varchar(128), @t varchar(128), @c varchar(128)
select @tbl = (select top 1 tbl from @q order by id)
declare @i int, @max int
set @i = 1
select @max = count(*) from @q
declare @out table(
id int identity(1,1) not null,
a varchar(4000) not null
)
while @i <= @max
begin
select @t = (select tbl from @q where id = @i)
insert @out
values ('let')
, (' Source = Sql.Database("FinancialDM", "FinancialDataMart"),')
, (' dbo_' + @t + ' = Source{[Schema="dbo",Item="' + @t + '"]}[Data],')
, (' #"Removed Columns" = Table.RemoveColumns(dbo_' + @t + ',{}),')
, (' #"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{')
while @tbl = @t and @i <= @max
begin
select @c = ' {"' + col + '", "' + col + '"}, ' from @q where id = @i
insert @out
values (@c)
set @i = @i + 1
select @t = (select tbl from @q where id = @i)
end
insert @out
values (' })')
, ('in')
, (' #"Renamed Columns"')
, ('')
, ('')
, ('')
set @tbl = @t
end
select *
from @out