Alteryxで定義されているDateTime関数を使い、
さまざまなケースでの対処方法をご紹介します。
日数差や直近の更新データのみを抽出する場合など、
日付から計算をされたい場合にご活用ください。
こんにちは、PR担当Saoriです。
処理アイコンをドラッグ&ドロップし、線でつなげていくことで「ワークフロー」という処理の履歴を構築し、
再生ボタンを押すことで、処理が実行できるため、とても分かりやすいのが強みの統計ツールである”Alteryx”。
前回の記事では、文字型を日付型に変える方法についてご紹介しました。
今回は、さまざまな日付に関する計算について、
具体的な事例を交えながらご紹介させていただきます。
※今回はAlteryx 2018.3 英語版 を利用しています。
▼目次
■日数差(日付から日付を引く)を求めたい
☆ログイン時間とログアウト時間の差を調べる
☆加入から1年のお客様を抽出する
など、2つの期間の差について調べます。
では実例紹介です。
以下のように「開始」と「終わり」が日付表示されているデータがあったとします。
日付が格納されているフィールドが”文字型”だった場合は、DateTime(日付)ツールを使い日付型に変えてから処理を行います。(詳細は(こちら)をご確認ください)
Select(選択)ツールを使い、Date型関数の名前をもともとあったフィールド名に変更します。
後続処理の際に認識しやすいと思います。
次にFormula(フォーミュラ)ツールで関数を使います。
DateTimeDiff([End Date],[Start Date],”Days”)
DateTimeDiff 関数を使い、終わりの日から始まりの日の差分を”日”単位で出力
という意味です。実際はこのようになります。データ型を数値型にすることを忘れずに行ってください。
【補足】
——-日数差以外も求められます!——-
“Days” の部分を”Years”に変えてしまえば年の差が、
“Month”にすれば月の差が出ます。
年”Years”、月”Months”、日”Days”、時”Hours”、分Minutes”、秒”Seconds”
で対応可能です。
結果を見てみます。
新しいフィールドに開始日と終了日の差の日数が出力されています。
ワークフローをご紹介します。Date(日付)ツールが2つ並んでいるのは、処理できるのが1フィールドのみのため、StartDateとEndDateをそれぞれ分として使っています。
▲目次にもどる
■基準日(今日)から○日間のデータを出したい
☆直近1週間に更新されたリストのみ取り出したい
☆直近3日にログインされたお客様にのみ案内を出したい
など、日々変わっていく条件のデータを正しく取り出したい場合に使います。
では、実演します。
こちらのデータを、まずはDate(日付)型に変換します。こちらは省略します。
次に、Formulaツールと関数を使い、今日の日付を出力させます。
DateTimeToday()
とてもシンプルな関数です。
出力されているデータを念のため確認します。ちゃんと今日の日付が出ています。
その後、続けてFormulaツールを使い、日付差を算出します。
DateTimeDiff([今日],[日付],”Days”)
日付差が出ているか確認します。出ています。
あとは必要な期間に当てはまるかどうかをFilter(フィルター)ツールを使って条件分岐するだけです。
今回は14日間以内をTrue それ以外をFalseとしてみました。
これで、出力結果(True側)は以下のようになります。2週間以内の条件が満たせています。
ワークフローは以下のようになります。
★サンプルワークフロー★
ちなみに、Formula(フォーミュラ)ツールを使うことなく、Filter(フィルター)ツール
1つで解決できてしまいます。
[日付] >= ToDate(DateTimeAdd(DateTimeToday(), -14, “days”))
これで一気に条件分岐ができてしまいます。
これは大変便利ですので、ツールを多く使いたくない方はぜひこちらもご利用ください。
その場合のワークフローはこちらです。
★サンプルワークフロー★
■曜日を知りたい(平日だけにしたい)
☆日付はわかるけど曜日を算出したい
☆データから平日のみを取り出したい
場合にこちらを使います。
日付が記載されているデータを取り込んだら、そのデータをFormula(フォーミュラ)ツールを使って曜日変換します。
DateTimeFormat([DateTime_Out],”%A”)
DateTimeFormatは、
日付を任意の表示形式に変換をし、さらに文字型へ変更するための関数です。
%A は指定識別子といいます、曜日を出力してくれるおまじないだと理解いただけるといいと思います。
これで曜日を表示させます。
曜日が判明しました。
平日のみにしたい場合は、Filter(フィルター)ツールを使い
土曜日(Saturday)と日曜日(Sunday)はF側に出力
とするとT側には平日のみが残る仕組みとなります。
※祝日は考慮されていないので別途対応が必要です。
False側のみご紹介します、土曜日と日曜日が振り分けられています。
ワークフローは以下のようになります。
★サンプルワークフロー★
▲目次にもどる
■YYYY/MM/DD と表記されているのでYYYY|MM|DDと分けたい
☆日付と時間を分けて分析をしたい
場合に有効です。
“日”部分と”時間”部分を分けて分析したい場合が、
あると思います。
同じ方法でYYYY/MM/DD HH:MM:SS を日付部分と時間部分に分けることが可能です。
これは、文字型で表示されている日付を、Text To Colums(列へのテキスト)ツールを使って分けるだけです。
なお、データがDateTime(日付)型になっている場合は使えないため、
DateTime(日時)ツールを使って一度文字型に変える必要があります。
日付表示されているデータです。
これを、Text To Colums(列へのテキスト)ツールを使って分けます。
具体的な設定内容はこちらです。
分割後は、フィールド名を変更すると後々わかりやすいです。
年と月と日に分けることができました。
ワークフローもシンプルです。
★サンプルワークフロー★
▲目次にもどる
■時差を変換したい
☆UTC時間で格納されるデータを扱っているのでJST時間に変換したい。
という場合に利用いただけます。
私はGoogle Big Query を利用しています。
データ取得の設定時間がUTC(世界標準時)で設定されいるため、UNIX時間を変換するだけでは正しい利用時間を取得することができませんでいました。
これはシンプルです。
Formula(フォーミュラ)ツールを使い、時差変換をする計算をするのみです。
DateTimeToLocal([ConvertTimeA])
これは時間変換をさせる関数です。
ローカルシステムに依存するため、その点はご注意ください。
ワークフローは以下のようになります。
なお、関数は複数を一度に使ってしまうことができます。
以下のように括弧でくくっていただければ、1つの式(ツール)で計算が完了します。
DateTimeToLocal(DATETIMEADD(‘1970-01-01 00:00:00’,[visitStartTime], ‘seconds’))
まとめ
今回は日数差に関する計算方法をご紹介いたしました。
データを一定の基準で振り分けができるようになり、すごく便利だと思います。
私は以下のように使い分けています。
文字型を日付型に変換したい場合 にDate(日時)ツールを使い、
日付型に関するさまざまな計算を行いたい場合 にFormula(フォーミュラ)ツールを使う
です。
使い分けることでワークフローを後から振り返る際、に何をしたのかが視覚的にわかりやすいため、
日付変換をDate(日時)ツール使ってから、具体的な計算をFormula(フォーミュラ)ツール
で対応する。
という使い方を私はしています。
もちろんFormula(フォーミュラ)ツールのみ使っていただいてもかまいません。
お好きなツールを使っていただければと思います。
いろいろな使い方がありますが、1つの解として参考にされてください。
Alteryx(アルタリクス)を1か月間無料でご体験いただけます。
早速はじめてみませんか?
トライアル期間中もサポート対応実施中です!ご不明な点がございましたらお気軽にお問い合わせください。
1か月間のフリートライアルはこちらから
Alteryx(アルタリクス)のお見積りやデータ分析に関するご相談は問い合わせより承っております。
お気軽にご相談ください。
お見積もり依頼などのご相談はこちら