abe
1
データセットに文字型で2024/03とあった時に、計算フィールドの関数を使って2024/02と表示がしたいです。
下記の関数の組合せで前年月日までは表示が出来ました。
addDateTime(-1, ‘MM’, parseDate(concat({process_getsudo}, ‘/01’), ‘yyyy/MM/dd’))
※{process_getsudo}には’2024/03’が入っています。
ここからYYYY/MMの形式にしたいんですが、方法が分かりません。
formatDate関数を使ってみたところ、計算フィールドの保存は出来たのですが、保存して視覚化したところサポートされてませんでインポートエラーとなりました、
formatDate(addDateTime(-1, ‘MM’, (concat({process_getsudo}, ‘/01’), ‘yyyy/MM/dd’)), ‘yyyy/MM’)
toString関数を使って文字型にしてLEFT関数で7桁で切ろうとしましたが、toStringを使うと数字の羅列になり正しく取れませんでした。
YYYY/MMの形式の文字から前月のYYYY/MMの形式で文字を取得する方法を教えてください。
Wakana
2
@abe
ご質問ありがとうございます。
yyyy/MM/ddの形式指定をしているので、取得した前月の日付データを文字列に変換して、7桁分抽出するのがシンプルかと思いますが、いかがでしょうか?
前年月 = addDateTime(-1, ‘MM’, parseDate(concat({process_getsudo}, ‘/01’), ‘yyyy/MM/dd’))
substring(toString({前年月}),1,7)
abe
3
回答ありがとうございます。
頂いた例のとおりにパラメータで文字型変数を作成し、画像のように入力したところパラメータの箇所でエラーとなりました。
パラメータに関数を代入する計算フィールドの使い方が誤っていますか?
Wakana
4
すみません、説明不足でした。
{前年月}とは、計算フィールド名を意図していました。1つの計算フィールドでもできるかと思いますが、まずは、{前年月}の計算フィールドで、前年月がyyyy/mm/dd形式で取得できていることを確認し、新たに、以下の計算フィールドを作成し、それで意図した文字列が取得できるかご確認いただけますか?
substring(toString({前年月}),1,7)
abe
5
確認したところ図のようにtoStringで数字となってしまいました。

Wakana
6
ご連絡いただき、ありがとうございます。
計算フィールドをデータセット上で作成されているかと思いますが、分析で作成してみていただいてもいいですか?
abe
7
年月を取得することは出来たのですが-(ハイフン)でした。
/(スラッシュ)で区切ったYYYY/MMを取得したいです。

分析の計算とデータセットの計算とでは違うのでしょうか?
結果が見れるデータセットを主に使っていました。
汎用性だけの問題と別の質問であったと思います。
Wakana
8
分析の計算フィールドであれば、できたようですね。データセットの計算フィールドでは使用できる関数が限られており、集計計算などはデータセットレベルでは実施されません。今回は、レコードレベルの計算なので問題なくできるはずですが、日付データの扱いにも制限があるのかもしれません。(可能であれば、 AWSサポートにてチケットを作成いただくことで、専門のサポートメンバーがさらに詳細を確認することができます。サポートチケットの作成については、このステップを参照ください)
スラッシュ区切りにしたいのであれば、toStringを使用せずにformatDateで文字列変換した方がいいいかもしれません。以下で試してみてください。
substring(formatDate(前年月, 'yyyy/MM/dd'),1,7)
abe
9
いえ、制限があるのであればデータセットでの計算フィールドは使わないようにします。
YYYY/MMも出来ました。
ありがとうございました。