Qlik Community

Qlik Japan

Announcements
Members are not receiving notifications from the community. A bug has been identified and a fix is coming soon.
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Creator
Creator

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型にすることができないようです。

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

Labels (1)
1 Solution

Accepted Solutions
Highlighted
Contributor III
Contributor III

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

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

View solution in original post

4 Replies
Highlighted
Contributor III
Contributor III

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

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

View solution in original post

Highlighted
Creator
Creator

ありがとうございます。

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

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

Highlighted
Creator II
Creator II

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

添付の値は、上はともにシリアル値ですが、下の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 日付

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

Highlighted
Creator
Creator

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

ありがとうございます。