LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

このチュートリアルでは、LuckyTemplates で Power Query を使用して通貨換算を行う方法を学習します。このチュートリアルの完全なビデオは、このブログの下部でご覧いただけます。

このブログで説明する方法は、最後に利用可能なレートを使用して通貨レート テーブルの問題を解決するのに役立ちます。

為替レート表に毎日の通貨レートが記載されていない場合の対処方法がわかります。

目次

欠落データの特定

この問題は、Date テーブルに休日または週末のデータがない場合に発生する可能性があります。

レートがなく、それを考慮していない日がある場合、総売上高などの指標は変換されません。

この通貨レート表を見ると、2016 年 1 月のユーロでのレートが示されています。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

ただし、27 日と 28 日が欠落しており、レートがないことに注意してください。したがって、マトリックスに移動すると、27 と 28 にはレートがないことがわかります。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

欠落している通貨レート メジャーは、ファクト通貨レート テーブルの単純な合計です。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

表内の合計 26.6983 には意味がありません。これは、それを超えるすべての通貨レートの合計にすぎませんが、当日のレートであるため合計する必要はありません。

これは、クエリと集計に関係するデータ モデリングの問題であるため、Power Queryで修正できます。これは DAX でも実行できますが、LuckyTemplates の Power Query を使用した方が簡単かつ高速です。

そのため、[データの変換]をクリックして、Power Query ウィンドウを開きます。

これはデータが欠落しているテーブルです。この通貨レート表には、ユーロ、ポンド、ドルが含まれていることもわかります。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

そして、これが 1 月 27 日と 28 日の値を含む最後のテーブルです。これは、必要なテーブルまたは出力です。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

取得元のソースからデータをインポートし、データ型を変更するだけです。

異なる通貨の分離

次に、複数の通貨をお持ちの場合は、ティッカーごとに通貨を分けてグループ化することが重要です。

グループ化するときは、必ず [すべての行] でグループ化してください。これにより、たとえば [ユーロ] をクリックすると、通貨レートのみがユーロで表示されます。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

ここにもポンド通貨と同様に欠落している日があることがわかります。

LuckyTemplates には、カスタム関数の呼び出しと呼ばれるものがあります。これはFillMissingRatesを備えた関数です。

「ユーロ」をクリックすると、展開された表に表示された欠落データを含む完全な表が表示されます。古い料金から新しい料金まで並べられています。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

カスタム関数が何をしているのかを理解します。「カスタム関数の呼び出し」の近くにある歯車アイコンをクリックすると、列名と「すべて」列を取得しているソースが表示されます。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

そのためには、基本的なテーブルから始めます。変換を実行し、必要な結果を取得し、それを使用して関数を構築します。他のすべてのサブテーブルがあるテーブルでそれを行うよりも合理的です。

たとえば、ユーロに焦点を当てたい場合は、ティッカーまでフィルタリングします。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

欠落している日を確認するには、日付テーブルとマージします。

以下は、フィルター処理された基本的な通貨テーブルと DimDate テーブルです。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

結合の種類では、完全外部を使用して両方のテーブルからすべての行を取り込むことができます。これにより、不足しているものと一致するレートが表示されます。

それをマージすると、サブテーブルとして完全なテーブルが得られます。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

その後、行を並べ替えてから、DimDate を展開して Date 列のみを含めます。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

これで、すべてが一致していることがわかります。また、行を古いものから新しいものへ並べ替えると、Null 値を持つ欠落した 2 日も表示されます。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

不足しているレートを埋める

Date.1 を除くすべての列にすべての null を入力するので、この順序であることが重要です。

入力すると、NULL 値がユーロと最後に利用可能なレートに変更されたことがわかります。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

次に、日付列などの不要な列をテーブルから削除します。

Date.1 列にはすでに日付が含まれているため、Date 列は必要ありません。次に、クロスレートを 10 進数に設定します。

最後に、列の順序を変更して名前を変更し、データ型が設定されていることを確認します。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

これで完全な通貨レート表が完成しました。

ただし、これはこのテーブルでのみ機能します。通貨がグループ化されているテーブルに同じロジックを適用する方法を見つける必要があります。

すべての通貨を統合する

通貨が異なる場合、異なるレート表を維持するのは困難です。したがって、それらをマージして 1 つの通貨テーブルを作成する必要があります。

まず、既存のテーブルを使用し、「テーブル」をクリックして「関数の作成」を選択して関数を作成します。次に関数名を入力します。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

その後、高度なエディターに移動します。必要のない計算を削除します。この場合は、ソースを削除し、フィルターし、構文を変更します。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

次に、パラメータに「Source」という名前を付け、「Let」と入力します。Filtered Rows が削除されたため、Merged Queries 構文内の値を Source に変更します。その後、構文の最後にあるソースを削除し、「完了」をクリックします。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

次に、「列の追加」に移動し、「カスタム関数の呼び出し」をクリックします。「All Data」のような列名を入力します。関数クエリの場合は、以前に作成した関数を選択します。ソースとして「すべて」を選択し、「OK」をクリックします。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

次に行うことは、「すべてのデータ」を除くすべての列を削除することです。次に、その列を展開し、「元の列名をプレフィックスとして使用する」設定のチェックを外します。その後、「OK」をクリックして列のタイプを変更します。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

Date、Ticker、Crossrate 列のタイプをそれぞれ Date、Text、Decimal に設定します。完了したら、「閉じて適用」をクリックします。

