商品の販売実績を閲覧できるようにダッシュボードを構築しています。
商品にはそれぞれ品番が割り振られており、この品番の範囲指定を行いたいです(10番~100番など)
カスタムフィルターにしても範囲指定が出来ず、フィールドをメジャーに変換すると
項目数が多く、選択肢が出てきませんでした。
何か対応できる良案を教えていただけると幸いです。
@mikaaaan_pine 様
ご質問いただきありがとうございます。
大きく2案を提示させていただきます。
現象の原因
お送りいただいたスクリーンショットを確認したところ、フィルター条件の選択肢が「次と等しい」「次で始まる」「次を含む」など、文字列型の比較条件のみとなっています。
QuickSight では、フィールドのデータ型によって使用できるフィルター条件が異なります。
| データ型 | 使用可能なフィルター条件 | 範囲指定 |
|---|---|---|
| 文字列(String) | 次と等しい、次で始まる、次を含む 等 | 不可 |
| 数値(Integer / Decimal) | 次以上、次以下、次の間(Between) 等 | 可能 |
参考:数値フィルターの追加 - Amazon QuickSight
参考:サポートされるデータ型 - Amazon QuickSight
現在、品番フィールドが文字列型として認識されているため、数値的な範囲指定ができない状態です。原因としては以下のいずれかが考えられます。
- 品番が純粋な数値(
10,50,100)であっても、データ取り込み時に文字列型として認識された - 品番にアルファベットやハイフンが含まれている(
A-001,BK-050など)
以下、品番の形式に応じた2つの解決策をご案内します。
案1:品番が数値のみの場合
品番が 10, 50, 100 のような純粋な数値で構成されている場合の対応方法です。
ステップ1:品番フィールドを数値型にする
以下の 方法 A または 方法 B のいずれかを選択してください。
方法A:データセットのデータ型を直接変更する
| メリット | デメリット |
|---|---|
| 設定が最も簡単(数クリックで完了) | データセット全体に影響するため、このデータセットを使用している他の分析にも変更が反映される |
| 追加のフィールドが増えないため管理がシンプル | 品番を文字列として使用している他の分析がある場合、動作に影響する可能性がある |
手順:
- QuickSight コンソールで、該当の データセット を開きます
- 「データセットを編集」 をクリックし、データ準備画面を表示します
- フィールド一覧から 品番フィールド を見つけます
- フィールド名の左側にあるデータ型アイコン(「a」=文字列型を示す)をクリックします
- 表示されるメニューから 「#(整数)」 を選択します
- 画面左上の 「保存して公開」 をクリックしてデータセットを保存します
→ この後、ステップ2 に進んでください。フィルター対象のフィールドは 品番フィールド を直接選択します。
方法B:計算フィールドで数値に変換する
| メリット | デメリット |
|---|---|
| 既存のデータセットや他の分析に影響を与えない | 「品番_数値」という追加フィールドが作成されるため、フィールドが増える |
| 分析単位で適用でき、影響範囲を限定できる | 方法 A に比べて1ステップ多い |
手順:
- 分析画面を開きます
- 左上の 「追加」 → 「計算フィールドを追加」 をクリックします
- 以下を入力します:
- 名前:
品番_数値(任意の分かりやすい名前) - 式:
parseInt({品番})
- 名前:
- 「保存」 をクリックします
parseInt関数:文字列を整数に変換する QuickSight の組み込み関数です。変換できない値(アルファベットを含む場合など)は結果に含まれません(計算フィールドでは NULL として扱われます)。小数を含む値は切り捨てて整数に変換されます(例:‘2.99’ → 2)。
→ この後、ステップ2 に進んでください。フィルター対象のフィールドは 品番_数値(計算フィールド)を選択します。
ステップ2:パラメータを2つ作成する
品番の下限値と上限値を受け取るためのパラメータを作成します。
注意:公式ドキュメントではパラメータ名に英数字(alphanumeric)を推奨しています。以下の例では分かりやすさのため日本語名を使用していますが、環境によっては英字名(例:
hinban_start/hinban_end)のほうが安全です。
- 左ペインの 「パラメータ」 アイコンをクリックします
- 「パラメータを作成」(+アイコン) をクリックし、以下を設定します:
- 名前:
品番_開始(またはhinban_start) - データ型:整数
- 値:単一値
- 静的デフォルト値:
1(想定される品番の最小値。未入力でも可)
- 名前:
- 「作成」 をクリックします
- 同様にもう1つ作成します:
- 名前:
品番_終了(またはhinban_end) - データ型:整数
- 値:単一値
- 静的デフォルト値:
9999(想定される品番の最大値。未入力でも可)
- 名前:
- 「作成」 をクリックします
ステップ3:コントロールを追加する
閲覧者がパラメータの値を入力するための UI(コントロール)を追加します。
- パラメータ一覧で 「品番_開始」 の右側メニュー(v アイコン)→ 「コントロールを追加」 をクリックします
- 以下を設定します:
- 表示名:
品番(開始) - スタイル:テキストフィールド
- 表示名:
- 「追加」 をクリックします
- 同様に 「品番_終了」 にもコントロールを追加します:
- 表示名:
品番(終了) - スタイル:テキストフィールド
- 表示名:
- 「追加」 をクリックします
コントロールはシート上部に表示されます。ダッシュボード公開後、閲覧者はここに数値を入力して絞り込みを行えます。
ステップ4:フィルターを作成し、パラメータと連携する
- 左ペインの 「フィルター」 アイコンをクリックします
- 「フィルターを追加」(+アイコン) → フィールド一覧から対象フィールドを選択します
- 方法 A を選択した場合:品番フィールド(整数型に変更済み)
- 方法 B を選択した場合:品番_数値(計算フィールド)
- 追加されたフィルターをクリックして展開します
- 「フィルター条件」 で 「次の間(Between)」 を選択します
- 「パラメータの使用」 を有効にします(トグルをオンにします)
- 「最小値」 のドロップダウンからパラメータ 「品番_開始」 を選択します
- 「最大値」 のドロップダウンからパラメータ 「品番_終了」 を選択します
- 「適用」 をクリックします
注意:公式ドキュメントによると、数値フィルターの比較値は正の整数である必要があり、カンマを含めることはできません。品番に値
0を使用している場合や負の値を含む場合はご注意ください。
ステップ5:動作確認
- 画面上部のコントロールに、品番(開始)=
10、品番(終了)=100を入力します - ビジュアルに品番 10〜100 の商品のみが表示されることを確認します
- ダッシュボードとして公開し、閲覧者がコントロールから範囲を変更できることを確認します
案2:品番にアルファベット等の文字列が含まれる場合
品番が A-001、BK-050、WH-200 のようにアルファベットやハイフンを含む形式の場合、parseInt で直接変換すると NULL になります。
この案では、品番から数値部分のみを抽出した 品番_数値 フィールドをフィルター専用として作成し、パラメータ+コントロールで範囲指定を行います。
ポイント:ビジュアルには元の品番を表示し、フィルターは 品番_数値 で行う
- ビジュアル(テーブルやグラフ)のフィールドウェルには、元の
品番フィールドをそのまま配置します 品番_数値はビジュアルに配置する必要はありません(フィルター専用フィールド)- QuickSight のフィルターは、同一データセット内のフィールドであれば、ビジュアルに表示されていなくても適用されます
これにより、閲覧者はコントロールで数値範囲(例:10〜100)を入力すると、元の品番(A-010、BK-050 など)が表示されたまま、該当する範囲の商品だけに絞り込まれます。
ステップ1:品番から数値部分を抽出する
品番の形式やご要件に応じて、以下の 方法 A、方法 B、方法 C のいずれかを選択してください。
| 品番形式 | 例 | 推奨する方法 |
|---|---|---|
| プレフィックス + 区切り文字 + 数値 | A-001, BK-050 |
方法 A(計算フィールドで抽出) |
| 数値 + 区切り文字 + ポストフィックス | 001-A, 050-BK |
方法 A(計算フィールドで抽出) |
| 日本語プレフィックス + 区切り文字 + 数値 | 商品-001, 部品-050 |
方法 A(計算フィールドで抽出) |
| 数値 + 区切り文字 + 日本語ポストフィックス | 001-商品, 050-部品 |
方法 A(計算フィールドで抽出) |
| 区切り文字なし(文字部分の桁数が固定) | A001, BK050, 001A, 050BK |
方法 A(right/left + parseInt) |
| 区切り文字なし・日本語プレフィックス(文字数固定) | 商品001, 部品050 |
方法 A(right + parseInt) |
| 区切り文字なし・日本語ポストフィックス(文字数固定) | 001商品, 050部品 |
方法 A(left + parseInt) |
| 区切り文字なし(文字部分の桁数が不定、または複雑な形式) | A001 と BK050 が混在、2026-A-001 |
方法 A(replace)または 方法 B(カスタム SQL) |
| 区切り文字なし・日本語(桁数不定) | 商品001 と カテゴリ200 が混在 |
方法 A(replace)または 方法 B(カスタム SQL) |
| 命名規則が不規則、または独自の番号体系で管理したい | 任意 | 方法 C(データソースに数値列を手動追加) |
方法A:計算フィールドを使って数値部分を抽出する
| メリット | デメリット |
|---|---|
| QuickSight 内で完結し、SQL の知識が不要 | split はデータセット編集画面でのみ使用可能(分析画面では不可) |
| 区切り文字が明確な品番形式に適している | 区切り文字がない品番には対応できない |
重要:
split関数は データセット編集画面(データ準備)でのみ使用可能 です。分析画面の計算フィールドでは使用できません。また、Microsoft SQL Server へのダイレクトクエリではサポートされていません。
手順:
- QuickSight コンソールで該当のデータセットを開きます
- 「データセットを編集」 をクリックし、データ準備画面を表示します
- 左側の 「計算フィールドを追加」 をクリックします
- 以下を入力します:
- 名前:
品番_数値 - 式(ハイフン区切りの場合):
parseInt(split({品番}, '-', 2)) - ポストフィックス型(
001-A,050-BKのように数値が先頭にある場合):parseInt(split({品番}, '-', 1)) - 区切り文字がスラッシュ(
/)の場合は'-'を'/'に変更してください - position の数値は、分割後の配列のうち数値部分が何番目にあるかを指定します(1始まり)
- 名前:
- 「保存」 → 「保存して公開」 をクリックします
変換例:
プレフィックス型(position = 2):
| 元の品番 | split({品番}, '-', 2) の結果 |
parseInt(...) の最終結果 |
|---|---|---|
A-001 |
001 |
1 |
BK-050 |
050 |
50 |
WH-200 |
200 |
200 |
X-1234 |
1234 |
1234 |
ポストフィックス型(position = 1):
| 元の品番 | split({品番}, '-', 1) の結果 |
parseInt(...) の最終結果 |
|---|---|---|
001-A |
001 |
1 |
050-BK |
050 |
50 |
200-WH |
200 |
200 |
1234-X |
1234 |
1234 |
※
parseIntは先頭のゼロを除去し、純粋な整数値に変換します。
解説:
split({品番}, '-', N)でハイフンを区切り文字として品番を分割し、N 番目の要素(数値部分の文字列)を取得します。プレフィックス型(A-001)なら N=2、ポストフィックス型(001-A)なら N=1 です。それをparseIntで整数に変換します。
品番に日本語が含まれる場合:日本語(全角文字)を含む品番でも、区切り文字で分割できれば方法 A は同様に動作します。
プレフィックス型(日本語 + 区切り文字 + 数値):
| 元の品番(日本語含む) | split({品番}, '-', 2) の結果 |
parseInt(...) の最終結果 |
|---|---|---|
商品-001 |
001 |
1 |
部品-050 |
050 |
50 |
カテゴリA-200 |
200 |
200 |
ポストフィックス型(数値 + 区切り文字 + 日本語):
| 元の品番(日本語含む) | split({品番}, '-', 1) の結果 |
parseInt(...) の最終結果 |
|---|---|---|
001-商品 |
001 |
1 |
050-部品 |
050 |
50 |
200-カテゴリA |
200 |
200 |
注意:全角数字について
品番に全角数字(123)が含まれている場合、parseIntは全角数字を認識しません(NULL になります)。全角数字が混在している場合は、データソース側で事前に半角に変換するか、方法 C(手動で数値列を追加)をご利用ください。
区切り文字がない品番の場合:品番に区切り文字がなく、英字と数値が直接結合されている場合(A001, BK050, 001A など)でも、数値部分の桁数または文字部分の桁数が固定であれば、right / left + parseInt で対応可能です。
パターン1:プレフィックスの文字数が固定の場合
英字が常に N 文字 + 数値部分(例:英字1文字 + 数値 → A001, B050、英字2文字 + 数値 → BK050, WH200)
parseInt(right({品番}, strlen({品番}) - N))
- 英字1文字の場合(
A001):parseInt(right({品番}, strlen({品番}) - 1)) - 英字2文字の場合(
BK050):parseInt(right({品番}, strlen({品番}) - 2))
| 元の品番 | N | 式の結果 | parseInt の最終結果 |
|---|---|---|---|
A001 |
1 | 001 |
1 |
B050 |
1 | 050 |
50 |
BK050 |
2 | 050 |
50 |
WH200 |
2 | 200 |
200 |
パターン2:ポストフィックスの文字数が固定の場合
数値部分 + 英字が常に N 文字(例:数値 + 英字1文字 → 001A, 050B、数値 + 英字2文字 → 050BK, 200WH)
parseInt(left({品番}, strlen({品番}) - N))
- 英字1文字の場合(
001A):parseInt(left({品番}, strlen({品番}) - 1)) - 英字2文字の場合(
050BK):parseInt(left({品番}, strlen({品番}) - 2))
| 元の品番 | N | 式の結果 | parseInt の最終結果 |
|---|---|---|---|
001A |
1 | 001 |
1 |
050B |
1 | 050 |
50 |
050BK |
2 | 050 |
50 |
200WH |
2 | 200 |
200 |
パターン3:プレフィックスの長さが不定だが、使われる文字が限定されている場合
プレフィックスの文字数が品番によって異なる場合(A001, BK050 が混在)は、replace で既知の英字を除去し、残った数値部分を parseInt で変換できます。
parseInt(
replace(replace(replace(replace(replace(replace(
{品番}, 'A', ''), 'B', ''), 'C', ''), 'K', ''), 'W', ''), 'H', '')
)
| 元の品番 | replace 後 |
parseInt の最終結果 |
|---|---|---|
A001 |
001 |
1 |
BK050 |
050 |
50 |
WH200 |
200 |
200 |
※ 品番に使われる英字をすべて
replaceで除去する必要があります。英字の種類が多い場合はreplaceのネストが深くなるため、方法 B(カスタム SQL の正規表現)のほうがシンプルです。
品番に日本語が含まれる場合:日本語の文字列部分も right/left/replace で同様に処理できます。ただし、日本語は1文字あたり strlen で1としてカウントされます。
パターン1(日本語プレフィックスが固定長):
| 元の品番 | 日本語文字数 | 式 | 最終結果 |
|---|---|---|---|
商品001 |
2文字 | parseInt(right({品番}, strlen({品番}) - 2)) |
1 |
商品050 |
2文字 | 同上 | 50 |
カテゴリ200 |
4文字 | parseInt(right({品番}, strlen({品番}) - 4)) |
200 |
パターン2(日本語ポストフィックスが固定長):
| 元の品番 | 日本語文字数 | 式 | 最終結果 |
|---|---|---|---|
001商品 |
2文字 | parseInt(left({品番}, strlen({品番}) - 2)) |
1 |
050商品 |
2文字 | 同上 | 50 |
200カテゴリ |
4文字 | parseInt(left({品番}, strlen({品番}) - 4)) |
200 |
パターン3(日本語部分の長さが不定):
parseInt(
replace(replace(replace(
{品番}, '商品', ''), '部品', ''), 'カテゴリ', '')
)
| 元の品番 | replace 後 |
parseInt の最終結果 |
|---|---|---|
商品001 |
001 |
1 |
部品050 |
050 |
50 |
カテゴリ200 |
200 |
200 |
※ 日本語の場合は1文字ずつではなく、単語単位(
'商品','部品'など)でreplaceすると効率的です。品番に使われる日本語接頭辞/接尾辞が限定されている場合に有効です。
注意:
right、left、strlen、replaceはいずれもデータセット編集画面(データ準備)と分析画面の両方で使用可能です。splitとは異なり、分析画面の計算フィールドでも使えます。
上記パターンの手順(パターン1〜3共通):
- QuickSight コンソールで該当のデータセットを開きます(または分析画面を開きます)
- 「計算フィールドを追加」 をクリックします
- 以下を入力します:
- 名前:
品番_数値 - 式:上記のいずれかのパターンに対応する式
- 名前:
- 「保存」 をクリックします(データセット編集の場合は 「保存して公開」)
どのパターンにも当てはまらない場合(プレフィックス/ポストフィックスの長さが不定で、使われる文字の種類も多い場合)は、下記の方法 B(カスタム SQL)をご利用ください。正規表現
[0-9]+で任意の位置から数値部分を抽出できます。
方法B:カスタム SQL で数値部分を抽出する
| メリット | デメリット |
|---|---|
| 正規表現が使えるため、どんな品番形式にも柔軟に対応可能 | SQL の知識が必要 |
| データソース側で処理するため QuickSight の制約を受けない | 新しいデータセットを作成する必要がある |
手順:
- QuickSight コンソールで 「データセット」 → 「新しいデータセット」 をクリックします
- データソースを選択して接続します
- テーブル選択画面で 「カスタム SQL を使用」 をクリックします
- データベースエンジンに応じた SQL を入力します:
Amazon Athena / Presto の場合:
SELECT
*,
CAST(regexp_extract(品番, '[0-9]+') AS INTEGER) AS 品番_数値
FROM your_table
Amazon Redshift の場合:
SELECT
*,
CAST(REGEXP_SUBSTR(品番, '[0-9]+') AS INTEGER) AS 品番_数値
FROM your_table
MySQL の場合:
SELECT
*,
CAST(REGEXP_SUBSTR(品番, '[0-9]+') AS UNSIGNED) AS 品番_数値
FROM your_table
PostgreSQL の場合:
SELECT
*,
CAST(SUBSTRING(品番 FROM '[0-9]+') AS INTEGER) AS 品番_数値
FROM your_table
- 「クエリを確認」 をクリックし、
品番_数値カラムに正しく数値が入っていることを確認します - 「保存して公開」 をクリックします
変換例(Athena の regexp_extract の場合):
| 元の品番 | regexp_extract(品番, '[0-9]+') の結果 |
CAST(... AS INTEGER) の最終結果 |
|---|---|---|
A001 |
001 |
1 |
BK050 |
050 |
50 |
WH200 |
200 |
200 |
2026-A-001 |
2026 |
2026 |
※
regexp_extractは最初に一致した連続する数字列を返します。2026-A-001のように複数の数値部分がある場合は先頭の2026が抽出されるため、品番の構造に合わせて正規表現を調整してください(例:末尾の数値を取得したい場合はregexp_extract(品番, '([0-9]+)$'))。
品番に日本語が含まれる場合:SQL の [0-9]+ は半角数字のみにマッチするため、日本語文字は自動的にスキップされます。日本語を含む品番でも正常に数値部分を抽出できます。
| 元の品番(日本語含む) | regexp_extract(品番, '[0-9]+') の結果 |
最終結果 |
|---|---|---|
商品001 |
001 |
1 |
部品050号 |
050 |
50 |
カテゴリ200番 |
200 |
200 |
方法C:データソースに数値列を手動で追加する(任意の値を設定したい場合)
| メリット | デメリット |
|---|---|
| 品番と数値の対応を自由に設定できる(自動抽出に依存しない) | データソース側に列を追加する作業が必要 |
| 品番の命名規則に関係なく、任意の並び順・グルーピングが可能 | 新しい商品が追加されるたびに数値の割り当てを更新する必要がある |
| 最もシンプルで確実な方法 | データの管理負荷がやや増加する |
品番から数値を自動抽出するのではなく、品番ごとに任意の数値を手動で割り当てる方法です。品番の命名規則が複雑な場合や、独自の順番・グループ番号で範囲指定したい場合に最適です。
手順:
-
データソース(Excel、CSV、データベーステーブルなど)に
品番_数値という列を追加します -
各品番に対して、範囲指定に使用する数値を割り当てます
例:
品番 品番_数値 A-00110BK-05050WH-200200SP-CUSTOM500 -
QuickSight でデータセットを更新(再取り込み)します
-
品番_数値が整数型として認識されていることを確認します(文字列型の場合はデータ型を整数に変更してください)
補足:
- Excel や CSV の場合:ファイルに列を追加して再アップロードするだけで完了します
- データベースの場合:テーブルに
品番_数値カラムを ALTER TABLE で追加し、各レコードに値を設定します- データの更新頻度が高い場合は、マスターテーブル(品番と数値の対応表)を別途用意し、JOIN で結合する方法も有効です
マスターテーブルを使った JOIN の例(カスタム SQL):
SELECT
t.*,
m.品番_数値
FROM your_table t
LEFT JOIN 品番マスター m ON t.品番 = m.品番
→ この後、案1のステップ2〜ステップ5を適用してください。フィルター対象のフィールドは 品番_数値 を選択します。ビジュアルには元の 品番 フィールドを表示してください。
この方法が向いているケース:
- 品番の命名規則が不規則で、自動抽出が困難な場合
- 品番とは無関係に、独自の番号体系(表示順、カテゴリ番号など)で範囲指定したい場合
- 品番の一部だけを特定のグループとして管理したい場合
ステップ2以降:パラメータ・コントロール・フィルターの設定
案1のステップ2〜ステップ5をそのまま適用してください。
フィルター対象のフィールドは、ここで作成した 品番_数値 を選択します。
2案の比較
| 観点 | 案1(数値のみの品番) | 案2(文字列を含む品番) |
|---|---|---|
| 対象の品番形式 | 10, 50, 100 |
A-001, BK-050, A001 |
| 数値化の方法 | データ型変更 or parseInt |
計算フィールド or カスタム SQL or 手動列追加 |
| 設定の簡単さ | ★★★〜★★☆ | ★★☆〜★☆☆ |
| 閲覧者が範囲を変更可能か | ○(パラメータ+コントロール) | ○(パラメータ+コントロール) |
| 既存分析への影響 | 方法 A:あり / 方法 B:なし | なし(新規フィールド追加) |
おすすめの選び方
- 品番が数値のみ → 案1(方法 A が最もシンプル。他の分析への影響を避けたい場合は方法 B)
- 品番にアルファベットが含まれる → 案2(区切り文字があれば方法 A、複雑な形式なら方法 B、自由に設定したいなら方法 C)
参考リンク
ご回答ありがとうございます。
フィルターを適用したいフィールドは既にinteger型(青い#)になっております。
フィルターの編集を使用とすると「このフィールドは、個別の値が多すぎます」と表示されるのですがこれが原因なのでしょうか?
@mikaaaan_pine
追加情報ありがとうございます。
以下の対応で解決できると思われます。
=====
原因
「このフィールドは、個別の値が多すぎます。以下の値を検索してください。」というメッセージはエラーではありません。
スクリーンショットを拝見しますと、「フィルタータイプ」 が 「フィルターリスト」 に設定されています。これが原因です。
| フィルタータイプ | 動作 | 値が多い場合 |
|---|---|---|
| フィルターリスト | フィールド内のすべてのユニーク値を一覧表示し、チェックボックスで選択する方式 | 個別の値が多すぎる場合(おおむね1,000件以上)、リストを表示できず検索ボックスに切り替わる |
| フィルター条件 | 比較条件(次の間、次以上、次以下 等)を指定して絞り込む方式 | 値の個数に依存しない(範囲を直接入力するため) |
つまり、フィールドが整数型であっても、フィルタータイプが「フィルターリスト」のままでは範囲指定(Between)の選択肢が表示されません。フィルタータイプを「フィルター条件」に変更することで解決します。
対応手順
方法1:フィルター条件で直接範囲を指定する(最もシンプル)
- フィルターの編集画面で、「フィルタータイプ」 のドロップダウンを開きます
- 「フィルターリスト」 から 「フィルター条件」 に変更します
- 「フィルター条件」 のドロップダウンから 「次の間(Between)」 を選択します
- 「最小値」 と 「最大値」 に品番の範囲を入力します(例:最小値 =
10、最大値 =100) - 「適用」 をクリックします
これで、指定した範囲の品番のみがビジュアルに表示されます。
方法2:パラメータ+コントロールで閲覧者が動的に範囲を変更できるようにする
方法1では分析の作成者しかフィルター値を変更できません。ダッシュボードの閲覧者が自由に範囲を変更できるようにするには、以下の追加設定を行います。
注意:フィールドが既に整数型のため、前回ご案内した「ステップ1:品番フィールドを数値型にする」は不要です。ステップ2 から開始してください。
ステップ1:パラメータを2つ作成する
- 左ペインの 「パラメータ」 アイコンをクリックします
- 「パラメータを作成」(+アイコン) をクリックし、以下を設定します:
- 名前:
cccode_start(任意の英数字名) - データ型:整数
- 値:単一値
- 静的デフォルト値:
1(想定される最小値)
- 名前:
- 「作成」 をクリックします
- 同様にもう1つ作成します:
- 名前:
cccode_end - データ型:整数
- 値:単一値
- 静的デフォルト値:
9999(想定される最大値)
- 名前:
- 「作成」 をクリックします
ステップ2:コントロールを追加する
- パラメータ一覧で 「cccode_start」 の右側メニュー(v アイコン)→ 「コントロールを追加」 をクリックします
- 以下を設定します:
- 表示名:
品番(開始) - スタイル:テキストフィールド
- 表示名:
- 「追加」 をクリックします
- 同様に 「cccode_end」 にもコントロールを追加します:
- 表示名:
品番(終了) - スタイル:テキストフィールド
- 表示名:
- 「追加」 をクリックします
ステップ3:フィルターを作成し、パラメータと連携する
- 左ペインの 「フィルター」 アイコンをクリックします
- 「フィルターを追加」(+アイコン) → フィールド一覧から
cccodeを選択します - 追加されたフィルターをクリックして展開します
- 「フィルタータイプ」 を 「フィルター条件」 に変更します
- 「フィルター条件」 で 「次の間(Between)」 を選択します
- 「パラメータの使用」 を有効にします(トグルをオンにします)
- 「最小値」 のドロップダウンからパラメータ 「cccode_start」 を選択します
- 「最大値」 のドロップダウンからパラメータ 「cccode_end」 を選択します
- 「適用」 をクリックします
ステップ4:動作確認
- 画面上部のコントロールに、品番(開始)=
10、品番(終了)=100を入力します - ビジュアルに品番 10〜100 のデータのみが表示されることを確認します
- ダッシュボードとして公開し、閲覧者がコントロールから範囲を変更できることを確認します
まとめ
| 状況 | 対応 |
|---|---|
| 「個別の値が多すぎます」のメッセージが表示される | フィルタータイプを「フィルターリスト」→「フィルター条件」に変更 |
| 範囲指定(Between)が選択肢にない | フィルタータイプが「フィルターリスト」のままになっている可能性あり → 「フィルター条件」に変更 |
| 閲覧者が動的に範囲を変更できるようにしたい | パラメータ+コントロール+フィルター連携を設定 |
参考リンク
ありがとうございます。
ご記載いただいた"フィルター条件"がフィルタータイプのドロップダウン候補にありませんでした。
カスタムフィルターリスト、カスタムフィルター、上位と下位のフィルター、ネストされたフィルター全てを確認しましたが、「次の間」という表記を確認することが出来ませんでした。
@mikaaaan_pine
追加情報ありがとうございます。
前回「フィルタータイプをフィルター条件に変更してください」と書いてしまいましたが、正確には、カスタムフィルターを選択してください。
以下の通りです。
-
フィルターリスト
-
カスタムフィルターリスト
-
カスタムフィルター ← こちらが正しい選択肢です
-
上位と下位のフィルター
-
ネストされたフィルター
**「カスタムフィルター」を選択していただくと、その中に「フィルター条件」**という設定項目が表示され、そこで比較タイプ(次の間 / 次以上 / 次以下 等)を選択できます。
もし、上記でも解決できないようであれば、エラーメッセージやスクリーンショットなどを追加情報としていただけないでしょうか?
可能性としては、集計型の関数等を使っているなどが考えられますが、今回のケースでは品番ですので、大丈夫と思われます。
@mikaaaan_pine
スクリーンショットのご共有ありがとうございます。状況を確認いたしました。
お送りいただいた2枚目のスクリーンショットにて、「カスタムフィルター」選択後の「フィルター条件」に「次と等しい」「次で始まる」「次を含む」等のテキスト比較条件のみが表示されており、「次の間(Between)」が存在しないことを確認いたしました。
原因
お送りいただいたスクリーンショットの「フィルター条件」の選択肢(次と等しい / 次で始まる / 次を含む 等)は、カテゴリフィルター(テキストフィルター) の比較条件です。
スクリーンショットに表示されているフィルタータイプの選択肢(フィルターリスト / カスタムフィルターリスト / カスタムフィルター / 上位と下位のフィルター / ネストされたフィルター)は、カテゴリフィルター(テキストフィルター) の UI です。
QuickSight では、数値型(Integer)のフィールドであっても、ディメンションとして配置されている場合、フィルターを追加するとカテゴリフィルターとして作成されます。カテゴリフィルターには「次の間(Between)」の比較条件は存在しません。
「次の間(Between)」を使用するには、数値フィルターとして作成する必要があります。
| フィルターの種類 | 表示されるUI | Between の有無 |
|---|---|---|
| カテゴリフィルター(フィールドがディメンションの場合) | フィルターリスト / カスタムフィルターリスト / カスタムフィルター / 上位と下位 / ネスト | なし |
| 数値フィルター(フィールドがメジャーの場合) | フィルター条件(次の間、次以上、次以下 等)を直接選択 | あり |
参考:数値フィルターの追加 - Amazon QuickSight
公式ドキュメントには以下の記載があります:
“To use a top and bottom filter for numeric data (analyses only), first change the field from a measure to a dimension. Doing this converts the data to text. Then you can use a text filter.”→ つまり逆に、ディメンションに変換されたフィールドはテキストフィルター(カテゴリフィルター)として扱われます。数値フィルターを使用するには、フィールドがメジャーである必要があります。
対応手順
方法1:フィールドを「メジャー」に変換してからフィルターを作成する
- 現在のフィルターを削除します(フィルター一覧で該当フィルターの右側メニュー → 「削除」)
- 左側のフィールドリストで
cccodeフィールドを見つけます - フィールドが「ディメンション」セクション(上部)にある場合、フィールド名をクリックし、メニューから 「メジャーに変換」 を選択します
- 再度 「フィルターを追加」(+アイコン) をクリックし、
cccodeを選択します - フィルターが数値フィルターとして作成され、「フィルター条件」 のドロップダウンが表示されます
- 「次の間(Between)」 を選択します
- 「最小値」 と 「最大値」 に範囲を入力します(例:最小値 =
10、最大値 =100) - 「適用」 をクリックします
注意:フィールドをメジャーに変換しても、ビジュアルのフィールドウェルに直接影響はありません。ただし、既にビジュアルにディメンションとして配置している場合は、表示が変わる可能性があります。その場合は方法2をお試しください。
方法2:フィルターの「集計」を設定する(フィールドの変換なし)
フィールドをディメンションのまま維持したい場合は、以下の方法で数値フィルターの動作を再現できます。
- 現在のフィルターを削除します
- 「フィルターを追加」 →
cccodeを選択します - フィルターの編集画面で、「集計」(Aggregation)が表示されている場合、ドロップダウンから集計方法(例:「集計なし」)を選択します
- 集計を設定すると、フィルター条件として 「次の間(Between)」 が選択可能になります
- 最小値・最大値を入力し、「適用」 をクリックします
注意:「集計」オプションは分析画面でのみ使用可能です。データセット編集画面では使用できません。
補足:フィールドがディメンションの場合、フィルター追加時に「集計」オプション自体が表示されないことがあります。その場合は方法1(メジャーに変換)をお試しください。
方法3:パラメータ+計算フィールドで対応する(最も確実)
上記の方法でうまくいかない場合は、前回ご案内したパラメータ+コントロール方式が最も確実です。
- パラメータ2つを作成(
cccode_start/cccode_end、データ型:整数) - コントロール2つを追加(テキストフィールド)
- 計算フィールドを作成して範囲判定を行う:
ifelse( {cccode} >= ${cccode_start} AND {cccode} <= ${cccode_end}, 'in_range', 'out_of_range' ) - この計算フィールドにカテゴリフィルターを追加し、
in_rangeのみを含むよう設定
ただし、方法1で数値フィルターとして作成し直すのが最もシンプルです。
まとめ
| 状況 | 原因 | 対応 |
|---|---|---|
| 「フィルタータイプ」にフィルターリスト等しか表示されない | フィールドがディメンションとして扱われ、カテゴリフィルターが作成されている | フィールドをメジャーに変換してからフィルターを作成し直す |
| 「カスタムフィルター」を選んでも「次の間」がない | カテゴリフィルターの「カスタムフィルター」には Between がない | 数値フィルターとして作成する(上記方法1) |
| 「個別の値が多すぎます」のメッセージ | カテゴリフィルターのリスト表示の制限 | 上記と同じ(数値フィルターでは発生しない) |
お願い
方法1をお試しいただき、cccode をメジャーに変換後にフィルターを追加した際の画面を確認していただけますでしょうか。「フィルター条件」のドロップダウンに「次の間(Between)」 が表示されるはずです。
もし他のビジュアルへの影響が懸念される場合は、その旨お知らせいただければ代替案を検討させていただきます。
参考リンク
回答ありがとうございました。
メジャーに変換し、パラメータでの制御が出来るようになりました。




