Qlik Community

Qlik Japan

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

Highlighted
mokitsu61
Contributor

Excelからのデータ取り込みの日付の扱い

Excelファイルからの日付データ取り込みについて。

・環境

Microsoft Office 2016

QV Desktop 12

ExcelからLoadスクリプトでデータ取り込みする際、Excel上の「日付 時刻(YYYY/MM/DD hh:mm)」が入っている項目の

書式設定が「日付」になっていないとQVで日付として扱えません。

→YYYY/MM/DDのみ(hh:mmが無い)だと特に問題無く動くのですが・・・

・例

列名:日付

値:2018/10/01 15:19

書式設定:標準

LOAD 日付                       // LOAD Date#(日付)も試したがダメ

FROM Excelファイル;

「日付」はQVで日時として認識されず、またLOAD時にDate#(日付)しても同様でした。

その為、日付関連の関数を使えず困っています。

→Month()で月を取得、などができない

Excel側で該当セルの書式設定を「日付」にしてあげればQV側では特に何もせずに値を日時として扱ってくれるのですが、

その解決方法だとソースExcelが更新される度にExcel編集しなければならず、ITリテラシーの低いメンバーの

定型業務として成り立ちません。

また、列名「日付」に渡す値をYYYY/MM/DDの様に時刻を含まない書式にするとExcel側でもQV側で特に何も考えずに扱えるのですが・・・

ソースExcelにはどうしてもhh:mmが付いてきてしまい、そうなるとDate#()でDate型にすることができないようです。

解決方法ありますでしょうか?

1 Solution

Accepted Solutions
chakiw5
New Contributor III

Re: Excelからのデータ取り込みの日付の扱い

これはそのまま、これで日付関数が使えました。

Timestamp#('2018/10/01 15:19','YYYY/MM/DD hh:mm')

4 Replies
chakiw5
New Contributor III

Re: Excelからのデータ取り込みの日付の扱い

これはそのまま、これで日付関数が使えました。

Timestamp#('2018/10/01 15:19','YYYY/MM/DD hh:mm')

mokitsu61
Contributor

Re: Excelからのデータ取り込みの日付の扱い

ありがとうございます。

第2パラメータで書式を指定したところ、Timestamp#()だけでなくDate#でもいけました。

APIリファレンスではDate#(), Timestamp#()の第2パラメータは戻り値のフォーマット指定の様に読めますが、入力値の書式を指定するんですね。

kentaroWakamatsu
Contributor

Re: Excelからのデータ取り込みの日付の扱い

ユーザー側のファイルの値が、きちんとシリアル値であればあまり気にする事はないのですが、フォーマットとしてファイルを提供しないと、書式が文字列の場合もあるので、エクセルの取り込みは慎重に記述した方が良いでしょうね。

添付の値は、上はともにシリアル値ですが、下の3つは文字列です。

こういった混在データも以下のように記載してやる事で、対応が可能ですので、参考にして下さい。

Timestamp(ALT(日付                                                           //1~2行目のシリアル値に対応

                         ,Timestamp#(日付,'YYYY/M/D hh:mm')      //4行目のテキストコンバート用

                         ,Timestamp#(日付,'YYYY/MM/DD h:mm')     //5行目のテキストコンバート用

                         ,Timestamp#(日付,'YY年M月D日 h時m分')    //6行目のテキストコンバート用

       )

                    ,'YYYY/MM/DD hh:mm') as 日付

他にも書式パターンは複数あるため、全て網羅すると処理時間も増えるので、どこまでカバーするかといった事も考えると、取り込み用のファイルは、テンプレートとして用意してあげるのがベターでしょうけど、、、、

mokitsu61
Contributor

Re: Excelからのデータ取り込みの日付の扱い

なるほど、複数のフォーマット指定も可能なんですね。

ありがとうございます。