示例#1
0
    def test__model_incremental(self):
        self.use_models({
            'model_one': 'select * from events'
        })

        cfg = {
            "models": {
                "test_models_compile": {
                    "model_one": {
                        "materialized": "incremental",
                        "sql_where": "created_at",
                        "unique_key": "id"
                    },
                }
            }
        }

        config = self.get_config(cfg)
        manifest = dbt.loader.GraphLoader.load_all(config)
        compiler = self.get_compiler(config)
        linker = compiler.compile(manifest)

        node = 'model.test_models_compile.model_one'

        self.assertEqual(linker.nodes(), [node])
        self.assertEqual(linker.edges(), [])

        self.assertEqual(
            manifest.nodes[node].get('config', {}).get('materialized'),
            'incremental'
        )
示例#2
0
    def test__model_incremental(self):
        self.use_models({'model_one': 'select * from events'})

        cfg = {
            "models": {
                "test_models_compile": {
                    "model_one": {
                        "materialized": "incremental",
                        "sql_where": "created_at",
                        "unique_key": "id"
                    },
                }
            }
        }

        compiler = self.get_compiler(self.get_project(cfg))
        graph, linker = compiler.compile()

        node = 'model.test_models_compile.model_one'

        self.assertEqual(linker.nodes(), [node])
        self.assertEqual(linker.edges(), [])

        self.assertEqual(
            linker.graph.node[node].get('config', {}).get('materialized'),
            'incremental')
示例#3
0
    def test__model_enabled(self):
        self.use_models({
            'model_one': 'select * from events',
            'model_two': "select * from {{ref('model_one')}}",
        })

        cfg = {
            "models": {
                "materialized": "table",
                "test_models_compile": {
                    "model_one": {
                        "enabled": True
                    },
                    "model_two": {
                        "enabled": False
                    },
                }
            }
        }

        compiler = self.get_compiler(self.get_project(cfg))
        graph, linker = compiler.compile()

        six.assertCountEqual(self, linker.nodes(), [
            'model.test_models_compile.model_one',
            'model.test_models_compile.model_two'
        ])

        six.assertCountEqual(self, linker.edges(), [(
            'model.test_models_compile.model_one',
            'model.test_models_compile.model_two',
        )])
示例#4
0
    def test__model_incremental(self):
        self.use_models({'model_one': 'select * from events'})

        cfg = {
            "models": {
                "test_models_compile": {
                    "model_one": {
                        "materialized": "incremental",
                        "unique_key": "id"
                    },
                }
            }
        }

        config = self.get_config(cfg)
        manifest = dbt.loader.GraphLoader.load_all(config)
        compiler = self.get_compiler(config)
        linker = compiler.compile(manifest)

        node = 'model.test_models_compile.model_one'

        self.assertEqual(list(linker.nodes()), [node])
        self.assertEqual(list(linker.edges()), [])

        self.assertEqual(
            manifest.nodes[node].get('config', {}).get('materialized'),
            'incremental')
示例#5
0
    def test__single_model(self):
        self.use_models({
            'model_one': 'select * from events',
        })

        compiler = self.get_compiler(self.get_project())
        graph, linker = compiler.compile()

        self.assertEquals(linker.nodes(),
                          ['model.test_models_compile.model_one'])

        self.assertEquals(linker.edges(), [])
示例#6
0
    def test__topological_ordering(self):
        self.use_models({
            'model_1': 'select * from events',
            'model_2': 'select * from {{ ref("model_1") }}',
            'model_3': '''
                select * from {{ ref("model_1") }}
                union all
                select * from {{ ref("model_2") }}
            ''',
            'model_4': 'select * from {{ ref("model_3") }}'
        })

        compiler = self.get_compiler(self.get_project({}))
        graph, linker = compiler.compile()

        six.assertCountEqual(self, linker.nodes(), [
            'model.test_models_compile.model_1',
            'model.test_models_compile.model_2',
            'model.test_models_compile.model_3',
            'model.test_models_compile.model_4',
        ])

        six.assertCountEqual(self, linker.edges(), [
            (
                'model.test_models_compile.model_1',
                'model.test_models_compile.model_2',
            ),
            (
                'model.test_models_compile.model_1',
                'model.test_models_compile.model_3',
            ),
            (
                'model.test_models_compile.model_2',
                'model.test_models_compile.model_3',
            ),
            (
                'model.test_models_compile.model_3',
                'model.test_models_compile.model_4',
            ),
        ])

        actual_ordering = linker.as_topological_ordering()
        expected_ordering = [
            'model.test_models_compile.model_1',
            'model.test_models_compile.model_2',
            'model.test_models_compile.model_3',
            'model.test_models_compile.model_4',
        ]

        self.assertEqual(actual_ordering, expected_ordering)
示例#7
0
    def test__single_model(self):
        self.use_models({
            'model_one': 'select * from events',
        })

        config = self.get_config()
        manifest = dbt.loader.GraphLoader.load_all(config)
        compiler = self.get_compiler(config)
        linker = compiler.compile(manifest)

        self.assertEqual(list(linker.nodes()),
                         ['model.test_models_compile.model_one'])

        self.assertEqual(list(linker.edges()), [])
示例#8
0
    def test__single_model(self):
        self.use_models({
            'model_one': 'select * from events',
        })

        config = self.get_config()
        manifest = dbt.loader.GraphLoader.load_all(config)
        compiler = self.get_compiler(config)
        linker = compiler.compile(manifest)

        self.assertEquals(
            linker.nodes(),
            ['model.test_models_compile.model_one'])

        self.assertEquals(
            linker.edges(),
            [])
示例#9
0
    def test__two_models_simple_ref(self):
        self.use_models({
            'model_one': 'select * from events',
            'model_two': "select * from {{ref('model_one')}}",
        })

        compiler = self.get_compiler(self.get_project())
        graph, linker = compiler.compile()

        six.assertCountEqual(self, linker.nodes(), [
            'model.test_models_compile.model_one',
            'model.test_models_compile.model_two',
        ])

        six.assertCountEqual(self, linker.edges(), [(
            'model.test_models_compile.model_one',
            'model.test_models_compile.model_two',
        )])
示例#10
0
    def test__two_models_simple_ref(self):
        self.use_models({
            'model_one': 'select * from events',
            'model_two': "select * from {{ref('model_one')}}",
        })

        config = self.get_config()
        manifest = dbt.loader.GraphLoader.load_all(config)
        compiler = self.get_compiler(config)
        linker = compiler.compile(manifest)

        six.assertCountEqual(self, linker.nodes(), [
            'model.test_models_compile.model_one',
            'model.test_models_compile.model_two',
        ])

        six.assertCountEqual(self, linker.edges(), [(
            'model.test_models_compile.model_one',
            'model.test_models_compile.model_two',
        )])
示例#11
0
    def test__two_models_simple_ref(self):
        self.use_models({
            'model_one': 'select * from events',
            'model_two': "select * from {{ref('model_one')}}",
        })

        config = self.get_config()
        manifest = dbt.loader.GraphLoader.load_all(config)
        compiler = self.get_compiler(config)
        linker = compiler.compile(manifest)

        six.assertCountEqual(self,
                             linker.nodes(),
                             [
                                 'model.test_models_compile.model_one',
                                 'model.test_models_compile.model_two',
                             ])

        six.assertCountEqual(
            self,
            linker.edges(),
            [ ('model.test_models_compile.model_one','model.test_models_compile.model_two',) ])