0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【クエリビルダ:拡張表現】ValueStoreSet と ValueStoreGet

Last updated at Posted at 2025-01-15

はじめに

この投稿では、ValueStoreSetValueStoreGetの関数がどのように機能するかを見ていきます。
これらの関数を使うことで、値をメモリに保存し、クエリセッションでその値をメモリから取得して使用することができます。
これは、一般的なプログラミング言語で変数を準備し、その変数に値を代入して、後でその値を取り出して使用するという概念に似ています。

リソースの準備

この記事を書く際、良い実用的な例が思い浮かびませんでした。
そのため、実用的ではありませんが、これらの関数を使って以下の結果を表示する例を準備しました。
image.png

UNIONクエリを使用します。
UNIONの最初のクエリ(親クエリ)では、このデータセットから黄色、青、赤のアイテムの合計額を計算し、その値をValueStoreSet関数を使ってメモリに保存します。
その後、2番目以降のクエリでValueStoreGet関数を使って結果を表示します。

データセットは次の通りです;
image.png

これらの行はUNIONクエリによるものです;
image.png

クエリの定義

親クエリ

image.png

"コード::String","色::String","金額::Number"
"A100","赤",200
"A200","青",159
"A300","青",356
"A400","赤",211
"A500","黄",255
"A600","赤",1200
"A700","青",2100
"A800","赤",1940
"A800","青",100
"A900","赤",320
"A100","赤",89
"A110","青",20
"A120","黄",12569
"A130","赤",568
"A140","赤",400
"A150","黄",550
"A160","赤",600
"A170","青",570
"A180","黄",420
  1. 上記に示されたカンマ区切りのリストがデータソースとして使用されます

  2. これらの3つの拡張表現は実際に各色の合計額を計算します
    黄色を例にすると、最初の行では「黄」と記載された行がその金額を表示し、それ以外の色の場合は0を表示します
    2行目以降では、現在の行が「黄」を示している場合、その金額を前の行のこの列の結果に加算します。それ以外の場合は、前の行のこの列の値をそのまま返します
    最後の行になると、この列には黄色の合計額が表示されます

        IIF(StartOfReport
            ,IIF({%色}="黄"
            	, {%金額}
            	,0
        	)
            ,IIF({%色}="黄"
            	,{%Previous:黄色の合計}+{%金額}
            	,{%Previous:黄色の合計}
        	)
        )
    
  3. 各色の合計額は、ValueStoreSet関数を使ってメモリに保存されます
    例えば黄色用の拡張表現では、上記2の拡張表現で計算された黄色の現在の合計値を保存します
    最後の行までくると、黄色の総合計額がメモリに保存されるという仕組みです。指定されたコード YELLOWTOTAL で保存されている値を取得できます。

    ValueStoreSet("YELLOWTOTAL", {%黄色の合計})
    

ユニオンクエリ

3つのUNIONが定義されています。
image.png
各ユニオンクエリは、メモリに保存された各色の合計額を表示します。
これらのクエリは、合計額を表示するだけでよいため、1行だけを返すように設計されています。
こちらは「黄色」の例です。
image.png
拡張表現(コード)と(色)は、これらのタイトルを表示します。
image.png

実行結果

その結果、合計額は親クエリによって正しく計算され、メモリに保存され、UNIONクエリによってメモリから正しく取得されました。
image.png

あとがき

ここでの例は特に意味があるものではありませんが、これらの関数の使用方法が皆様に伝われば幸いに思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?