featurizer × dirtyduck

Which food facilities are likely to fail an inspection? (facilities ← inspections)

1 · Full-cohort materialization (v1.0.0)

Each variant materialized through to_dataframe(connection=…) at one as-of date (2017-12-30 — the day after the last knowledge date, so every event is under the window); no permanent writes. Variant definitions and the recovered wide transformer set: benchmarks/final_matrix.py.

variantfeaturesshardsrows dup-namessecondswas (v0.8.0)status
narrow147122,16902.53.0materialized
all-agg272122,16907.07.5materialized
wide1,252122,169060.263.2materialized

graph_relationships

{
  "workload": "graph_relationships",
  "dataset": "dirtyduck",
  "edges": 13950,
  "as_of_dates": [
    "2016-01-01",
    "2017-01-01",
    "2017-12-30"
  ],
  "rows": 66507,
  "features": 159,
  "degree_columns": [
    "DEGREE(chains)",
    "DEGREE(chains|interval=P1M)",
    "DEGREE(chains|interval=P3M)",
    "DEGREE(chains|interval=P6M)"
  ],
  "hand_sql_verified": 5,
  "exec_seconds": 7.8,
  "explain_top": [
    "Sort",
    "  Sort Key: aod.as_of_date",
    "  ->  Nested Loop",
    "        ->  Seq Scan on as_of_dates aod"
  ],
  "explain_nodes": 28
}

centrality snapshots

{
  "workload": "centrality_snapshots",
  "dataset": "dirtyduck",
  "as_of_dates": [
    "2016-01-01",
    "2017-01-01",
    "2017-12-30"
  ],
  "cheap_seconds": 0.5,
  "cheap_snapshot_rows": 17011,
  "edges": 13950,
  "heavy_seconds": 17.2,
  "heavy_snapshot_rows": 17011,
  "heavy_over_cheap": 34.4
}

text bridge end-to-end

{
  "workload": "text_bridge_end_to_end",
  "dataset": "dirtyduck",
  "bridge": "SentimentBridge(en)",
  "comments_total": 261088,
  "comments_processed": 50000,
  "row_cap": 50000,
  "bridge_seconds": 0.9,
  "spine_seconds": 1.1,
  "rows": 22169,
  "sentiment_columns": [
    "COUNT(sentiment.comment_id)",
    "COUNT(sentiment.comment_id|interval=P1M)",
    "COUNT(sentiment.comment_id|interval=P3M)",
    "COUNT(sentiment.comment_id|interval=P6M)",
    "COUNT(sentiment.date)",
    "COUNT(sentiment.date|interval=P1M)",
    "COUNT(sentiment.date|interval=P3M)",
    "COUNT(sentiment.date|interval=P6M)",
    "MAX(sentiment.sentiment)",
    "MAX(sentiment.sentiment|interval=P1M)",
    "MAX(sentiment.sentiment|interval=P3M)",
    "MAX(sentiment.sentiment|interval=P6M)",
    "MEAN(sentiment.sentiment)",
    "MEAN(sentiment.sentiment|interval=P1M)",
    "MEAN(sentiment.sentiment|interval=P3M)",
    "MEAN(sentiment.sentiment|interval=P6M)",
    "MIN(sentiment.sentiment)",
    "MIN(sentiment.sentiment|interval=P1M)",
    "MIN(sentiment.sentiment|interval=P3M)",
    "MIN(sentiment.sentiment|interval=P6M)"
  ],
  "hand_sql_verified": 3
}