Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Se você estiver implementando traduções de dados, poderá adicionar suporte de tradução para colunas baseadas em texto em tabelas de calendário. Essas tabelas incluem traduções para os nomes dos meses ou dos dias da semana. Essa abordagem permite que você crie visuais que mencionam dias ou meses.
As versões traduzidas facilitam a leitura do visual em seus idiomas com suporte.
A estratégia neste artigo para traduções de colunas de tabela de calendário usa o Power Query e a linguagem de consulta M. O Power Query fornece funções internas, como Date.MonthName
, que aceitam um parâmetro Date
e retornam um nome de calendário baseado em texto. Se seu projeto .pbix tiver en-US como idioma e localidade padrão, a seguinte chamada de função do Power Query será avaliada como um valor baseado em texto de janeiro.
Date.MonthName( #date(2023, 1, 1) )
A função Date.MonthName
aceita um segundo parâmetro de cadeia de caracteres opcional para passar um idioma e uma localidade específicos.
Date.MonthName( #date(2023, 1, 1), "en-US")
Se você quiser traduzir o nome do mês para francês, poderá passar um valor de texto de fr-FR.
Date.MonthName( #date(2022, 12, 1), "fr-FR")
Gerar tabela de tradução de calendário
Examine a tabela Idiomas usada nos exemplos anteriores. Ela inclui uma coluna DefaultCulture.
O Power Query é criado em uma linguagem de consulta funcional chamada M. Com esse linguagem, você pode iterar pelas linhas da tabela Idiomas para descobrir a quais idiomas e culturas padrão o projeto dá suporte. Você pode gravar uma consulta que usa a tabela Idiomas como sua fonte para gerar uma tabela de tradução de calendário com os nomes dos meses ou dias da semana.
Aqui está o código M que gera a Tabela de Nomes dos Meses Traduzidos.
let
Source = #table( type table [ MonthNumber = Int64.Type ], List.Split({1..12},1)),
Translations = Table.AddColumn( Source, "Translations",
each
[ MonthDate = #date( 2022, [ MonthNumber ], 1 ),
Translations = List.Transform(Languages[DefaultCulture], each Date.MonthName( MonthDate, _ ) ),
TranslationTable = Table.FromList( Translations, null ),
TranslationsTranspose = Table.Transpose(TranslationTable),
TranslationsColumns = Table.RenameColumns(
TranslationsTranspose,
List.Zip({ Table.ColumnNames( TranslationsTranspose ),
List.Transform(Languages[Language],
each "MonthNameTranslations" & _ ) })
)
]
),
ExpandedTranslations = Table.ExpandRecordColumn(Translations,
"Translations",
{ "TranslationsColumns" },
{ "TranslationsColumns" }),
ColumnsCollection = List.Transform(Languages[Language], each "MonthNameTranslations" & _ ),
ExpandedTranslationsColumns = Table.ExpandTableColumn(ExpandedTranslations,
"TranslationsColumns",
ColumnsCollection,
ColumnsCollection ),
TypedColumnsCollection = List.Transform(ColumnsCollection, each {_, type text}),
QueryOutput = Table.TransformColumnTypes(ExpandedTranslationsColumns, TypedColumnsCollection)
in
QueryOutput
Dica
Você pode simplesmente copiar e colar o código M do exemplo ProductSalesMultiLanguage.pbix sempre que precisar adicionar tabelas de tradução de calendário ao seu projeto.
Se a tabela Idiomas contiver quatro linhas para inglês, espanhol, francês e alemão, a consulta Tabela de Nomes de Meses Traduzidos gerará uma tabela com quatro colunas de tradução, conforme mostrado na captura de tela a seguir.
Da mesma forma, a consulta chamada Tabela de Nomes dos Dias Traduzidos gera uma tabela com traduções de nomes dos dias da semana.
As duas consultas denominadas Tabela de Nomes dos Meses Traduzidos e Tabela de Nomes dos Dias Traduzidos foram escritas para serem genéricas. Elas não contêm nenhum nome de coluna embutido em código. Essas consultas não exigem modificações futuras quando você adiciona ou remove idiomas do projeto. Tudo o que você precisa fazer é atualizar as linhas de dados na consulta.
Configurar valores de classificação
Quando você executa essas duas consultas pela primeira vez, elas criam duas tabelas no modelo semântico com os nomes Tabela de Nomes de Meses Traduzidos e Tabela de Nomes de Dias Traduzidos. Há uma coluna de tradução para cada idioma. Você precisa configurar a coluna de classificação para cada uma das colunas de tradução:
- Configure as colunas de tradução na Tabela de Nomes dos Meses Traduzidos para usar a coluna de classificação MonthNumber
- Configure as colunas de tradução na Tabela de Nomes de Dias Traduzidos para usar a coluna de classificação DayNumber
Integrar tabelas de tradução
A próxima etapa é integrar as duas tabelas ao modelo de dados com uma tabela Calendário. A tabela Calendário é uma tabela calculada com base na expressão DAX (Data Analysis Expressions) a seguir.
Crie uma relação entre a tabela Calendar e as tabelas de fatos, como Sales, usando a coluna Date para criar uma relação um-para-muitos. As relações criadas entre a tabela Calendário e as duas tabelas de traduções são baseadas na coluna MonthNumber e na coluna DayNumber.
Depois de criar as relações necessárias com a tabela Calendário, crie um novo parâmetro de campo para cada uma das duas tabelas de traduções de calendário. Criar um parâmetro de campo para uma tabela de tradução de calendário é como criar os parâmetros de campo para nomes de produtos e nomes de categoria mostrados anteriormente.
Adicione uma relação entre essas novas tabelas de parâmetros de campo e a tabela Idiomas para garantir que a estratégia de filtragem de idiomas funcione conforme o esperado.
Depois de criar os parâmetros de campo para Nomes de Meses Traduzidos e Nomes de Dias Traduzidos, você pode começar a exibi-los em um relatório usando visuais, tabelas e matrizes cartesianos.
Depois de configurar tudo, você pode testar seu trabalho usando um filtro de nível de relatório na tabela Idiomas para alternar entre idiomas e verificar se as traduções para os nomes dos meses e dias da semana funcionam conforme o esperado.