0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[TreasureData]td workflow backfillコマンドをworkflow上で使いたかったがダメだった話

Posted at

結局ダメだったので違う方法で実装した話。

使いたかった経緯

  1. 集計元のRawDataは1日1回別システムからS3経由のDataConnectorでTreasureDataにimport。
  2. 日次で1回動くworkflowで前日分のデータを集計。
  3. 相手方のシステムが前日分データは次の日には入らない(何日か遅れる【不定】と言ってきた。)
  4. 仕方がないのでworkflowで前7日分のデータを毎日再集計することに。
  5. tdコマンドの workflow backfill使えば行けるんじゃね?という思いから調査してみたがどうにもworkflow上で動かない。
  6. サポート問い合わせで「それはできません。」との回答をもらう。
  7. 仕方がないので別な方法で対応した話。

最終的に実装した方法

backfillが使えればそのまま行けたのだけれどもdigファイルとsqlファイルを修正して対応。

対応方針:workflowでループ組んで1日分のtimestamp毎にfor_rangeで繰り返す。

digファイル
+task1:
  for_range>:
    from: ${moment(session_time).add('days', -7).unix()}
    to: ${session_unixtime}
    step: 86400
  _do:
    +sub1:
      td>: analysis.sql
      insert_into: tmp_reporting
analysis.sql
SELECT 
  TD_TIME_FORMAT(${range.from}, 'yyyy-MM-dd', 'JST') AS aggregate_day,
  IF(
    SUM(sku_ex_vat) IS NULL,
    0,
    SUM(sku_ex_vat) AS bigint)
  ) AS sales_amount
FROM
  order_table
WHERE
  TD_TIME_RANGE(order_timestamp,
    TD_TIME_FORMAT(${range.from}, 'yyyy-MM-dd', 'JST'),
    TD_TIME_FORMAT(${range.to}, 'yyyy-MM-dd', 'JST'),
  'JST')

workflowでもっといろいろ出来るといいなー

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?