top of page

最新記事リスト

Qlikデータフロー入門_プロセッサー

更新日:6月21日

2025年1月に公開されたQlikのデータフローでどんな加工処理ができるか試してみました


※2025年2月時点のQlik Cloudを利用しています。

■Qlik データフローの基本操作

データフローの基本操作は「データフロー入門」をご確認ください。



■プロセッサーの基本操作

フィルター:不要なレコードを省略、複合条件も設定できデータマネージャより便利

▼「⊕」アイコンから条件式を追加します

▼条件式の設定

  • 処理する項目:先行処理のデータ項目から選択できます

  • 関数を適用:項目値に関数を適用できます

  • [絶対値に]:FAbs([項目])

  • [小文字に]:Lower([項目])

  • [大文字に]:Upper([項目])

  • [最初の文字を小文字に]:Lower(Left([項目],1))

  • [最初の文字を大文字に]:Upper(Left([項目],1))

  • [長さ]:Len([項目])

  • 演算子:各種演算子が設定できます

  • 次を使用:条件式の値を指定します

※「⊕」アイコンで複数の条件式を設定できます

▼一致する行を選択

複数の条件式を設定した際の複合ロジックを設定します

  • すべてのフィルター:条件式A and 条件式B

  • あらゆるフィルター:条件式A or 条件式B

  • どのフィルターでもない:Not 条件式A or 条件式B

  • データフロー_フィルター設定
項目を選択:一部項目のみロードしたり、重複行を削除するようなときに便利

個別値:オンにすると「Load Distinct」が設定されます

ree
結合:2つのテーブルを結合。データマネージャの結合よりフローが残って便利

▼結合タイプ

・左外部結合:LEFT JOIN

・内部結合:INNER JOIN

・右外部結合:RIGHT JOIN

・完全外部結合:OUTER JOIN

ree

集合


フォーク:フローを2つに分離できます

ree

集計:GROUP BYの集計を定義できます

▼グループ基準ー項目:集計軸となる項目を指定します。「⊕」で複数項目の追加が可能です。

▼操作ー項目:集計対象の項目を指定します。「⊕」で複数項目の追加が可能です。

▼演算 ⇒ 参考)データ分析の基本~「集計関数の使い方」

・合計:Sum()

・個数:Count()

・個別値:Count(distinct )

・最大:Max()

・最小:Min()

・平均:Avg()

・連結:Concat()

ree

ソート:ORDER BYで明示的にソートしてロードします

項目とソート順を指定します

Qlikデータフロー_Sort

項目を削除:一部項目を削除します

チェックを入れた項目を削除します。

ree

項目を分割:Subfield関数を定義できます

SubField関数を定義することができます

ree

項目を連結:対象項目と文字列や別項目を連結することができます。プレフィックス、区切り文字、サフィックスの指定も可能です。

ree

Qlikスクリプト:フロー途中にQlikのロードスクリプトを組み込めます

スクリプトを組み込めるので最終手段はこれを使えそうです。

ree

ピボット解除:ピボットデータ(横持ちデータ)を行列入れ替えし出力します

Qlikデータフロー_でピボット


■プロセッサーの基本操作(文字列)

様々な文字列関数を利用した加工ができます

大文字に変換:Upper関数を定義できます

※生成される数式
Upper([処理する項目])

※[処理する項目]のプルダウンの右にあるアイコンで複数の項目を選択可能です

Qlikデータフロー_文字列

小文字に変換:Lower関数を定義できます

※生成される数式
Lower([処理する項目])

※[処理する項目]のプルダウンの右にあるアイコンで複数の項目を選択可能です

Qlikデータフロー_lower

単語の先頭文字を大文字に変換:Capitalize関数を定義できます

※生成される数式
Capitalize([処理する項目])

※[処理する項目]のプルダウンの右にあるアイコンで複数の項目を選択可能です

Qlikデータフロー_Capitalize

検索と置換:Match関数とIF分で文字列を置換できます

※生成される数式
IF(Match([pageTitle], 'Before'), 'After', [pageTitle])
ree

テキストの一部を削除:所定の文字列の一部を削除できます

・演算子「等しい」

※生成される数式
IF(Match([処理する項目], '対象文字列'), '', [処理する項目])

・演算子「含む」

※生成される数式
Replace([処理する項目], '対象文字列', '')

・演算子「次で始まる」

※生成される数式
IF(Match(Left([処理する項目], Len('対象文字列')), '対象文字列'), ''
 & Right([処理する項目], Len([処理する項目]) - Len('対象文字列')), [処理する項目])

・演算子「次で終わる」

※生成される数式の例
IF(Match(Right([pageTitle], Len('対象文字列')), '対象文字列'), 
Left([pageTitle], Len([pageTitle]) - Len('対象文字列')) & '', [pageTitle])

※「次で終わる」の設定

