CLI で作った Dashboard の Pivot テーブルの条件付き書式の設定について

Dashboard を CLI にて作成しています。

コマンドは以下のような形です。

aws quicksight update-dashboard \
--aws-account-id ${AWS_ACCOUNT_ID} \
--dashboard-id ${DASHBOARD_ID} \
--name "ダッシュボード名" \
--definition file://definition-for-release.json \
--version-description "${RELEASE_MESSAGE}" \
--dashboard-publish-options "${DASHBOARD_PUBLISH_OPTIONS}"

definition-for-release.json にリリース用の definition が書かれていて、中で Pivot テーブルの条件付き書式の設定が以下のようにされています。

                {
                  "Cell": {
                    "FieldId": "5bc724f8-5adf-45fc-bdac-6dd7fda0f7d2.5.1720523758663",
                    "TextFormat": {
                      "BackgroundColor": {
                        "Solid": {
                          "Expression": "{割合} < 0",
                          "Color": "#F46C5A"
                        }
                      }
                    },
                    "Scopes": [
                      {
                        "Role": "GRAND_TOTAL"
                      }
                    ]
                  }
                },

こちらを反映したところ、条件付き書式が意図通り付与されませんでした。
意図としては、合計のところだけに背景色を追加したいというものです。
しかし結果としては、全てのセルに対して条件付き書式が付与され背景色がついてしまいました。

原因をさぐるため、完成したあとの dashboard の定義を以下コマンドで取得し中身を確認してみました。

$ aws quicksight describe-dashboard-definition --aws-account-id ${AWS_ACCOUNT_ID} --dashboard-id ${DASHBOARD_ID} >./production-dashboard.json

すると、以下のような JSON になっており、

                                        "Cell": {
                                            "FieldId": "5bc724f8-5adf-45fc-bdac-6dd7fda0f7d2.5.1720523758663",
                                            "TextFormat": {
                                                "BackgroundColor": {
                                                    "Solid": {
                                                        "Expression": "{割合} < 0",
                                                        "Color": "#F46C5A"
                                                    }
                                                }
                                            },
                                            "Scopes": [
                                                {
                                                    "Role": "FIELD_TOTAL"
                                                },
                                                {
                                                    "Role": "GRAND_TOTAL"
                                                },
                                                {
                                                    "Role": "FIELD"
                                                }
                                            ]
                                        }

Scopes が、“GRAND_TOTAL” だけを指定したのにも関わらず、FIELD_TOTAL や FIELD も追加されてしまっていました。

こちらなぜこういった挙動になっているのかご教示いただきたいです。

AWS CLI のバージョンは以下になります。

$ aws --version
aws-cli/2.16.10 Python/3.11.9 Darwin/22.6.0 source/arm64

もし最新バージョンで治っているなどあればそちらも教えてください。

@kaz.morita

ご質問ありがとうございます。

今、最新のCLIで確認したところ、Totalのみに適用した条件付き書式設定は、describe-dashboard-definitionの結果は、Totalのみと出力されています。

$ aws --version
aws-cli/2.17.36 Python/3.11.9 

最新のCLIでご確認ください。

@Wakana
返信と調査いただきありがとうございます。

最新版で試しましたが同様の状態でした。

$ aws --version
aws-cli/2.17.36 Python/3.11.9 Darwin/22.6.0 source/arm64

今、最新のCLIで確認したところ、Totalのみに適用した条件付き書式設定は、describe-dashboard-definitionの結果は、Totalのみと出力されています。

試していただきましたが、こちらは問題ではないです。問題は describe 側ではなく update-dashboard 側です。
(describe は検証方法で問題解決したい場所ではありません)

試していただいたのが、GUIなどにて TOTAL のみの条件付き書式設定が指定されたダッシュボードを describe した時の話だと思いますが、
ダッシュボード自体を CLI で作る際に JSON に "Role": "GRAND_TOTAL" のみを指定した場合でも、作成されたダッシュボードが正しく、Totalのみに書式設定がなされているか確認いただいても良いでしょうか?

@kaz.morita

詳細のご説明ありがとうございます。

今、上記条件付き書式設定のダッシュボードのJSONを使用して、ダッシュボードの更新、新規作成をしましたが、問題なく、書式はGRAND_TOTALSだけで更新、作成されています。

ちなみに、ダッシュボードを更新すると、内部でもっているダッシュボードのVersionが新しく作成されます。UIでダッシュボードを更新すると、その作成されたVersionがすぐに公開されますが、CLI/APIで更新した場合は、新Versionはすぐには公開されません。公開する場合は、update-dashboard-published-versionを実施する必要があります。

@Wakana

ご確認ありがとうございます。
update-dashboard-published-version の件もご案内ありがとうございます。こちら認識しております。

今、上記条件付き書式設定のダッシュボードのJSONを使用して、ダッシュボードの更新、新規作成をしましたが、問題なく、書式はGRAND_TOTALSだけで更新、作成されています

こちらご確認ありがとうございます。
お手数なのですが、実際にどのようなPivot テーブル作成して、どのような JSON を用意し、ダッシュボード更新した結果どのようにうまくいったことが確認できたのかという点について、ご教示いただけないでしょうか?

ピボットテーブル:

条件付き書式設定は上記の通り

JSONは、describe-dashboard-definitionの結果から、definition以下を抽出し、その上部に、必須項目のAWSAccountId, DashboardId, Nameを追加し、JSONとして保管。

    "AwsAccountId": "<account id>", 
    "DashboardId": "<dashboard id>",
    "Name": "<dashboard name>",
    "Definition": {
        "DataSetIdentifierDeclarations": [
    .......

保管したJSONを、update-dashboardにて指定して、更新し、最新のVersionを公開し、上記と変わりないことを確認。

> aws quicksight update-dashbaord --cli-input-json file://<<json file>>

正常に稼働しない場合は、お手数ですが、AWSサポートにてチケットを作成いただくことで、専門のサポートメンバーがさらに詳細を確認することができます。サポートチケットの作成については、このステップを参照ください。