Power BI:使用键盘重命名许多表和列

Power BI: Renaming many tables and columns using the keyboard

有没有办法在 Power BI 中使用键盘重命名表和列。我有数百(或数千)个列和表,它们的名称需要比数据库中的名称更易于阅读。使用右键单击 |重命名非常慢。跳转到该列并按 F2 似乎不起作用。进入重命名模式的按键是什么?

或者...有没有办法在文本编辑器中打开 .pbix 文件,以便我可以在那里进行工作? (当然,Microsoft 一定为该文件选择了某种开放、标准、可移植的格式——例如 XML?;))我已经解压缩了该文件,但 DataModel 文件似乎是二进制文件而不是存档文件。

如果这只能部分解决您的问题,请提前致歉-

加速 table 中多列重命名的一种可能方法是:

您仍然需要手动更改 table 名称 - 但这可能会加快列重命名速度,特别是如果您有很多 table 超过 20 列

  1. 打开 Power Query 编辑器
  2. 导航到 table 您希望更改的列(重命名)
  3. 重新排序列
  4. 从高级编辑器中的重新排序列步骤中获取列名称
  5. 在 Excel 或您选择的文本编辑器中进行操作(第一次可能需要做一些工作,但您可以创建一些东西来生成必要的输出)
  6. 将您更改的列名称字符串插入格式:{"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