Qlik Community

Qlik Japan

Qlik Communityの日本語のグループです。 Qlik製品に関する日本語資料のダウンロードや質問を日本語で投稿することができます。質問に関する回答は基本的に日本語で行われます。 日本語資料はグループにJoinしなくてもダウンロード可能ですが、 質問を投稿したい場合は、CommunityへのログインをしてグループにJoin Requestを行って下さい。 承認を受けた後に質問を投稿することが可能になります。 ログインはQlikIDを登録してください。

Highlighted
KenK
New Contributor

ロードスクリプトでフッター数行を無視する方法

ロードスクリプトでデータソースを読み込む際、

ヘッダーサイズを「行:15行目まで」 のように、無視する先頭行数を指定することができますが、

似たように末端から◯行を無視する。といった指定は可能でしょうか?

 

先頭から15行を無視する

LOAD [ga:sourceMedium], 
[ga:pageviews]
FROM
[query_explorer_2019*.tsv]
(txt, unicode, embedded labels, delimiter is '\t', msq, header is 15 lines);

 

読み込ませたいファイルの例

Report For View (Profile): 	test.com

These results do contain sampled data.

These query parameters were used:
max-results	1000
dimensions	ga:sourceMedium
start-date	2019-07-01
start-index	1
ids	ga:10000
metrics	ga:pageviews
samplingLevel	HIGHER_PRECISION
filters	ga:pagePath=~^/completion
end-date	2019-07-01

ga:sourceMedium	ga:pageviews
(direct) / (none)	500
google / organic	200
yahoo / organic	120

Rows Returned	1000
Rows Matched	3
Totals For All Rows Matched
		820

 

末端から6行はデータとして無視したいと考えています。

 

例のデータが、日別に複数ファイル存在し、

「先頭から15行目」および「末端から6行」は無視する対象ですが、

その中間に何行入るかはファイル(日)によって変わります。

 

この部分だけを扱いたいというケースになります。

ga:sourceMedium	ga:pageviews
(direct) / (none)	500
google / organic	200
yahoo / organic	120

 

Tags (1)
2 Solutions

Accepted Solutions
Employee
Employee

Re: ロードスクリプトでフッター数行を無視する方法

添付のqvfでいかがでしょうか。読み込みファイルにRowNoを入れ、Where句でRowNoの最大値から不要な行数を引いたものをロードしています。

 

#データは以下投稿いただいたのものをtsvファイルにして読み込んでいます。

読み込ませたいファイルの例

Report For View (Profile): 	test.com

These results do contain sampled data.

These query parameters were used:
max-results	1000
dimensions	ga:sourceMedium
start-date	2019-07-01
start-index	1
ids	ga:10000
metrics	ga:pageviews
samplingLevel	HIGHER_PRECISION
filters	ga:pagePath=~^/completion
end-date	2019-07-01

ga:sourceMedium	ga:pageviews
(direct) / (none)	500
google / organic	200
yahoo / organic	120

Rows Returned	1000
Rows Matched	3
Totals For All Rows Matched
		820

 

Employee
Employee

Re: ロードスクリプトでフッター数行を無視する方法

削除する下部6行の文字列が変化しないのであれば、以下のwhere句を加えてもらえればできると思います。

where not [ga:sourceMedium] like 'Rows*' and not [ga:sourceMedium] like 'Totals*' and len([ga:sourceMedium])>0;

5 Replies
chakiw5
New Contributor III

Re: ロードスクリプトでフッター数行を無視する方法

末から何行削除は自分は知りませんが、必要な行以下に対し条件付き削除を行えば可能かと思います。

ウィザードでヘッダーを設定→変換オプションを有効にする→条件付き削除

ここで列に対しどのような条件の行を削除するか設定します。

ファイルを添付しますので参考にしてください。

 

Employee
Employee

Re: ロードスクリプトでフッター数行を無視する方法

添付のqvfでいかがでしょうか。読み込みファイルにRowNoを入れ、Where句でRowNoの最大値から不要な行数を引いたものをロードしています。

 

#データは以下投稿いただいたのものをtsvファイルにして読み込んでいます。

読み込ませたいファイルの例

Report For View (Profile): 	test.com

These results do contain sampled data.

These query parameters were used:
max-results	1000
dimensions	ga:sourceMedium
start-date	2019-07-01
start-index	1
ids	ga:10000
metrics	ga:pageviews
samplingLevel	HIGHER_PRECISION
filters	ga:pagePath=~^/completion
end-date	2019-07-01

ga:sourceMedium	ga:pageviews
(direct) / (none)	500
google / organic	200
yahoo / organic	120

Rows Returned	1000
Rows Matched	3
Totals For All Rows Matched
		820

 

Employee
Employee

Re: ロードスクリプトでフッター数行を無視する方法

他の方が投稿されているように、QlikViewでしたら変換ウィザードでスクリプトを書かずに行削除ができるので、そこだけQlikViewで実行させ、生成されたロードスクリプトをQlik Sense側で使うという手も便利です。ただし公式Help上では推奨されていませんので予めご注意ください。

https://help.qlik.com/ja-JP/sense/April2019/Subsystems/Hub/Content/Sense_Hub/Scripting/functions-sta...

Employee
Employee

Re: ロードスクリプトでフッター数行を無視する方法

削除する下部6行の文字列が変化しないのであれば、以下のwhere句を加えてもらえればできると思います。

where not [ga:sourceMedium] like 'Rows*' and not [ga:sourceMedium] like 'Totals*' and len([ga:sourceMedium])>0;

KenK
New Contributor

Re: ロードスクリプトでフッター数行を無視する方法

ありがとうございます。

RowNo() as RowNo

で行数を入れ、

demo:
NoConcatenate Load *
Resident temp
Where [RowNo] < NoOfRows('temp')-3;

drop Table temp;

 

で-3行を削る方法が万能で、他のケースでも使用できますね。

ありがとうございます。こちらで解決しました。