以下のようなダミーデータを作り試してみました。
データ
shareholder_id,record_date,shares
S0001,20230331,100
S0001,20230930,100
S0001,20240331,100
S0001,20240930,100
S0001,20250331,100
S0001,20250930,100
S0002,20230331,100
S0002,20230930,0
S0002,20240331,0
S0002,20240930,0
S0002,20250331,0
S0002,20250930,0
S0003,20230331,100
S0003,20230930,200
S0003,20240331,200
S0003,20240930,300
S0003,20250331,300
S0003,20250930,300
S0004,20230331,200
S0004,20230930,100
S0004,20240331,100
S0004,20240930,100
S0004,20250331,100
S0004,20250930,100
作成手順
-
データセット作成
ファイルをアップロードし、record_dateを日付型に変換します
-
計算式を3つ作成
名前:prev_shares
lag(
sum({shares}),
[{record_date} ASC],
1,
[{shareholder_id}]
)
名前:movement
ifelse(
{prev_shares} = 0 AND sum({shares}) > 0, '新規購入',
{prev_shares} > 0 AND sum({shares}) = 0, '全売却',
sum({shares}) = {prev_shares}, '維持',
sum({shares}) > {prev_shares}, '増加',
sum({shares}) < {prev_shares}, '減少',
'不明'
)
名前:prev_bucket
ifelse(
{prev_shares} = 0, '0(前回なし)',
{prev_shares} >= 1 AND {prev_shares} < 100, '100以下',
{prev_shares} >= 100 AND {prev_shares} < 200, '100',
{prev_shares} >= 200 AND {prev_shares} < 300, '200',
{prev_shares} >= 300 AND {prev_shares} < 400, '300',
{prev_shares} >= 500 AND {prev_shares} < 600, '500',
{prev_shares} >= 1000 AND {prev_shares} < 1100,'1000',
{prev_shares} >= 30000 AND {prev_shares} < 30100,'30000',
'その他'
)
- ピポットテーブルで可視化
この方式の注意点は以下のとおりです。
- 全売却した株主は行自体が存在しないので「全売却」をカウントできないため、保有株0のレコードを作成する必要があります