これで、日付とレートが欠落していない組み合わせの通貨レート表が得られます。

データモデル内での関係の作成

データ モデルでは、FactCurrencyRatesテーブルを確認できます。次に、そのテーブルと DimCurrencyRates および DimDate テーブルを使用して、Ticker to Ticker および Date to Date という関係を作成します。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

マトリックスで通貨レートの欠落なしを取得すると、27 日と 28 日のレートがすべて Power Query で行われたことを確認できます。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

「最後に報告された通貨レート」列には、欠落した日のレートも表示されます。同じレートと値が表示されます。ただし、それらの違いは、この列が DAX で作成されることです。

これは、その列のメジャーと構文です。 関数だけを使用するほど単純ではありません。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

テーブルを見ると、Converted Sales No Missing 列が表示されます。「欠落なしの通貨レート」列を使用して換算された売上が表示されます。売上が換算されたもう 1 つの列は、DAX で作成された列を使用します。

換算された売上を取得するために使用される関数はです。その列のメジャーを見ると、SUMX が DimDate テーブルを調べていることがわかります。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

DAX メソッドと Power Query メソッドの比較

LuckyTemplates では、DAX と Power Query を使用して変換された売上列の両方を実際に比較できます。

これを行うには、変換された sales 列を除くすべての列を削除します。次に、パフォーマンス アナライザーを起動し、[記録の開始] をクリックします。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

次に、DAX Studio を開きます。これは、モデル内で物事がどのように、そしてなぜ機能するのかを示すアプリケーションです。その後、マトリックスのクエリをコピーして、スタジオ内に貼り付けます。

比較するには、テスト中の他の列に干渉しないように、最初にそのうちの 1 つをコメントに変換します。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

次に、サーバー タイミングとクエリ プランをロードします。パフォーマンスを比較しているため、比較を実行する前にまずキャッシュをクリアしてください。

テストを実行すると、DAX を使用した列で十分なスキャンが行われ、合計時間が 71 ミリ秒になっていることがわかります。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

ここで、パワー クエリを使用した他の列を実行します。ただし、その前に、構文内の他の列をコメントに変更します。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

この列は 25 ミリ秒間のみ実行され、スキャンは 7 回のみであることがわかります。

LuckyTemplates の Power Query を使用して欠落している通貨レートを解決する

DAX メソッドと Power Query メソッドのどちらがより速く、より優れたパフォーマンスを発揮するかが明確にわかります。

結論

LuckyTemplates で Power Query メソッドを使用する利点は、データがすでに保存されていることです。したがって、メジャーはレートを見つけて、簡単な関数を使用してそれを導き出すことができます。

この方法のもう 1 つの点は、計算が複雑になっても速度が低下しないことです。

ただし、これは、要求しているデータをその場で変換する必要がない場合にのみ機能します。その場合は、DAX を使用する必要があります。

ではごきげんよう、


Python における Self とは: 実際の例

Python における Self とは: 実際の例

Python における Self とは: 実際の例

RでRDSファイルを保存してロードする方法

RでRDSファイルを保存してロードする方法

R の .rds ファイルからオブジェクトを保存および読み込む方法を学習します。このブログでは、R から LuckyTemplates にオブジェクトをインポートする方法についても説明します。

最初の N 営業日の再考 – DAX コーディング言語ソリューション

最初の N 営業日の再考 – DAX コーディング言語ソリューション

この DAX コーディング言語チュートリアルでは、GENERATE 関数の使用方法とメジャー タイトルを動的に変更する方法を学びます。

LuckyTemplates のマルチスレッド動的ビジュアル手法を使用したインサイトのショーケース

LuckyTemplates のマルチスレッド動的ビジュアル手法を使用したインサイトのショーケース

このチュートリアルでは、マルチスレッド動的ビジュアル手法を使用して、レポート内の動的データ視覚化から洞察を作成する方法について説明します。

LuckyTemplates のフィルター コンテキストの概要

LuckyTemplates のフィルター コンテキストの概要

この記事では、フィルター コンテキストについて説明します。フィルター コンテキストは、LuckyTemplates ユーザーが最初に学習する必要がある主要なトピックの 1 つです。

LuckyTemplates Online Service でアプリを使用する際の最良のヒント

LuckyTemplates Online Service でアプリを使用する際の最良のヒント

LuckyTemplates Apps オンライン サービスが、さまざまなソースから生成されたさまざまなレポートや分析情報の管理にどのように役立つかを示したいと思います。

時間の経過に伴う利益率の変化を分析する – LuckyTemplates と DAX を使用した分析

時間の経過に伴う利益率の変化を分析する – LuckyTemplates と DAX を使用した分析

LuckyTemplates でのメジャー分岐や DAX 数式の結合などの手法を使用して、利益率の変化を計算する方法を学びます。

DAX Studio でのデータ キャッシュのマテリアライゼーションのアイデア

DAX Studio でのデータ キャッシュのマテリアライゼーションのアイデア

このチュートリアルでは、データ キャッシュの具体化のアイデアと、それが結果を提供する際の DAX のパフォーマンスにどのように影響するかについて説明します。

LuckyTemplates を使用したビジネス レポート

LuckyTemplates を使用したビジネス レポート

これまで Excel を使用している場合は、ビジネス レポートのニーズに合わせて LuckyTemplates の使用を開始するのに最適な時期です。

LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて

LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて

LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて