def run_from_graph(self, Selector, Runner, query): flat_graph, linker = self.compile(self.project) selector = Selector(linker, flat_graph) selected_nodes = selector.select(query) dep_list = selector.as_node_list(selected_nodes) profile = self.project.run_environment() adapter = get_adapter(profile) flat_nodes = dbt.utils.flatten_nodes(dep_list) if len(flat_nodes) == 0: logger.info("WARNING: Nothing to do. Try checking your model " "configs and model specification args") return [] elif Runner.print_header: stat_line = dbt.ui.printer.get_counts(flat_nodes) logger.info("") dbt.ui.printer.print_timestamped_line(stat_line) dbt.ui.printer.print_timestamped_line("") else: logger.info("") try: Runner.before_run(self.project, adapter, flat_graph) started = time.time() res = self.execute_nodes(linker, Runner, flat_graph, dep_list) elapsed = time.time() - started Runner.after_run(self.project, adapter, res, flat_graph, elapsed) finally: adapter.cleanup_connections() return res
def run_from_graph(self, Selector, Runner, query): """ Run dbt for the query, based on the graph. Selector is a type (not instance!) derived from dbt.graph.selector.NodeSelector Runner is a type (not instance!) derived from dbt.node_runners.BaseRunner """ manifest, linker = self.compile(self.project) selector = Selector(linker, manifest) selected_nodes = selector.select(query) dep_list = selector.as_node_list(selected_nodes) profile = self.project.run_environment() adapter = get_adapter(profile) flat_nodes = dbt.utils.flatten_nodes(dep_list) if len(flat_nodes) == 0: logger.info("WARNING: Nothing to do. Try checking your model " "configs and model specification args") return [] elif Runner.print_header: stat_line = dbt.ui.printer.get_counts(flat_nodes) logger.info("") dbt.ui.printer.print_timestamped_line(stat_line) dbt.ui.printer.print_timestamped_line("") else: logger.info("") try: Runner.before_hooks(self.project, adapter, manifest) started = time.time() Runner.before_run(self.project, adapter, manifest) res = self.execute_nodes(linker, Runner, manifest, dep_list) Runner.after_run(self.project, adapter, res, manifest) elapsed = time.time() - started Runner.after_hooks(self.project, adapter, res, manifest, elapsed) finally: adapter.cleanup_connections() result = ExecutionResult( results=res, elapsed_time=elapsed, generated_at=dbt.utils.timestring(), ) self.write_results(result) return res