Skip to content

Commit

Permalink
Allow 'partitionBy' and 'clusterBy' params for bigquery materialized …
Browse files Browse the repository at this point in the history
…views (#1660)

* Allow 'partitionBy' and 'clusterBy' params for bigquery materialized views

* Bump version to 2.9.0
  • Loading branch information
vlad-ogol committed Feb 1, 2024
1 parent c6feb01 commit 47da43b
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 6 deletions.
16 changes: 14 additions & 2 deletions core/session.ts
Original file line number Diff line number Diff line change
Expand Up @@ -730,10 +730,22 @@ export class Session {
table.bigquery.clusterBy?.length ||
table.bigquery.partitionExpirationDays ||
table.bigquery.requirePartitionFilter) &&
table.enumType === dataform.TableType.VIEW
table.enumType === dataform.TableType.VIEW &&
!table.materialized
) {
this.compileError(
`partitionBy/clusterBy/requirePartitionFilter/partitionExpirationDays are not valid for BigQuery views; they are only valid for tables`,
`partitionBy/clusterBy/requirePartitionFilter/partitionExpirationDays are not valid for BigQuery views`,
table.fileName,
table.target
);
} else if (
(table.bigquery.partitionExpirationDays ||
table.bigquery.requirePartitionFilter) &&
table.enumType === dataform.TableType.VIEW &&
table.materialized
) {
this.compileError(
`requirePartitionFilter/partitionExpirationDays are not valid for BigQuery materialized views`,
table.fileName,
table.target
);
Expand Down
42 changes: 39 additions & 3 deletions tests/core/core.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -513,6 +513,30 @@ suite("@dataform/core", () => {
partitionExpirationDays: 7
}
});
session.publish("example_require_partition_filter_view_fail", {
type: "view",
bigquery: {
requirePartitionFilter: true
}
});
session.publish("example_expiring_materialized_view_fail", {
type: "view",
materialized: true,
bigquery: {
partitionBy: "some_partition",
clusterBy: ["some_cluster"],
partitionExpirationDays: 7
}
});
session.publish("example_require_partition_filter_materialized_view_fail", {
type: "view",
materialized: true,
bigquery: {
partitionBy: "some_partition",
clusterBy: ["some_cluster"],
requirePartitionFilter: true
}
});
session.publish("example_materialize_table_fail", {
type: "table",
materialized: true
Expand Down Expand Up @@ -554,15 +578,27 @@ suite("@dataform/core", () => {
).has.deep.members([
{
actionName: "schema.example_partitionBy_view_fail",
message: `partitionBy/clusterBy/requirePartitionFilter/partitionExpirationDays are not valid for BigQuery views; they are only valid for tables`
message: `partitionBy/clusterBy/requirePartitionFilter/partitionExpirationDays are not valid for BigQuery views`
},
{
actionName: "schema.example_clusterBy_view_fail",
message: `partitionBy/clusterBy/requirePartitionFilter/partitionExpirationDays are not valid for BigQuery views; they are only valid for tables`
message: `partitionBy/clusterBy/requirePartitionFilter/partitionExpirationDays are not valid for BigQuery views`
},
{
actionName: "schema.example_expiring_view_fail",
message: `partitionBy/clusterBy/requirePartitionFilter/partitionExpirationDays are not valid for BigQuery views; they are only valid for tables`
message: `partitionBy/clusterBy/requirePartitionFilter/partitionExpirationDays are not valid for BigQuery views`
},
{
actionName: "schema.example_require_partition_filter_view_fail",
message: `partitionBy/clusterBy/requirePartitionFilter/partitionExpirationDays are not valid for BigQuery views`
},
{
actionName: "schema.example_expiring_materialized_view_fail",
message: `requirePartitionFilter/partitionExpirationDays are not valid for BigQuery materialized views`
},
{
actionName: "schema.example_require_partition_filter_materialized_view_fail",
message: `requirePartitionFilter/partitionExpirationDays are not valid for BigQuery materialized views`
},
{
actionName: "schema.example_materialize_table_fail",
Expand Down
2 changes: 1 addition & 1 deletion version.bzl
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
# NOTE: If you change the format of this line, you must change the bash command
# in /scripts/publish to extract the version string correctly.
DF_VERSION = "2.8.4"
DF_VERSION = "2.9.0"

0 comments on commit 47da43b

Please sign in to comment.