Python における Self とは: 実際の例
Python における Self とは: 実際の例
日付テーブル クエリの M 関数にパラメーターを追加する方法を説明します。で提起された質問に基づいています。このチュートリアルの完全なビデオは、このブログの下部でご覧いただけます。
質問は、週の最初の曜日の番号付けを 0 から 1 に切り替える方法に関するものでした。これにより、実際の平日の開始日が変更されるわけではないことに注意してください。この日付テーブルでは、週の始まりは常に月曜日になります。月曜日を0日目ではなく1日目と呼ぶだけです。
このプロセスは必ずしも複雑ではありませんが、M 言語の構造についての基本的な理解が必要です。LuckyTemplates メンバーの場合は、チェックしてください。導入部ではこのテーマに触れています。
目次
M 関数と拡張日付テーブル
まずはPower Queryの説明から始めましょう。日付テーブル M 関数をここにすでにコピーしました。
M 関数は、LuckyTemplates フォーラムのM コード ショーケース カテゴリから入手しました。というトピックの下にあります。
Advanced Editorを開くと、これがコードです。
そこには大量の M コードが含まれているため、気が散ってしまう可能性があります。
テストクエリの作成
M 関数内では多くの処理が行われているため、代わりに新しい空のクエリから始めます。
このクエリにTest Queryという名前を付けます。
次に、高度なエディターを開きます。
これから関数を作成するので、括弧のペアを追加し、そこにあるデフォルトのコードをすべて削除します。
関数を開始するには、オプションのパラメータを宣言します。
次に変数を追加していきます。平日の開始番号を表すため、この変数をWDStartNumと呼びます。また、その型を宣言する必要があるので、 「number」と入力します。
エラーを防ぐために型を宣言しています。これを任意の型のままにした場合、数値を渡すだけでなく、テーブルまたは日付値も渡すことができることを意味します。
次のステップでは、 let句とin句を追加します。
let 句の下には変数名が必要です。したがって、この変数をWDStartと呼ぶことにします。
ここで、 WDStartNumが渡されたかどうかをテストする必要があります。合格した場合、 null と等価になりません。そこで、WDStartNum が null に等しくない場合に値を返すように宣言します。
in節に関しても同様の手順を経て欲しいです。そこで、 WDStart をそこに置きます。これは、先ほど let 句で変数に付けた名前です。
「完了」を押すと、関数が作成されます。そこで、その関数を通じて値を渡してみます。
文字「a」を入力してみます。
先ほど、値は数値でなければならないと宣言したことを思い出してください。入力した値がこの要件を満たしていないことが認識されるため、そのパラメーターの入力は許可されません。
したがって、それを削除して、スペースを空白のままにします。
「Invoke」をクリックすると、値 0 が返されます。
元のクエリに戻ると、値が null に等しくない場合は WDStartNum を返す必要があると記載されています。null に等しい場合は、0 が返される必要があります。
つまり 0 が正しいということになります。
今回はTestQueryの数値を変更して値を渡してみます。確かに、Enter キーを押すと「1」が返されます。
さて、TestQuery で 2020 を渡してみます。Enter キーを押すと、2020 も返されます。
明らかに、私はこれが起こってほしくありません。週の始まりを表す値が必要なので、0 または 1 が表示されるようにします。これは、入力された数値が 0 か 1 かを確認する別のテストを作成する必要があることを意味します。これにはList.Contains関数を使用できます。
List.Contains の使用
空のクエリを作成し、かっこを使用せずにList.Containsと入力しました。
Enter キーを押すと、その関数に関するドキュメントが表示されます。
List.Contains は、リストに値が含まれているかどうかを示します。
したがって、最初のパラメータとしてリストが必要で、その後に値が追加されます。その値がリスト内で見つかった場合は、true を返します。それ以外の場合は false を返します。
クエリに必要な変更を加えることができるように、もう一度詳細エディターを開きます。
値が null に等しくないかどうかをテストする代わりに、 List.Contains を使用します。
次に、この関数に適用する値のリストを示します。
中括弧をリスト初期化子として使用します。これらの中括弧の中に 0、1 を入れます。括弧を閉じた後にカンマを追加します。
2 番目のパラメーターには、WDStartNum を使用します。次に、右括弧を追加します。
これを設定すると、0 または 1 で WDStartNumber が得られることになります。0 または 1 以外の値が配置された場合、結果は 0 になるはずです。
TestQuery に 2020 を入れてテストしてみましょう。予想どおり、これは「0」(ゼロ)を返します。
これは、値 2020 がリストにないためです。
M 関数へのパラメータの追加
コードが機能していることを確認したので、実際の日付テーブルと M 関数内にコードを配置することができます。Advanced Editorを開いてロジックをコピーします。
次に、日付テーブル クエリに進みます。
高度なエディターを使用して元のM 関数を開きます。
次に、そこにコードを貼り付けます。行末にカンマがあることを確認してください。
次に、パラメータ名を強調表示してコピーします。
次に、そのパラメータをここに追加します。
まず既存の行の末尾にカンマを追加し、それからこのパラメータをオプションであると宣言する必要があることに注意してください。次に、WDStartNum を配置し、タイプを追加します。
パラメーターを追加し、ロジックも埋め込みました。しかし、期待どおりの結果が得られるかどうかも確認する必要があります。そこで、曜日をカバーするコード行を探します。
次に、 + WDStartを追加します。
「完了」をクリックしてエディタを閉じます。次に、クエリを呼び出します。
StartDate には 2020 年 1 月 1 日を入力し、EndDate として 2020 年 12 月 31 日を使用します。
会計年度の開始月として「7」を使用し、WDStartNum として「0」を入力します。
「呼び出す」をクリックします。これで日付テーブルができました。
簡単に識別できるように名前を変更します。
さて、結果を確認してみます。
これは私のDayOfWeekコラムです。
月曜日が 0 として返されたことがわかります。
フォーラムの質問に戻りますが、週の始まりの数値を 0 ではなく 1 に変更する必要があります。そこで、メジャー内でそれを変更するだけです。
Enter キーを押すと、月曜日が 0 日ではなく 1 日になります。
番号の範囲を見ると、0 ~ 6 ではなく 1 ~ 7 になるようになりました。
null 値を渡すとどうなりますか?
その後、月曜日の DayOfWeek は 0 に戻ります。
M 関数を使用して拡張 LuckyTemplates 日付テーブルを作成する
LuckyTemplates の M コードの初心者ガイド
Power Query 日付テーブルの動的な開始日と終了日を設定する
結論
これは、日付テーブル クエリの M 関数に直接追加パラメーターを追加する方法です。先ほども述べたように、プロセスはまったく複雑ではありません。M コードのソースがあれば、そこからは簡単です。
繰り返しになりますが、 M コードがどのように機能するかについての知識がない場合は、 Onlineの高度なデータ変換とモデリング コースをいつでも確認できます。
ではごきげんよう、
メリッサ
***** LuckyTemplates を学習していますか? *****
Python における Self とは: 実際の例
R の .rds ファイルからオブジェクトを保存および読み込む方法を学習します。このブログでは、R から LuckyTemplates にオブジェクトをインポートする方法についても説明します。
この DAX コーディング言語チュートリアルでは、GENERATE 関数の使用方法とメジャー タイトルを動的に変更する方法を学びます。
このチュートリアルでは、マルチスレッド動的ビジュアル手法を使用して、レポート内の動的データ視覚化から洞察を作成する方法について説明します。
この記事では、フィルター コンテキストについて説明します。フィルター コンテキストは、LuckyTemplates ユーザーが最初に学習する必要がある主要なトピックの 1 つです。
LuckyTemplates Apps オンライン サービスが、さまざまなソースから生成されたさまざまなレポートや分析情報の管理にどのように役立つかを示したいと思います。
LuckyTemplates でのメジャー分岐や DAX 数式の結合などの手法を使用して、利益率の変化を計算する方法を学びます。
このチュートリアルでは、データ キャッシュの具体化のアイデアと、それが結果を提供する際の DAX のパフォーマンスにどのように影響するかについて説明します。
これまで Excel を使用している場合は、ビジネス レポートのニーズに合わせて LuckyTemplates の使用を開始するのに最適な時期です。
LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて