2
"""Generate dbt files for telemetry.
4
Data directory for telemetry records:
5
https://github.com/wandb/analytics/tree/master/dbt/data
8
./wandb/tools/telemetry-tool.py --output-dir analytics/dbt/seeds/
14
from typing import Any, List
16
from wandb.proto import wandb_telemetry_pb2 as tpb
18
DEFAULT_DIR: str = "analytics/dbt/seeds"
19
parser = argparse.ArgumentParser()
21
"--output-dir", default=DEFAULT_DIR if os.path.exists(DEFAULT_DIR) else ""
24
"--output-telemetry-record-types", default="map_run_cli_telemetry_record_types.csv"
26
parser.add_argument("--output-imports", default="map_run_cli_imports.csv")
27
parser.add_argument("--output-features", default="map_run_cli_features.csv")
28
parser.add_argument("--output-environments", default="map_run_cli_environments.csv")
29
parser.add_argument("--output-labels", default="map_run_cli_labels.csv")
31
"--output-deprecated-features", default="map_run_cli_deprecated.csv"
33
parser.add_argument("--output-issues", default="map_run_cli_issues.csv")
34
args = parser.parse_args()
37
def write_csv(record: str, fields: List[Any]):
38
record_arg = f"output_{record}s"
39
fname = os.path.join(args.output_dir, getattr(args, record_arg))
40
print("Writing:", fname)
41
with open(fname, "w") as fp:
42
writer = csv.DictWriter(fp, fieldnames=[record, "key"], lineterminator="\n")
46
if f.name.startswith("_"):
48
writer.writerow({record: f.name, "key": f.number})
52
telemetry_records = list(tpb.TelemetryRecord.DESCRIPTOR.fields)
53
write_csv(record="telemetry_record_type", fields=telemetry_records)
55
import_records = list(tpb.Imports.DESCRIPTOR.fields)
56
write_csv(record="import", fields=import_records)
58
feature_records = list(tpb.Feature.DESCRIPTOR.fields)
59
write_csv(record="feature", fields=feature_records)
61
env_records = list(tpb.Env.DESCRIPTOR.fields)
62
write_csv(record="environment", fields=env_records)
64
label_records = list(tpb.Labels.DESCRIPTOR.fields)
65
write_csv(record="label", fields=label_records)
67
deprecated_records = list(tpb.Deprecated.DESCRIPTOR.fields)
68
write_csv(record="deprecated_feature", fields=deprecated_records)
70
issue_records = list(tpb.Issues.DESCRIPTOR.fields)
71
write_csv(record="issue", fields=issue_records)
74
if __name__ == "__main__":