ree

テキストを含む:所定の文字列を含むかどうかTRUE/FALSEで判定できます

※生成される数式
IF(Index([処理する項目], '*対象文字列*'), Dual('TRUE', -1), Dual('FALSE', 0))

※[処理する項目]のプルダウンの右にあるアイコンで複数の項目を選択可能です

Qlikデータフロー_Index

類似のテキストに一致: 所定の文字列とのファジー度(一致しない文字数)でTRUE/FALSE判定できます

※生成される数式の例
IF(LevenshteinDist([pageTitle], 'Qlik Sense') <= 3, Dual('TRUE', -1), Dual('FALSE', 0))

※[処理する項目]のプルダウンの右にあるアイコンで複数の項目を選択可能です

ree

インデックスで値を抽出:Mid関数を定義できます

・開始/終了位置をインデックス指定する例

※生成される数式の例
Mid([pageTitle], 2, 4)

※「開始インデックス」を 1 にすると2文字目から開始されます

データフロー_インデックス値を抽出の設定

・開始/終了位置を「最初から」「最初まで」で指定する例

※生成される数式の例
Mid([pageTitle], 1, Len([pageTitle]))

※「最初から」にすると1文字目から開始されます

※「最後まで」にすると項目の長さが終了位置になります

ree

・開始/終了位置を「最後の前のNから」「最後の前のNまで」で指定する例

※生成される数式の例
Mid([pageTitle], Len([pageTitle]) -0, -4)

※「最後の前の1から」にすると最後の文字が開始位置になります

(値は返ってこないので通常はこんな設定はしません)

ree

★参考

Mid( '87654321' , Len( '87654321' ) - 3, 2) は「43」を返します




英数字以外の文字を削除:英数字以外の文字を削除できます

※生成される数式
KeepChar([処理する項目], '$(ALPHA_NUM_CHARS)')

※[処理する項目]のプルダウンの右にあるアイコンで複数の項目を選択可能です

'$(ALPHA_NUM_CHARS)' がどのように設定されているのかは・・・

Qlikデータフロー_abc

数字以外の文字を削除:KeepChar関数を定義できます

※生成される数式
KeepChar([処理する項目], '$(NUM_CHARS)')

※[処理する項目]のプルダウンの右にあるアイコンで複数の項目を選択可能です

'$(NUM_CHARS)' がどのように設定されているのかは・・・

Qlikデータフロー_文字のみ

末尾文字と先頭文字を削除:Trim関数を定義できます

※生成される数式
Trim([処理する項目])

※[処理する項目]のプルダウンの右にあるアイコンで複数の項目を選択可能です 削除する文字は「空白」か「その他」を選択できます

Qlikデータフロー_Trim

パディングを追加:所定の文字を追加することができます

コードの0埋めなどに使えます

※生成される数式の例
Repeat('0', 15 - Len([date])) & [date]

※[処理する項目]のプルダウンの右にあるアイコンで複数の項目を選択可能です

ree

文字列に変換:Text関数を定義できます

※生成される数式の例
Text([処理する項目])

※[処理する項目]のプルダウンの右にあるアイコンで複数の項目を選択可能です

Qlikデータフロー_text

長さを計算:Len関数を定義できます

※生成される数式の例
Len([処理する項目])

※[処理する項目]のプルダウンの右にあるアイコンで複数の項目を選択可能です

Qlikデータフロー_Len

パターンに一致:CountRegEx関数を定義できます

※生成される数式
IF(CountRegEx([処理する項目], '[0-9]+'), Dual('TRUE', -1), Dual('FALSE', 0))

※[処理する項目]のプルダウンの右にあるアイコンで複数の項目を選択可能です

Qlikデータフロー_CountRegEx

連続する文字を削除:ReplaceRegEx関数を定義できます

Qlikデータフロー_ReplaceRegEx

■プロセッサーの基本操作(日付)

様々な日付に関する加工ができます

日付に変換:Date#関数を定義できます

