データ翻訳を実装する場合は、予定表テーブルのテキストベースの列の翻訳サポートを追加できます。 これらの表には、月名または曜日の翻訳が含まれます。 このアプローチでは、日数や月数に言及したビジュアルを作成することができる。
翻訳されたバージョンを使用すると、サポートされている言語でビジュアルを読みやすくなります。
予定表テーブル列の翻訳に関するこの記事の戦略では、Power Query と M クエリ言語を使用します。 Power Query には、Date.MonthName
などの組み込み関数が用意されています。Date
パラメーターを受け取り、テキストベースの予定表名を返します。 .pbix プロジェクトの既定の言語とロケールが en-US の場合、次の Power Query 関数呼び出しは 1 月というテキストベースの値に評価されます。
Date.MonthName( #date(2023, 1, 1) )
Date.MonthName
関数は、特定の言語とロケールを渡す 2 番目の省略可能な文字列パラメーターを受け取ります。
Date.MonthName( #date(2023, 1, 1), "en-US")
月名をフランス語に変換する場合は、fr-FR のテキスト値を渡すことができます。
Date.MonthName( #date(2022, 12, 1), "fr-FR")
予定表の翻訳テーブルを生成する
前の例で使用した Languages テーブルを確認します。 これには DefaultCulture 列が含まれています。
Power Query は、M という関数型クエリ言語に基づいて構築されています。その言語を使用すると、Languages テーブルの行を反復処理して、プロジェクトでサポートされている言語と既定のカルチャを確認できます。 Languages テーブルをそのソースとして使用するクエリを作成して、月または曜日名を含む予定表翻訳テーブルを生成できます。
翻訳された月名テーブルを生成する M コードを次に示します。
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
ヒント
プロジェクトに予定表翻訳テーブルを追加する必要がある場合は、常に ProductSalesMultiLanguage.pbix サンプルの M コードをコピーして貼り付けることができます。
Languages テーブルに英語、スペイン語、フランス語、ドイツ語の 4 行が含まれている場合、次のスクリーンショットに示すように、翻訳された月名テーブル クエリは 4 つの翻訳列を含むテーブルを生成します。
同様に、翻訳済みの日名テーブルという名前のクエリでは、曜日名の翻訳を含むテーブルが生成されます。
翻訳済の付きの名前テーブルと翻訳済みの日名テーブルという 2 つのクエリは、汎用として書き込まれています。 ハードコーディングされた列名は含まれません。 これらのクエリでは、プロジェクトに対して言語を追加または削除するときに、今後の変更は必要ありません。 必要なのは、クエリのデータ行を更新することにあります。
並べ替え値を構成する
これら 2 つのクエリを初めて実行すると、セマンティック モデルに 2 つのテーブルが作成され、名前は Translated Month Names Table と Translated Day Names Table。 言語ごとに翻訳列があります。 翻訳列ごとに並べ替え列を構成する必要があります:
- 翻訳済みの月名の翻訳列を構成して、MonthNumber 列の並べ替えを使用します
- 翻訳済みの日名テーブルの翻訳列を構成して、DayNumber 列の並べ替えを使用します
翻訳テーブルの統合
次の手順では、2 つのテーブルを予定表テーブルを使用してデータ モデルに統合します。 予定表テーブルは、次のデータ分析式 (DAX) 式に基づく計算テーブルです。
カレンダー テーブルと ファクト テーブルの間にリレーションシップ (Salesなど) を作成するには、[日付] 列を使用して一対多リレーションシップを作成します。 予定表テーブルと 2 つの変換テーブルの間に作成されるリレーションシップは、MonthNumber 列と DayNumber 列に基づいています。
予定表テーブルで必要なリレーションシップを作成した後、2 つの予定表翻訳テーブルごとに新しいフィールド パラメーターを作成します。 予定表翻訳テーブルのフィールド パラメータを作成するのは、先に示した商品名やカテゴリー名のフィールド パラメータを作成するのと同じです。
これらの新しいフィールド パラメーター テーブルと Languages テーブルの間にリレーションシップを追加して、言語フィルター戦略が期待どおりに動作するようにします。
翻訳済みの月名と翻訳済みの日名のフィールド パラメーターを作成した後は、デカルト ビジュアル、テーブル、マトリックスを使用してレポートでそれらを表示し始めることができます。
すべてを設定したら、Languages アテーブルのレポート レベルのフィルターを使用して作業をテストし、言語を切り替え、月と曜日の名前の翻訳を期待どおりに検証できます。