※生成される数式の例
Date(Floor(Date#([処理する項目], 'YYYYMMDD')))
Qlik Senseデータフロー「日付」設定

時間に変換:Time#関数を定義できます

※生成される数式の例
Time(Time#([処理する項目], 'hh:mm:ss'))
Qlik Senseデータフロー「日付」設定

部分からタイムスタンプを作成:個別の時系列項目からタイムスタンプを作成できます

※生成される数式の例
Timestamp(MakeDate(Year(Date#([年], 'YYYY')),Month(Date#([月], 'MM')),Day(Date#([日], 'DD'))) + time(MakeTime(Hour(time#([時間],'hh')),Minute(time#([分],'mm')),Second(time#([秒],'ss'))) + time#([ミリ秒],'fff'), 'hh:mm:ss.fff')) AS [タイムスタンプ]
Qlik Senseデータフロー「日付」設定

部分から日付を作成:個別の時系列項目から年月日を作成できます

※生成される数式の例
MakeDate(Year(Date#([年], 'YYYY')),Month(Date#([月], 'MM')),Day(Date#([日], 'DD'))) AS [年月日]
Qlik Senseデータフロー「日付」設定

部分から時間を作成:個別の時系列項目から時刻を作成できます

※生成される数式の例
time(MakeTime(Hour(time#([時間],'hh')),Minute(time#([分],'mm')),Second(time#([秒],'ss'))) + time#([ミリ秒],'fff'), 'hh:mm:ss.fff')) AS [時刻]
Qlik Senseデータフロー「日付」設定

日付の書式設定:Date関数を定義できます

※生成される数式の例
Date([date], 'YYYY-MM-DD')
Qlik Senseデータフロー「日付」設定

日付の差を計算:2つのタイムスタンプの差異を計算できます

・[日付または時間の部分]にて日付の差を返す単位を指定します。「日」にすると日数で返されます。

・[終了]にて比較する日付を指定します。「現在」「具体的な日付」「他の項目」が設定できます。

※生成される数式の例
▼日付または時間の部分「日」、終了「現在」
Floor(Now()) - Floor([タイムスタンプ]) 

▼日付または時間の部分「月」、終了「現在」
(Year(Now()) - Year([タイムスタンプ]))*12 + Month(Now()) - Month([タイムスタンプ])
Qlik Senseデータフロー「日付」設定

期間を追加:指定の期間を追加できます

・[日付または時間の部分]にて追加する期間の単位を指定します。「月」にすると月数が追加されます。

・[次を使用]にて追加する期間数を指定します。「値」と「項目」で指定できます。

※生成される数式の例
▼日付または時間の部分「月」、次を使用「値:3」
AddMonths([タイムスタンプ], 3)

▼日付または時間の部分「年」、次を使用「値:3」
AddYears([タイムスタンプ], 3)

▼日付または時間の部分「年」、次を使用「値:3」
Date([タイムスタンプ] + 3)

日付を比較:日付を比較して「TRUE」「FALSE」を返します

※生成される数式の例
▼比較モード「等しい」、次を使用「他の項目:date2」
IF([date] = [date2], Dual('TRUE', -1), Dual('FALSE', 0))

▼比較モード「この日以前」、次を使用「他の項目:date2」
IF([date] <= [date2], Dual('TRUE', -1), Dual('FALSE', 0))
Qlik Senseデータフロー「日付」設定

日付部分を抽出:タイムスタンプデータから各種の日付項目が作成できて便利です

元になるタイムスタンプと生成したい日付項目のスイッチをONするだけです。指定スイッチは下記のとおりです。


年、四半期、四半期番号、月番号、月名、週番号、年の日、月の日、曜日、曜日名、時(12H)、時(24H)、AM/PM、分、秒、年‐四半期、年‐月、年‐週

Qlik Senseデータフロー「日付」設定




■プロセッサーの基本操作(数字)

様々な数字に関する加工ができます


四捨五入モードを使って値を丸める

※生成される数式
Round([処理する項目], 0.1) 

引数の0.1は有効桁数で指定できます

Qlik Senseデータフロー_数字プロセッサー

シールモードを使って値を丸める

※生成される数式
Ceil([処理する項目], 0.1) 

引数の0.1は有効桁数で指定できます

Qlik Senseデータフロー_数字プロセッサー

フロアモードを使って値を丸める

※生成される数式
Floor([処理する項目], 0.1) 

引数の0.1は有効桁数で指定できます

Qlik Senseデータフロー_数字プロセッサー

切り捨てモードを使って値を丸める

※生成される数式
If([処理する項目] > 0,Floor([処理する項目], 0.1), Ceil([処理する項目], 0.1)) 

引数の0.1は有効桁数で指定できます

Qlik Senseデータフロー_数字プロセッサー

端数部分を削除

※生成される数式
If([処理する項目] > 0,Floor([処理する項目]), Ceil([処理する項目])) 
Qlik Senseデータフロー_数字プロセッサー

数値を比較

※生成される数式
IF([処理する項目] >= 50, Dual('TRUE', -1), Dual('FALSE', 0))

処理する項目と指定した値/項目を比較してTRUE or FALSEを返します


▼比較タイプ:使用される演算子

・等しい:=

・等しくない:<>

・超:>

・以上:>=

・未満:<

・以下:<=

・引数の0.1は有効桁数で指定できます

Qlik Senseデータフロー_数字プロセッサー

負の値を削除

※生成される数式
IF([処理する項目] < 0, Null(), [処理する項目])

負の値はNullで返します

Qlik Senseデータフロー_数字プロセッサー



以上



Comments


© 2023 by Kathy Schulders. Proudly created with Wix.com 

  • Grey Twitter Icon
bottom of page