Skip to content

Last updated: July 22, 2025

Detected datatype in text changed data quality checks, SQL examples

A column-level check that scans all values in a text column, finds the right data type and detects when the desired data type changes. The actual_value returned from the sensor can be one of seven codes: 1 - integers, 2 - floats, 3 - dates, 4 - datetimes, 5 - timestamps, 6 - booleans, 7 - strings, 8 - mixed data types. The check compares the data type detected during the current run to the last known data type detected during a previous run. For daily monitoring checks, it compares the value to yesterday's value (or an earlier date). For partitioned checks, it compares the current data type to the data type in the previous daily or monthly partition. The last partition with data is used for comparison.


The detected datatype in text changed data quality check has the following variants for each type of data quality checks supported by DQOps.

profile detected datatype in text changed

Check description

Detects that the data type of texts stored in a text column has changed since the last verification. The sensor returns the detected data type of a column: 1 - integers, 2 - floats, 3 - dates, 4 - datetimes, 5 - timestamps, 6 - booleans, 7 - strings, 8 - mixed data types.

Data quality check name Friendly name Category Check type Time scale Quality dimension Sensor definition Quality rule Standard
profile_detected_datatype_in_text_changed Detect a change of the data type of all values in a text column datatype profiling Consistency string_datatype_detect value_changed

Command-line examples

Please expand the section below to see the DQOps command-line examples to run or activate the profile detected datatype in text changed data quality check.

Managing profile detected datatype in text changed check from DQOps shell

Activate this data quality using the check activate CLI command, providing the connection name, table name, check name, and all other filters. Activates the warning rule with the default parameters.

dqo> check activate -c=connection_name -t=schema_name.table_name -col=column_name -ch=profile_detected_datatype_in_text_changed --enable-warning

You can also use patterns to activate the check on all matching tables and columns.

dqo> check activate -c=connection_name -t=schema_prefix*.fact_* -col=column_name -ch=profile_detected_datatype_in_text_changed --enable-warning

Activate this data quality using the check activate CLI command, providing the connection name, table name, check name, and all other filters. Activates the error rule with the default parameters.

dqo> check activate -c=connection_name -t=schema_name.table_name -col=column_name -ch=profile_detected_datatype_in_text_changed --enable-error

You can also use patterns to activate the check on all matching tables and columns.

dqo> check activate -c=connection_name -t=schema_prefix*.fact_* -col=column_name -ch=profile_detected_datatype_in_text_changed --enable-error

Run this data quality check using the check run CLI command by providing the check name and all other targeting filters. The following example shows how to run the profile_detected_datatype_in_text_changed check on all tables and columns on a single data source.

dqo> check run -c=data_source_name -ch=profile_detected_datatype_in_text_changed

It is also possible to run this check on a specific connection and table. In order to do this, use the connection name and the full table name parameters.

dqo> check run -c=connection_name -t=schema_name.table_name -ch=profile_detected_datatype_in_text_changed

You can also run this check on all tables (and columns) on which the profile_detected_datatype_in_text_changed check is enabled using patterns to find tables.

dqo> check run -c=connection_name -t=schema_prefix*.fact_* -col=column_name_* -ch=profile_detected_datatype_in_text_changed

YAML configuration

The sample schema_name.table_name.dqotable.yaml file with the check configured is shown below.

# yaml-language-server: $schema=https://cloud.dqops.com/dqo-yaml-schema/TableYaml-schema.json
apiVersion: dqo/v1
kind: table
spec:
  columns:
    target_column:
      profiling_checks:
        datatype:
          profile_detected_datatype_in_text_changed:
            error: {}
      labels:
      - This is the column that is analyzed for data quality issues
Samples of generated SQL queries for each data source type

Please expand the database engine name section to see the SQL query rendered by a Jinja2 template for the string_datatype_detect data quality sensor.

BigQuery
{% import '/dialects/bigquery.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[-+]?\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[-+]?\d+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[-+]?\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[-+]?\d+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(SAFE_CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM `your-google-project-id`.`<target_schema>`.`<target_table>` AS analyzed_table
ClickHouse
{% import '/dialects/clickhouse.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^[-+]?\d+$') = TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^[+-]?[0-9]*[.,]?[0-9]+$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^[-+]?\d+$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^[+-]?([0-9]*[.])[0-9]+$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 0
                    WHEN TRIM(toString({{ lib.render_target_column('analyzed_table') }})) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^[-+]?\d+$') = TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^[+-]?[0-9]*[.,]?[0-9]+$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         match(toString(analyzed_table."target_column"), '^[-+]?\d+$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^[+-]?([0-9]*[.])[0-9]+$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 0
                    WHEN TRIM(toString(analyzed_table."target_column")) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM "<target_schema>"."<target_table>" AS analyzed_table
Databricks
{% import '/dialects/databricks.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM `<target_schema>`.`<target_table>` AS analyzed_table
DB2
{% import '/dialects/db2.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM(
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM(analyzed_table."target_column") IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM(
    SELECT
        original_table.*
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
DuckDB
{% import '/dialects/duckdb.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM  AS analyzed_table
HANA
{% import '/dialects/hana.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[-+]?\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
                    SUM(
                        CASE
                            WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[-+]?\d+$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[+-]?([0-9]*[.])[0-9]+$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 0
                    WHEN TRIM(TO_VARCHAR({{ lib.render_target_column('analyzed_table') }})) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[-+]?\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
                    SUM(
                        CASE
                            WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[-+]?\d+$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[+-]?([0-9]*[.])[0-9]+$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 0
                    WHEN TRIM(TO_VARCHAR(analyzed_table."target_column")) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM (
    SELECT
        original_table.*
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
MariaDB
{% import '/dialects/mariadb.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?[0-9]*[.,]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?([0-9]*[.])[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                            THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^[-+]?[0-9]+$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE WHEN 
    analyzed_table.`target_column` RLIKE '^[+-]?[0-9]*[.,]?[0-9]+$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL
                        OR 
    analyzed_table.`target_column` RLIKE '^[-+]?[0-9]+$'

                        OR 
    analyzed_table.`target_column` RLIKE '^[+-]?([0-9]*[.])[0-9]+$'

                        OR 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'

                        OR 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$'

                        OR 
    analyzed_table.`target_column` RLIKE '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$'

                        OR 
    analyzed_table.`target_column` RLIKE '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'

                            THEN 0
                    WHEN TRIM(analyzed_table.`target_column`) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM `<target_table>` AS analyzed_table
MySQL
{% import '/dialects/mysql.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?[0-9]*[.,]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]?[T]?[ \t\n\r\f\v]?([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?([.][0-9]{0,12})?[ \t\n\r\f\v]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?([0-9]*[.])[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[\s]?([.][0-9]{0,12})?[\s]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                            THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^[-+]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[    

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[    

]?[T]?[   

]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?([.][0-9]{0,12})?[  

]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^[-+]?[0-9]+$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^[+-]?([0-9]*[.])[0-9]+$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[  

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[\s]?([.][0-9]{0,12})?[\s]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                            THEN 0
                    WHEN TRIM(analyzed_table.`target_column`) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM `<target_table>` AS analyzed_table
Oracle
{% import '/dialects/oracle.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM(
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM(analyzed_table."target_column") IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM(
    SELECT
        original_table.*
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
PostgreSQL
{% import '/dialects/postgresql.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM "your_postgresql_database"."<target_schema>"."<target_table>" AS analyzed_table
Presto
{% import '/dialects/presto.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST(analyzed_table."target_column" AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM (
    SELECT
        original_table.*
    FROM "your_trino_database"."<target_schema>"."<target_table>" original_table
) analyzed_table
QuestDB
{% import '/dialects/questdb.sql.jinja2' as lib with context -%}
WITH data_table AS (
    SELECT
        COUNT({{ lib.render_target_column('analyzed_table') }}) as row_count,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_1,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_2,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_3,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_4,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                    THEN 1
                ELSE 0
            END) AS rows_type_5,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_6,
        SUM(
            CASE
                WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 0
                WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                    THEN 1
                ELSE 0
            END) AS rows_type_7
        {{ lib.render_data_grouping_projections_reference('analyzed_table') }}
        {{ lib.render_time_dimension_projection_reference('analyzed_table') }}
    FROM(
        SELECT
            original_table.*
            {{- lib.render_data_grouping_projections('original_table') }}
            {{- lib.render_time_dimension_projection('original_table') }}
        FROM {{ lib.render_target_table() }} original_table
    ) analyzed_table
    {{- lib.render_where_clause() -}}
    {{- lib.render_group_by() -}}
    {{- lib.render_order_by() -}}
)
SELECT
    CASE
        WHEN row_count = 0 THEN NULL
        WHEN row_count = rows_type_1 THEN 1
        WHEN row_count = rows_type_2 THEN 2
        WHEN row_count = rows_type_3 THEN 3
        WHEN row_count = rows_type_4 THEN 4
        WHEN row_count = rows_type_5 THEN 5
        WHEN row_count = rows_type_6 THEN 6
        WHEN row_count = rows_type_7 THEN 7
        ELSE 8
    END AS actual_value
FROM data_table AS analyzed_table
WITH data_table AS (
    SELECT
        COUNT(analyzed_table."target_column") as row_count,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_1,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_2,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_3,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_4,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                    THEN 1
                ELSE 0
            END) AS rows_type_5,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_6,
        SUM(
            CASE
                WHEN analyzed_table."target_column" IS NULL OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 0
                WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                    THEN 1
                ELSE 0
            END) AS rows_type_7


    FROM(
        SELECT
            original_table.*
        FROM "<target_table>" original_table
    ) analyzed_table)
SELECT
    CASE
        WHEN row_count = 0 THEN NULL
        WHEN row_count = rows_type_1 THEN 1
        WHEN row_count = rows_type_2 THEN 2
        WHEN row_count = rows_type_3 THEN 3
        WHEN row_count = rows_type_4 THEN 4
        WHEN row_count = rows_type_5 THEN 5
        WHEN row_count = rows_type_6 THEN 6
        WHEN row_count = rows_type_7 THEN 7
        ELSE 8
    END AS actual_value
FROM data_table AS analyzed_table
Redshift
{% import '/dialects/redshift.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM "your_redshift_database"."<target_schema>"."<target_table>" AS analyzed_table
Snowflake
{% import '/dialects/snowflake.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[-+]?\\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[-+]?\\d+$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[+-]?([0-9]*[.])[0-9]+$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[-+]?\\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[-+]?\\d+$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[+-]?([0-9]*[.])[0-9]+$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM "your_snowflake_database"."<target_schema>"."<target_table>" AS analyzed_table
Spark
{% import '/dialects/spark.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM `<target_schema>`.`<target_table>` AS analyzed_table
SQL Server
{% import '/dialects/sqlserver.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0-9]%'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN LEN(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <= 10
                        AND(
                            TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                        ) THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                           AND (
                               CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                           ) AND (
                               (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                               ) OR (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                               )
                           ) AND (
                                CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                           )
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 120) IS NOT NULL     --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 121) IS NOT NULL   --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 126) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 127) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 20) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 21) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 25) IS NOT NULL    --  yyyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 26) IS NOT NULL    --  yyyyy-dd-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 27) IS NOT NULL    --  ymm-dd-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 28) IS NOT NULL    --  ymm-yyyy-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 29) IS NOT NULL    --  ydd-mm-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 30) IS NOT NULL    --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 109) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 113) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                    THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN LOWER(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^0-9]%' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%' OR
                         LEN(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <= 10
                             AND(
                                 TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                             )
                         OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                               AND (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                               ) AND (
                                   (
                                       CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   ) OR (
                                       CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                                   )
                               ) AND (
                                    CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                               )
                         OR
                            TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 120) IS NOT NULL               --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 121) IS NOT NULL        --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 126) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 127) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 20) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 21) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 25) IS NOT NULL         --  yyyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 26) IS NOT NULL         --  yyyyy-dd-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 27) IS NOT NULL         --  ymm-dd-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 28) IS NOT NULL         --  ymm-yyyy-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 29) IS NOT NULL         --  ydd-mm-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 30) IS NOT NULL         --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 109) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 113) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                         OR LOWER(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT_BIG(analyzed_table.[target_column]) = 0 THEN NULL
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0-9]%'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN LEN(CAST(analyzed_table.[target_column] AS VARCHAR)) <= 10
                        AND(
                            TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                        ) THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                           AND (
                               CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                           ) AND (
                               (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                               ) OR (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                               )
                           ) AND (
                                CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                           )
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 120) IS NOT NULL     --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 121) IS NOT NULL   --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 126) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 127) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 20) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 21) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 25) IS NOT NULL    --  yyyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 26) IS NOT NULL    --  yyyyy-dd-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 27) IS NOT NULL    --  ymm-dd-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 28) IS NOT NULL    --  ymm-yyyy-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 29) IS NOT NULL    --  ydd-mm-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 30) IS NOT NULL    --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 109) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 113) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                    THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN LOWER(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE WHEN analyzed_table.[target_column] IS NULL OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^0-9]%' OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%' OR
                         LEN(CAST(analyzed_table.[target_column] AS VARCHAR)) <= 10
                             AND(
                                 TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                             )
                         OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                               AND (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                               ) AND (
                                   (
                                       CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   ) OR (
                                       CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                                   )
                               ) AND (
                                    CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                               )
                         OR
                            TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 120) IS NOT NULL               --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 121) IS NOT NULL        --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 126) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 127) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 20) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 21) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 25) IS NOT NULL         --  yyyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 26) IS NOT NULL         --  yyyyy-dd-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 27) IS NOT NULL         --  ymm-dd-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 28) IS NOT NULL         --  ymm-yyyy-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 29) IS NOT NULL         --  ydd-mm-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 30) IS NOT NULL         --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 109) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 113) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                         OR LOWER(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM [your_sql_server_database].[<target_schema>].[<target_table>] AS analyzed_table
Teradata
{% import '/dialects/teradata.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[+-]?[0-9]*[.,]?[0-9]+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[+-]?([0-9]*[.])[0-9]+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[+-]?[0-9]*[.,]?[0-9]+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[+-]?([0-9]*[.])[0-9]+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS VARCHAR(4096))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM "<target_schema>"."<target_table>" AS analyzed_table
Trino
{% import '/dialects/trino.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]{1}[.][0-9]*E[-]?[0-9]+$') OR {# Casting double to varchar in trino results in a scientific notation #}
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
                    SUM(
                        CASE
                            WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]{1}[.][0-9]*E[-]?[0-9]+$') OR 
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
                    SUM(
                        CASE
                            WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST(analyzed_table."target_column" AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM (
    SELECT
        original_table.*
    FROM "your_trino_catalog"."<target_schema>"."<target_table>" original_table
) analyzed_table

Expand the Configure with data grouping section to see additional examples for configuring this data quality checks to use data grouping (GROUP BY).

Configuration with data grouping

Sample configuration with data grouping enabled (YAML) The sample below shows how to configure the data grouping and how it affects the generated SQL query.

# yaml-language-server: $schema=https://cloud.dqops.com/dqo-yaml-schema/TableYaml-schema.json
apiVersion: dqo/v1
kind: table
spec:
  default_grouping_name: group_by_country_and_state
  groupings:
    group_by_country_and_state:
      level_1:
        source: column_value
        column: country
      level_2:
        source: column_value
        column: state
  columns:
    target_column:
      profiling_checks:
        datatype:
          profile_detected_datatype_in_text_changed:
            error: {}
      labels:
      - This is the column that is analyzed for data quality issues
    country:
      labels:
      - column used as the first grouping key
    state:
      labels:
      - column used as the second grouping key

Please expand the database engine name section to see the SQL query rendered by a Jinja2 template for the string_datatype_detect sensor.

BigQuery
{% import '/dialects/bigquery.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[-+]?\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[-+]?\d+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[-+]?\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[-+]?\d+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(SAFE_CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.`country` AS grouping_level_1,
    analyzed_table.`state` AS grouping_level_2
FROM `your-google-project-id`.`<target_schema>`.`<target_table>` AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
ClickHouse
{% import '/dialects/clickhouse.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^[-+]?\d+$') = TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^[+-]?[0-9]*[.,]?[0-9]+$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^[-+]?\d+$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^[+-]?([0-9]*[.])[0-9]+$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 0
                    WHEN TRIM(toString({{ lib.render_target_column('analyzed_table') }})) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^[-+]?\d+$') = TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^[+-]?[0-9]*[.,]?[0-9]+$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         match(toString(analyzed_table."target_column"), '^[-+]?\d+$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^[+-]?([0-9]*[.])[0-9]+$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 0
                    WHEN TRIM(toString(analyzed_table."target_column")) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2
FROM "<target_schema>"."<target_table>" AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
Databricks
{% import '/dialects/databricks.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.`country` AS grouping_level_1,
    analyzed_table.`state` AS grouping_level_2
FROM `<target_schema>`.`<target_table>` AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
DB2
{% import '/dialects/db2.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM(
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM(analyzed_table."target_column") IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2
FROM(
    SELECT
        original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
DuckDB
{% import '/dialects/duckdb.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2
FROM  AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
HANA
{% import '/dialects/hana.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[-+]?\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
                    SUM(
                        CASE
                            WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[-+]?\d+$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[+-]?([0-9]*[.])[0-9]+$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 0
                    WHEN TRIM(TO_VARCHAR({{ lib.render_target_column('analyzed_table') }})) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[-+]?\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
                    SUM(
                        CASE
                            WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[-+]?\d+$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[+-]?([0-9]*[.])[0-9]+$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 0
                    WHEN TRIM(TO_VARCHAR(analyzed_table."target_column")) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2
FROM (
    SELECT
        original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
MariaDB
{% import '/dialects/mariadb.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?[0-9]*[.,]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?([0-9]*[.])[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                            THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^[-+]?[0-9]+$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE WHEN 
    analyzed_table.`target_column` RLIKE '^[+-]?[0-9]*[.,]?[0-9]+$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL
                        OR 
    analyzed_table.`target_column` RLIKE '^[-+]?[0-9]+$'

                        OR 
    analyzed_table.`target_column` RLIKE '^[+-]?([0-9]*[.])[0-9]+$'

                        OR 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'

                        OR 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$'

                        OR 
    analyzed_table.`target_column` RLIKE '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$'

                        OR 
    analyzed_table.`target_column` RLIKE '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'

                            THEN 0
                    WHEN TRIM(analyzed_table.`target_column`) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.`country` AS grouping_level_1,
    analyzed_table.`state` AS grouping_level_2
FROM `<target_table>` AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
MySQL
{% import '/dialects/mysql.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?[0-9]*[.,]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]?[T]?[ \t\n\r\f\v]?([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?([.][0-9]{0,12})?[ \t\n\r\f\v]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?([0-9]*[.])[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[\s]?([.][0-9]{0,12})?[\s]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                            THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^[-+]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[    

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[    

]?[T]?[   

]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?([.][0-9]{0,12})?[  

]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^[-+]?[0-9]+$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^[+-]?([0-9]*[.])[0-9]+$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[  

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[\s]?([.][0-9]{0,12})?[\s]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                            THEN 0
                    WHEN TRIM(analyzed_table.`target_column`) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.`country` AS grouping_level_1,
    analyzed_table.`state` AS grouping_level_2
FROM `<target_table>` AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
Oracle
{% import '/dialects/oracle.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM(
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM(analyzed_table."target_column") IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2

FROM(
    SELECT
        original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
PostgreSQL
{% import '/dialects/postgresql.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2
FROM "your_postgresql_database"."<target_schema>"."<target_table>" AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
Presto
{% import '/dialects/presto.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST(analyzed_table."target_column" AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2

FROM (
    SELECT
        original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2
    FROM "your_trino_database"."<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
QuestDB
{% import '/dialects/questdb.sql.jinja2' as lib with context -%}
WITH data_table AS (
    SELECT
        COUNT({{ lib.render_target_column('analyzed_table') }}) as row_count,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_1,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_2,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_3,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_4,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                    THEN 1
                ELSE 0
            END) AS rows_type_5,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_6,
        SUM(
            CASE
                WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 0
                WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                    THEN 1
                ELSE 0
            END) AS rows_type_7
        {{ lib.render_data_grouping_projections_reference('analyzed_table') }}
        {{ lib.render_time_dimension_projection_reference('analyzed_table') }}
    FROM(
        SELECT
            original_table.*
            {{- lib.render_data_grouping_projections('original_table') }}
            {{- lib.render_time_dimension_projection('original_table') }}
        FROM {{ lib.render_target_table() }} original_table
    ) analyzed_table
    {{- lib.render_where_clause() -}}
    {{- lib.render_group_by() -}}
    {{- lib.render_order_by() -}}
)
SELECT
    CASE
        WHEN row_count = 0 THEN NULL
        WHEN row_count = rows_type_1 THEN 1
        WHEN row_count = rows_type_2 THEN 2
        WHEN row_count = rows_type_3 THEN 3
        WHEN row_count = rows_type_4 THEN 4
        WHEN row_count = rows_type_5 THEN 5
        WHEN row_count = rows_type_6 THEN 6
        WHEN row_count = rows_type_7 THEN 7
        ELSE 8
    END AS actual_value
FROM data_table AS analyzed_table
WITH data_table AS (
    SELECT
        COUNT(analyzed_table."target_column") as row_count,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_1,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_2,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_3,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_4,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                    THEN 1
                ELSE 0
            END) AS rows_type_5,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_6,
        SUM(
            CASE
                WHEN analyzed_table."target_column" IS NULL OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 0
                WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                    THEN 1
                ELSE 0
            END) AS rows_type_7
        ,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2

    FROM(
        SELECT
            original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2
        FROM "<target_table>" original_table
    ) analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2)
SELECT
    CASE
        WHEN row_count = 0 THEN NULL
        WHEN row_count = rows_type_1 THEN 1
        WHEN row_count = rows_type_2 THEN 2
        WHEN row_count = rows_type_3 THEN 3
        WHEN row_count = rows_type_4 THEN 4
        WHEN row_count = rows_type_5 THEN 5
        WHEN row_count = rows_type_6 THEN 6
        WHEN row_count = rows_type_7 THEN 7
        ELSE 8
    END AS actual_value
FROM data_table AS analyzed_table
Redshift
{% import '/dialects/redshift.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2
FROM "your_redshift_database"."<target_schema>"."<target_table>" AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
Snowflake
{% import '/dialects/snowflake.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[-+]?\\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[-+]?\\d+$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[+-]?([0-9]*[.])[0-9]+$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[-+]?\\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[-+]?\\d+$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[+-]?([0-9]*[.])[0-9]+$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2
FROM "your_snowflake_database"."<target_schema>"."<target_table>" AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
Spark
{% import '/dialects/spark.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.`country` AS grouping_level_1,
    analyzed_table.`state` AS grouping_level_2
FROM `<target_schema>`.`<target_table>` AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
SQL Server
{% import '/dialects/sqlserver.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0-9]%'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN LEN(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <= 10
                        AND(
                            TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                        ) THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                           AND (
                               CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                           ) AND (
                               (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                               ) OR (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                               )
                           ) AND (
                                CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                           )
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 120) IS NOT NULL     --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 121) IS NOT NULL   --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 126) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 127) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 20) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 21) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 25) IS NOT NULL    --  yyyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 26) IS NOT NULL    --  yyyyy-dd-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 27) IS NOT NULL    --  ymm-dd-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 28) IS NOT NULL    --  ymm-yyyy-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 29) IS NOT NULL    --  ydd-mm-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 30) IS NOT NULL    --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 109) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 113) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                    THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN LOWER(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^0-9]%' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%' OR
                         LEN(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <= 10
                             AND(
                                 TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                             )
                         OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                               AND (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                               ) AND (
                                   (
                                       CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   ) OR (
                                       CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                                   )
                               ) AND (
                                    CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                               )
                         OR
                            TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 120) IS NOT NULL               --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 121) IS NOT NULL        --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 126) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 127) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 20) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 21) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 25) IS NOT NULL         --  yyyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 26) IS NOT NULL         --  yyyyy-dd-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 27) IS NOT NULL         --  ymm-dd-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 28) IS NOT NULL         --  ymm-yyyy-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 29) IS NOT NULL         --  ydd-mm-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 30) IS NOT NULL         --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 109) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 113) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                         OR LOWER(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT_BIG(analyzed_table.[target_column]) = 0 THEN NULL
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0-9]%'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN LEN(CAST(analyzed_table.[target_column] AS VARCHAR)) <= 10
                        AND(
                            TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                        ) THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                           AND (
                               CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                           ) AND (
                               (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                               ) OR (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                               )
                           ) AND (
                                CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                           )
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 120) IS NOT NULL     --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 121) IS NOT NULL   --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 126) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 127) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 20) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 21) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 25) IS NOT NULL    --  yyyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 26) IS NOT NULL    --  yyyyy-dd-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 27) IS NOT NULL    --  ymm-dd-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 28) IS NOT NULL    --  ymm-yyyy-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 29) IS NOT NULL    --  ydd-mm-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 30) IS NOT NULL    --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 109) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 113) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                    THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN LOWER(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE WHEN analyzed_table.[target_column] IS NULL OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^0-9]%' OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%' OR
                         LEN(CAST(analyzed_table.[target_column] AS VARCHAR)) <= 10
                             AND(
                                 TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                             )
                         OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                               AND (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                               ) AND (
                                   (
                                       CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   ) OR (
                                       CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                                   )
                               ) AND (
                                    CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                               )
                         OR
                            TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 120) IS NOT NULL               --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 121) IS NOT NULL        --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 126) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 127) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 20) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 21) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 25) IS NOT NULL         --  yyyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 26) IS NOT NULL         --  yyyyy-dd-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 27) IS NOT NULL         --  ymm-dd-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 28) IS NOT NULL         --  ymm-yyyy-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 29) IS NOT NULL         --  ydd-mm-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 30) IS NOT NULL         --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 109) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 113) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                         OR LOWER(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.[country] AS grouping_level_1,
    analyzed_table.[state] AS grouping_level_2
FROM [your_sql_server_database].[<target_schema>].[<target_table>] AS analyzed_table
GROUP BY analyzed_table.[country], analyzed_table.[state]
ORDER BY level_1, level_2
        , 
Teradata
{% import '/dialects/teradata.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[+-]?[0-9]*[.,]?[0-9]+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[+-]?([0-9]*[.])[0-9]+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[+-]?[0-9]*[.,]?[0-9]+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[+-]?([0-9]*[.])[0-9]+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS VARCHAR(4096))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2
FROM "<target_schema>"."<target_table>" AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
Trino
{% import '/dialects/trino.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]{1}[.][0-9]*E[-]?[0-9]+$') OR {# Casting double to varchar in trino results in a scientific notation #}
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
                    SUM(
                        CASE
                            WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]{1}[.][0-9]*E[-]?[0-9]+$') OR 
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
                    SUM(
                        CASE
                            WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST(analyzed_table."target_column" AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2

FROM (
    SELECT
        original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2
    FROM "your_trino_catalog"."<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2

daily detected datatype in text changed

Check description

Detects that the data type of texts stored in a text column has changed since the last verification. The sensor returns the detected type of column data: 1 - integers, 2 - floats, 3 - dates, 4 - datetimes, 5 - timestamps, 6 - booleans, 7 - strings, 8 - mixed data types. Stores the most recent captured value for each day when the data quality check was evaluated.

Data quality check name Friendly name Category Check type Time scale Quality dimension Sensor definition Quality rule Standard
daily_detected_datatype_in_text_changed Detect a change of the data type of all values in a text column datatype monitoring daily Consistency string_datatype_detect value_changed

Command-line examples

Please expand the section below to see the DQOps command-line examples to run or activate the daily detected datatype in text changed data quality check.

Managing daily detected datatype in text changed check from DQOps shell

Activate this data quality using the check activate CLI command, providing the connection name, table name, check name, and all other filters. Activates the warning rule with the default parameters.

dqo> check activate -c=connection_name -t=schema_name.table_name -col=column_name -ch=daily_detected_datatype_in_text_changed --enable-warning

You can also use patterns to activate the check on all matching tables and columns.

dqo> check activate -c=connection_name -t=schema_prefix*.fact_* -col=column_name -ch=daily_detected_datatype_in_text_changed --enable-warning

Activate this data quality using the check activate CLI command, providing the connection name, table name, check name, and all other filters. Activates the error rule with the default parameters.

dqo> check activate -c=connection_name -t=schema_name.table_name -col=column_name -ch=daily_detected_datatype_in_text_changed --enable-error

You can also use patterns to activate the check on all matching tables and columns.

dqo> check activate -c=connection_name -t=schema_prefix*.fact_* -col=column_name -ch=daily_detected_datatype_in_text_changed --enable-error

Run this data quality check using the check run CLI command by providing the check name and all other targeting filters. The following example shows how to run the daily_detected_datatype_in_text_changed check on all tables and columns on a single data source.

dqo> check run -c=data_source_name -ch=daily_detected_datatype_in_text_changed

It is also possible to run this check on a specific connection and table. In order to do this, use the connection name and the full table name parameters.

dqo> check run -c=connection_name -t=schema_name.table_name -ch=daily_detected_datatype_in_text_changed

You can also run this check on all tables (and columns) on which the daily_detected_datatype_in_text_changed check is enabled using patterns to find tables.

dqo> check run -c=connection_name -t=schema_prefix*.fact_* -col=column_name_* -ch=daily_detected_datatype_in_text_changed

YAML configuration

The sample schema_name.table_name.dqotable.yaml file with the check configured is shown below.

# yaml-language-server: $schema=https://cloud.dqops.com/dqo-yaml-schema/TableYaml-schema.json
apiVersion: dqo/v1
kind: table
spec:
  columns:
    target_column:
      monitoring_checks:
        daily:
          datatype:
            daily_detected_datatype_in_text_changed:
              error: {}
      labels:
      - This is the column that is analyzed for data quality issues
Samples of generated SQL queries for each data source type

Please expand the database engine name section to see the SQL query rendered by a Jinja2 template for the string_datatype_detect data quality sensor.

BigQuery
{% import '/dialects/bigquery.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[-+]?\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[-+]?\d+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[-+]?\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[-+]?\d+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(SAFE_CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM `your-google-project-id`.`<target_schema>`.`<target_table>` AS analyzed_table
ClickHouse
{% import '/dialects/clickhouse.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^[-+]?\d+$') = TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^[+-]?[0-9]*[.,]?[0-9]+$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^[-+]?\d+$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^[+-]?([0-9]*[.])[0-9]+$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 0
                    WHEN TRIM(toString({{ lib.render_target_column('analyzed_table') }})) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^[-+]?\d+$') = TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^[+-]?[0-9]*[.,]?[0-9]+$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         match(toString(analyzed_table."target_column"), '^[-+]?\d+$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^[+-]?([0-9]*[.])[0-9]+$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 0
                    WHEN TRIM(toString(analyzed_table."target_column")) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM "<target_schema>"."<target_table>" AS analyzed_table
Databricks
{% import '/dialects/databricks.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM `<target_schema>`.`<target_table>` AS analyzed_table
DB2
{% import '/dialects/db2.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM(
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM(analyzed_table."target_column") IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM(
    SELECT
        original_table.*
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
DuckDB
{% import '/dialects/duckdb.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM  AS analyzed_table
HANA
{% import '/dialects/hana.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[-+]?\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
                    SUM(
                        CASE
                            WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[-+]?\d+$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[+-]?([0-9]*[.])[0-9]+$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 0
                    WHEN TRIM(TO_VARCHAR({{ lib.render_target_column('analyzed_table') }})) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[-+]?\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
                    SUM(
                        CASE
                            WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[-+]?\d+$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[+-]?([0-9]*[.])[0-9]+$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 0
                    WHEN TRIM(TO_VARCHAR(analyzed_table."target_column")) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM (
    SELECT
        original_table.*
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
MariaDB
{% import '/dialects/mariadb.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?[0-9]*[.,]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?([0-9]*[.])[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                            THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^[-+]?[0-9]+$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE WHEN 
    analyzed_table.`target_column` RLIKE '^[+-]?[0-9]*[.,]?[0-9]+$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL
                        OR 
    analyzed_table.`target_column` RLIKE '^[-+]?[0-9]+$'

                        OR 
    analyzed_table.`target_column` RLIKE '^[+-]?([0-9]*[.])[0-9]+$'

                        OR 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'

                        OR 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$'

                        OR 
    analyzed_table.`target_column` RLIKE '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$'

                        OR 
    analyzed_table.`target_column` RLIKE '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'

                            THEN 0
                    WHEN TRIM(analyzed_table.`target_column`) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM `<target_table>` AS analyzed_table
MySQL
{% import '/dialects/mysql.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?[0-9]*[.,]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]?[T]?[ \t\n\r\f\v]?([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?([.][0-9]{0,12})?[ \t\n\r\f\v]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?([0-9]*[.])[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[\s]?([.][0-9]{0,12})?[\s]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                            THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^[-+]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[    

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[    

]?[T]?[   

]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?([.][0-9]{0,12})?[  

]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^[-+]?[0-9]+$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^[+-]?([0-9]*[.])[0-9]+$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[  

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[\s]?([.][0-9]{0,12})?[\s]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                            THEN 0
                    WHEN TRIM(analyzed_table.`target_column`) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM `<target_table>` AS analyzed_table
Oracle
{% import '/dialects/oracle.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM(
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM(analyzed_table."target_column") IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM(
    SELECT
        original_table.*
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
PostgreSQL
{% import '/dialects/postgresql.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM "your_postgresql_database"."<target_schema>"."<target_table>" AS analyzed_table
Presto
{% import '/dialects/presto.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST(analyzed_table."target_column" AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM (
    SELECT
        original_table.*
    FROM "your_trino_database"."<target_schema>"."<target_table>" original_table
) analyzed_table
QuestDB
{% import '/dialects/questdb.sql.jinja2' as lib with context -%}
WITH data_table AS (
    SELECT
        COUNT({{ lib.render_target_column('analyzed_table') }}) as row_count,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_1,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_2,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_3,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_4,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                    THEN 1
                ELSE 0
            END) AS rows_type_5,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_6,
        SUM(
            CASE
                WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 0
                WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                    THEN 1
                ELSE 0
            END) AS rows_type_7
        {{ lib.render_data_grouping_projections_reference('analyzed_table') }}
        {{ lib.render_time_dimension_projection_reference('analyzed_table') }}
    FROM(
        SELECT
            original_table.*
            {{- lib.render_data_grouping_projections('original_table') }}
            {{- lib.render_time_dimension_projection('original_table') }}
        FROM {{ lib.render_target_table() }} original_table
    ) analyzed_table
    {{- lib.render_where_clause() -}}
    {{- lib.render_group_by() -}}
    {{- lib.render_order_by() -}}
)
SELECT
    CASE
        WHEN row_count = 0 THEN NULL
        WHEN row_count = rows_type_1 THEN 1
        WHEN row_count = rows_type_2 THEN 2
        WHEN row_count = rows_type_3 THEN 3
        WHEN row_count = rows_type_4 THEN 4
        WHEN row_count = rows_type_5 THEN 5
        WHEN row_count = rows_type_6 THEN 6
        WHEN row_count = rows_type_7 THEN 7
        ELSE 8
    END AS actual_value
FROM data_table AS analyzed_table
WITH data_table AS (
    SELECT
        COUNT(analyzed_table."target_column") as row_count,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_1,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_2,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_3,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_4,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                    THEN 1
                ELSE 0
            END) AS rows_type_5,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_6,
        SUM(
            CASE
                WHEN analyzed_table."target_column" IS NULL OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 0
                WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                    THEN 1
                ELSE 0
            END) AS rows_type_7


    FROM(
        SELECT
            original_table.*
        FROM "<target_table>" original_table
    ) analyzed_table)
SELECT
    CASE
        WHEN row_count = 0 THEN NULL
        WHEN row_count = rows_type_1 THEN 1
        WHEN row_count = rows_type_2 THEN 2
        WHEN row_count = rows_type_3 THEN 3
        WHEN row_count = rows_type_4 THEN 4
        WHEN row_count = rows_type_5 THEN 5
        WHEN row_count = rows_type_6 THEN 6
        WHEN row_count = rows_type_7 THEN 7
        ELSE 8
    END AS actual_value
FROM data_table AS analyzed_table
Redshift
{% import '/dialects/redshift.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM "your_redshift_database"."<target_schema>"."<target_table>" AS analyzed_table
Snowflake
{% import '/dialects/snowflake.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[-+]?\\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[-+]?\\d+$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[+-]?([0-9]*[.])[0-9]+$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[-+]?\\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[-+]?\\d+$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[+-]?([0-9]*[.])[0-9]+$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM "your_snowflake_database"."<target_schema>"."<target_table>" AS analyzed_table
Spark
{% import '/dialects/spark.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM `<target_schema>`.`<target_table>` AS analyzed_table
SQL Server
{% import '/dialects/sqlserver.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0-9]%'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN LEN(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <= 10
                        AND(
                            TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                        ) THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                           AND (
                               CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                           ) AND (
                               (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                               ) OR (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                               )
                           ) AND (
                                CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                           )
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 120) IS NOT NULL     --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 121) IS NOT NULL   --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 126) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 127) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 20) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 21) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 25) IS NOT NULL    --  yyyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 26) IS NOT NULL    --  yyyyy-dd-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 27) IS NOT NULL    --  ymm-dd-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 28) IS NOT NULL    --  ymm-yyyy-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 29) IS NOT NULL    --  ydd-mm-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 30) IS NOT NULL    --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 109) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 113) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                    THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN LOWER(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^0-9]%' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%' OR
                         LEN(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <= 10
                             AND(
                                 TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                             )
                         OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                               AND (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                               ) AND (
                                   (
                                       CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   ) OR (
                                       CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                                   )
                               ) AND (
                                    CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                               )
                         OR
                            TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 120) IS NOT NULL               --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 121) IS NOT NULL        --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 126) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 127) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 20) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 21) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 25) IS NOT NULL         --  yyyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 26) IS NOT NULL         --  yyyyy-dd-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 27) IS NOT NULL         --  ymm-dd-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 28) IS NOT NULL         --  ymm-yyyy-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 29) IS NOT NULL         --  ydd-mm-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 30) IS NOT NULL         --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 109) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 113) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                         OR LOWER(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT_BIG(analyzed_table.[target_column]) = 0 THEN NULL
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0-9]%'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN LEN(CAST(analyzed_table.[target_column] AS VARCHAR)) <= 10
                        AND(
                            TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                        ) THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                           AND (
                               CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                           ) AND (
                               (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                               ) OR (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                               )
                           ) AND (
                                CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                           )
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 120) IS NOT NULL     --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 121) IS NOT NULL   --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 126) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 127) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 20) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 21) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 25) IS NOT NULL    --  yyyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 26) IS NOT NULL    --  yyyyy-dd-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 27) IS NOT NULL    --  ymm-dd-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 28) IS NOT NULL    --  ymm-yyyy-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 29) IS NOT NULL    --  ydd-mm-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 30) IS NOT NULL    --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 109) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 113) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                    THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN LOWER(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE WHEN analyzed_table.[target_column] IS NULL OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^0-9]%' OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%' OR
                         LEN(CAST(analyzed_table.[target_column] AS VARCHAR)) <= 10
                             AND(
                                 TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                             )
                         OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                               AND (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                               ) AND (
                                   (
                                       CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   ) OR (
                                       CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                                   )
                               ) AND (
                                    CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                               )
                         OR
                            TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 120) IS NOT NULL               --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 121) IS NOT NULL        --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 126) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 127) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 20) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 21) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 25) IS NOT NULL         --  yyyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 26) IS NOT NULL         --  yyyyy-dd-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 27) IS NOT NULL         --  ymm-dd-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 28) IS NOT NULL         --  ymm-yyyy-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 29) IS NOT NULL         --  ydd-mm-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 30) IS NOT NULL         --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 109) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 113) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                         OR LOWER(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM [your_sql_server_database].[<target_schema>].[<target_table>] AS analyzed_table
Teradata
{% import '/dialects/teradata.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[+-]?[0-9]*[.,]?[0-9]+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[+-]?([0-9]*[.])[0-9]+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[+-]?[0-9]*[.,]?[0-9]+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[+-]?([0-9]*[.])[0-9]+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS VARCHAR(4096))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM "<target_schema>"."<target_table>" AS analyzed_table
Trino
{% import '/dialects/trino.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]{1}[.][0-9]*E[-]?[0-9]+$') OR {# Casting double to varchar in trino results in a scientific notation #}
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
                    SUM(
                        CASE
                            WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]{1}[.][0-9]*E[-]?[0-9]+$') OR 
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
                    SUM(
                        CASE
                            WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST(analyzed_table."target_column" AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM (
    SELECT
        original_table.*
    FROM "your_trino_catalog"."<target_schema>"."<target_table>" original_table
) analyzed_table

Expand the Configure with data grouping section to see additional examples for configuring this data quality checks to use data grouping (GROUP BY).

Configuration with data grouping

Sample configuration with data grouping enabled (YAML) The sample below shows how to configure the data grouping and how it affects the generated SQL query.

# yaml-language-server: $schema=https://cloud.dqops.com/dqo-yaml-schema/TableYaml-schema.json
apiVersion: dqo/v1
kind: table
spec:
  default_grouping_name: group_by_country_and_state
  groupings:
    group_by_country_and_state:
      level_1:
        source: column_value
        column: country
      level_2:
        source: column_value
        column: state
  columns:
    target_column:
      monitoring_checks:
        daily:
          datatype:
            daily_detected_datatype_in_text_changed:
              error: {}
      labels:
      - This is the column that is analyzed for data quality issues
    country:
      labels:
      - column used as the first grouping key
    state:
      labels:
      - column used as the second grouping key

Please expand the database engine name section to see the SQL query rendered by a Jinja2 template for the string_datatype_detect sensor.

BigQuery
{% import '/dialects/bigquery.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[-+]?\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[-+]?\d+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[-+]?\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[-+]?\d+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(SAFE_CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.`country` AS grouping_level_1,
    analyzed_table.`state` AS grouping_level_2
FROM `your-google-project-id`.`<target_schema>`.`<target_table>` AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
ClickHouse
{% import '/dialects/clickhouse.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^[-+]?\d+$') = TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^[+-]?[0-9]*[.,]?[0-9]+$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^[-+]?\d+$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^[+-]?([0-9]*[.])[0-9]+$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 0
                    WHEN TRIM(toString({{ lib.render_target_column('analyzed_table') }})) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^[-+]?\d+$') = TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^[+-]?[0-9]*[.,]?[0-9]+$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         match(toString(analyzed_table."target_column"), '^[-+]?\d+$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^[+-]?([0-9]*[.])[0-9]+$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 0
                    WHEN TRIM(toString(analyzed_table."target_column")) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2
FROM "<target_schema>"."<target_table>" AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
Databricks
{% import '/dialects/databricks.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.`country` AS grouping_level_1,
    analyzed_table.`state` AS grouping_level_2
FROM `<target_schema>`.`<target_table>` AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
DB2
{% import '/dialects/db2.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM(
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM(analyzed_table."target_column") IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2
FROM(
    SELECT
        original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
DuckDB
{% import '/dialects/duckdb.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2
FROM  AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
HANA
{% import '/dialects/hana.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[-+]?\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
                    SUM(
                        CASE
                            WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[-+]?\d+$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[+-]?([0-9]*[.])[0-9]+$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 0
                    WHEN TRIM(TO_VARCHAR({{ lib.render_target_column('analyzed_table') }})) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[-+]?\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
                    SUM(
                        CASE
                            WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[-+]?\d+$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[+-]?([0-9]*[.])[0-9]+$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 0
                    WHEN TRIM(TO_VARCHAR(analyzed_table."target_column")) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2
FROM (
    SELECT
        original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
MariaDB
{% import '/dialects/mariadb.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?[0-9]*[.,]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?([0-9]*[.])[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                            THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^[-+]?[0-9]+$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE WHEN 
    analyzed_table.`target_column` RLIKE '^[+-]?[0-9]*[.,]?[0-9]+$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL
                        OR 
    analyzed_table.`target_column` RLIKE '^[-+]?[0-9]+$'

                        OR 
    analyzed_table.`target_column` RLIKE '^[+-]?([0-9]*[.])[0-9]+$'

                        OR 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'

                        OR 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$'

                        OR 
    analyzed_table.`target_column` RLIKE '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$'

                        OR 
    analyzed_table.`target_column` RLIKE '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'

                            THEN 0
                    WHEN TRIM(analyzed_table.`target_column`) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.`country` AS grouping_level_1,
    analyzed_table.`state` AS grouping_level_2
FROM `<target_table>` AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
MySQL
{% import '/dialects/mysql.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?[0-9]*[.,]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]?[T]?[ \t\n\r\f\v]?([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?([.][0-9]{0,12})?[ \t\n\r\f\v]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?([0-9]*[.])[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[\s]?([.][0-9]{0,12})?[\s]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                            THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^[-+]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[    

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[    

]?[T]?[   

]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?([.][0-9]{0,12})?[  

]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^[-+]?[0-9]+$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^[+-]?([0-9]*[.])[0-9]+$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[  

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[\s]?([.][0-9]{0,12})?[\s]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                            THEN 0
                    WHEN TRIM(analyzed_table.`target_column`) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.`country` AS grouping_level_1,
    analyzed_table.`state` AS grouping_level_2
FROM `<target_table>` AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
Oracle
{% import '/dialects/oracle.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM(
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM(analyzed_table."target_column") IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2

FROM(
    SELECT
        original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
PostgreSQL
{% import '/dialects/postgresql.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2
FROM "your_postgresql_database"."<target_schema>"."<target_table>" AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
Presto
{% import '/dialects/presto.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST(analyzed_table."target_column" AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2

FROM (
    SELECT
        original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2
    FROM "your_trino_database"."<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
QuestDB
{% import '/dialects/questdb.sql.jinja2' as lib with context -%}
WITH data_table AS (
    SELECT
        COUNT({{ lib.render_target_column('analyzed_table') }}) as row_count,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_1,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_2,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_3,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_4,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                    THEN 1
                ELSE 0
            END) AS rows_type_5,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_6,
        SUM(
            CASE
                WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 0
                WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                    THEN 1
                ELSE 0
            END) AS rows_type_7
        {{ lib.render_data_grouping_projections_reference('analyzed_table') }}
        {{ lib.render_time_dimension_projection_reference('analyzed_table') }}
    FROM(
        SELECT
            original_table.*
            {{- lib.render_data_grouping_projections('original_table') }}
            {{- lib.render_time_dimension_projection('original_table') }}
        FROM {{ lib.render_target_table() }} original_table
    ) analyzed_table
    {{- lib.render_where_clause() -}}
    {{- lib.render_group_by() -}}
    {{- lib.render_order_by() -}}
)
SELECT
    CASE
        WHEN row_count = 0 THEN NULL
        WHEN row_count = rows_type_1 THEN 1
        WHEN row_count = rows_type_2 THEN 2
        WHEN row_count = rows_type_3 THEN 3
        WHEN row_count = rows_type_4 THEN 4
        WHEN row_count = rows_type_5 THEN 5
        WHEN row_count = rows_type_6 THEN 6
        WHEN row_count = rows_type_7 THEN 7
        ELSE 8
    END AS actual_value
FROM data_table AS analyzed_table
WITH data_table AS (
    SELECT
        COUNT(analyzed_table."target_column") as row_count,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_1,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_2,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_3,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_4,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                    THEN 1
                ELSE 0
            END) AS rows_type_5,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_6,
        SUM(
            CASE
                WHEN analyzed_table."target_column" IS NULL OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 0
                WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                    THEN 1
                ELSE 0
            END) AS rows_type_7
        ,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2

    FROM(
        SELECT
            original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2
        FROM "<target_table>" original_table
    ) analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2)
SELECT
    CASE
        WHEN row_count = 0 THEN NULL
        WHEN row_count = rows_type_1 THEN 1
        WHEN row_count = rows_type_2 THEN 2
        WHEN row_count = rows_type_3 THEN 3
        WHEN row_count = rows_type_4 THEN 4
        WHEN row_count = rows_type_5 THEN 5
        WHEN row_count = rows_type_6 THEN 6
        WHEN row_count = rows_type_7 THEN 7
        ELSE 8
    END AS actual_value
FROM data_table AS analyzed_table
Redshift
{% import '/dialects/redshift.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2
FROM "your_redshift_database"."<target_schema>"."<target_table>" AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
Snowflake
{% import '/dialects/snowflake.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[-+]?\\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[-+]?\\d+$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[+-]?([0-9]*[.])[0-9]+$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[-+]?\\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[-+]?\\d+$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[+-]?([0-9]*[.])[0-9]+$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2
FROM "your_snowflake_database"."<target_schema>"."<target_table>" AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
Spark
{% import '/dialects/spark.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.`country` AS grouping_level_1,
    analyzed_table.`state` AS grouping_level_2
FROM `<target_schema>`.`<target_table>` AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
SQL Server
{% import '/dialects/sqlserver.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0-9]%'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN LEN(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <= 10
                        AND(
                            TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                        ) THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                           AND (
                               CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                           ) AND (
                               (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                               ) OR (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                               )
                           ) AND (
                                CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                           )
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 120) IS NOT NULL     --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 121) IS NOT NULL   --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 126) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 127) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 20) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 21) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 25) IS NOT NULL    --  yyyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 26) IS NOT NULL    --  yyyyy-dd-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 27) IS NOT NULL    --  ymm-dd-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 28) IS NOT NULL    --  ymm-yyyy-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 29) IS NOT NULL    --  ydd-mm-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 30) IS NOT NULL    --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 109) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 113) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                    THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN LOWER(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^0-9]%' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%' OR
                         LEN(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <= 10
                             AND(
                                 TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                             )
                         OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                               AND (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                               ) AND (
                                   (
                                       CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   ) OR (
                                       CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                                   )
                               ) AND (
                                    CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                               )
                         OR
                            TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 120) IS NOT NULL               --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 121) IS NOT NULL        --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 126) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 127) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 20) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 21) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 25) IS NOT NULL         --  yyyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 26) IS NOT NULL         --  yyyyy-dd-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 27) IS NOT NULL         --  ymm-dd-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 28) IS NOT NULL         --  ymm-yyyy-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 29) IS NOT NULL         --  ydd-mm-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 30) IS NOT NULL         --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 109) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 113) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                         OR LOWER(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT_BIG(analyzed_table.[target_column]) = 0 THEN NULL
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0-9]%'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN LEN(CAST(analyzed_table.[target_column] AS VARCHAR)) <= 10
                        AND(
                            TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                        ) THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                           AND (
                               CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                           ) AND (
                               (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                               ) OR (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                               )
                           ) AND (
                                CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                           )
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 120) IS NOT NULL     --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 121) IS NOT NULL   --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 126) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 127) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 20) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 21) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 25) IS NOT NULL    --  yyyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 26) IS NOT NULL    --  yyyyy-dd-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 27) IS NOT NULL    --  ymm-dd-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 28) IS NOT NULL    --  ymm-yyyy-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 29) IS NOT NULL    --  ydd-mm-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 30) IS NOT NULL    --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 109) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 113) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                    THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN LOWER(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE WHEN analyzed_table.[target_column] IS NULL OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^0-9]%' OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%' OR
                         LEN(CAST(analyzed_table.[target_column] AS VARCHAR)) <= 10
                             AND(
                                 TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                             )
                         OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                               AND (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                               ) AND (
                                   (
                                       CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   ) OR (
                                       CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                                   )
                               ) AND (
                                    CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                               )
                         OR
                            TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 120) IS NOT NULL               --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 121) IS NOT NULL        --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 126) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 127) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 20) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 21) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 25) IS NOT NULL         --  yyyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 26) IS NOT NULL         --  yyyyy-dd-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 27) IS NOT NULL         --  ymm-dd-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 28) IS NOT NULL         --  ymm-yyyy-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 29) IS NOT NULL         --  ydd-mm-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 30) IS NOT NULL         --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 109) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 113) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                         OR LOWER(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.[country] AS grouping_level_1,
    analyzed_table.[state] AS grouping_level_2
FROM [your_sql_server_database].[<target_schema>].[<target_table>] AS analyzed_table
GROUP BY analyzed_table.[country], analyzed_table.[state]
ORDER BY level_1, level_2
        , 
Teradata
{% import '/dialects/teradata.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[+-]?[0-9]*[.,]?[0-9]+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[+-]?([0-9]*[.])[0-9]+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[+-]?[0-9]*[.,]?[0-9]+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[+-]?([0-9]*[.])[0-9]+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS VARCHAR(4096))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2
FROM "<target_schema>"."<target_table>" AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
Trino
{% import '/dialects/trino.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]{1}[.][0-9]*E[-]?[0-9]+$') OR {# Casting double to varchar in trino results in a scientific notation #}
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
                    SUM(
                        CASE
                            WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]{1}[.][0-9]*E[-]?[0-9]+$') OR 
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
                    SUM(
                        CASE
                            WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST(analyzed_table."target_column" AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2

FROM (
    SELECT
        original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2
    FROM "your_trino_catalog"."<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2

monthly detected datatype in text changed

Check description

Detects that the data type of texts stored in a text column has changed since the last verification. The sensor returns the detected type of column data: 1 - integers, 2 - floats, 3 - dates, 4 - datetimes, 5 - timestamps, 6 - booleans, 7 - strings, 8 - mixed data types. Stores the most recent captured value for each day when the data quality check was evaluated.

Data quality check name Friendly name Category Check type Time scale Quality dimension Sensor definition Quality rule Standard
monthly_detected_datatype_in_text_changed Detect a change of the data type of all values in a text column datatype monitoring monthly Consistency string_datatype_detect value_changed

Command-line examples

Please expand the section below to see the DQOps command-line examples to run or activate the monthly detected datatype in text changed data quality check.

Managing monthly detected datatype in text changed check from DQOps shell

Activate this data quality using the check activate CLI command, providing the connection name, table name, check name, and all other filters. Activates the warning rule with the default parameters.

dqo> check activate -c=connection_name -t=schema_name.table_name -col=column_name -ch=monthly_detected_datatype_in_text_changed --enable-warning

You can also use patterns to activate the check on all matching tables and columns.

dqo> check activate -c=connection_name -t=schema_prefix*.fact_* -col=column_name -ch=monthly_detected_datatype_in_text_changed --enable-warning

Activate this data quality using the check activate CLI command, providing the connection name, table name, check name, and all other filters. Activates the error rule with the default parameters.

dqo> check activate -c=connection_name -t=schema_name.table_name -col=column_name -ch=monthly_detected_datatype_in_text_changed --enable-error

You can also use patterns to activate the check on all matching tables and columns.

dqo> check activate -c=connection_name -t=schema_prefix*.fact_* -col=column_name -ch=monthly_detected_datatype_in_text_changed --enable-error

Run this data quality check using the check run CLI command by providing the check name and all other targeting filters. The following example shows how to run the monthly_detected_datatype_in_text_changed check on all tables and columns on a single data source.

dqo> check run -c=data_source_name -ch=monthly_detected_datatype_in_text_changed

It is also possible to run this check on a specific connection and table. In order to do this, use the connection name and the full table name parameters.

dqo> check run -c=connection_name -t=schema_name.table_name -ch=monthly_detected_datatype_in_text_changed

You can also run this check on all tables (and columns) on which the monthly_detected_datatype_in_text_changed check is enabled using patterns to find tables.

dqo> check run -c=connection_name -t=schema_prefix*.fact_* -col=column_name_* -ch=monthly_detected_datatype_in_text_changed

YAML configuration

The sample schema_name.table_name.dqotable.yaml file with the check configured is shown below.

# yaml-language-server: $schema=https://cloud.dqops.com/dqo-yaml-schema/TableYaml-schema.json
apiVersion: dqo/v1
kind: table
spec:
  columns:
    target_column:
      monitoring_checks:
        monthly:
          datatype:
            monthly_detected_datatype_in_text_changed:
              error: {}
      labels:
      - This is the column that is analyzed for data quality issues
Samples of generated SQL queries for each data source type

Please expand the database engine name section to see the SQL query rendered by a Jinja2 template for the string_datatype_detect data quality sensor.

BigQuery
{% import '/dialects/bigquery.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[-+]?\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[-+]?\d+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[-+]?\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[-+]?\d+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(SAFE_CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM `your-google-project-id`.`<target_schema>`.`<target_table>` AS analyzed_table
ClickHouse
{% import '/dialects/clickhouse.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^[-+]?\d+$') = TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^[+-]?[0-9]*[.,]?[0-9]+$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^[-+]?\d+$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^[+-]?([0-9]*[.])[0-9]+$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 0
                    WHEN TRIM(toString({{ lib.render_target_column('analyzed_table') }})) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^[-+]?\d+$') = TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^[+-]?[0-9]*[.,]?[0-9]+$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         match(toString(analyzed_table."target_column"), '^[-+]?\d+$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^[+-]?([0-9]*[.])[0-9]+$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 0
                    WHEN TRIM(toString(analyzed_table."target_column")) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM "<target_schema>"."<target_table>" AS analyzed_table
Databricks
{% import '/dialects/databricks.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM `<target_schema>`.`<target_table>` AS analyzed_table
DB2
{% import '/dialects/db2.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM(
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM(analyzed_table."target_column") IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM(
    SELECT
        original_table.*
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
DuckDB
{% import '/dialects/duckdb.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM  AS analyzed_table
HANA
{% import '/dialects/hana.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[-+]?\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
                    SUM(
                        CASE
                            WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[-+]?\d+$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[+-]?([0-9]*[.])[0-9]+$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 0
                    WHEN TRIM(TO_VARCHAR({{ lib.render_target_column('analyzed_table') }})) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[-+]?\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
                    SUM(
                        CASE
                            WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[-+]?\d+$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[+-]?([0-9]*[.])[0-9]+$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 0
                    WHEN TRIM(TO_VARCHAR(analyzed_table."target_column")) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM (
    SELECT
        original_table.*
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
MariaDB
{% import '/dialects/mariadb.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?[0-9]*[.,]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?([0-9]*[.])[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                            THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^[-+]?[0-9]+$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE WHEN 
    analyzed_table.`target_column` RLIKE '^[+-]?[0-9]*[.,]?[0-9]+$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL
                        OR 
    analyzed_table.`target_column` RLIKE '^[-+]?[0-9]+$'

                        OR 
    analyzed_table.`target_column` RLIKE '^[+-]?([0-9]*[.])[0-9]+$'

                        OR 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'

                        OR 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$'

                        OR 
    analyzed_table.`target_column` RLIKE '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$'

                        OR 
    analyzed_table.`target_column` RLIKE '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'

                            THEN 0
                    WHEN TRIM(analyzed_table.`target_column`) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM `<target_table>` AS analyzed_table
MySQL
{% import '/dialects/mysql.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?[0-9]*[.,]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]?[T]?[ \t\n\r\f\v]?([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?([.][0-9]{0,12})?[ \t\n\r\f\v]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?([0-9]*[.])[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[\s]?([.][0-9]{0,12})?[\s]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                            THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^[-+]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[    

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[    

]?[T]?[   

]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?([.][0-9]{0,12})?[  

]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^[-+]?[0-9]+$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^[+-]?([0-9]*[.])[0-9]+$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[  

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[\s]?([.][0-9]{0,12})?[\s]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                            THEN 0
                    WHEN TRIM(analyzed_table.`target_column`) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM `<target_table>` AS analyzed_table
Oracle
{% import '/dialects/oracle.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM(
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM(analyzed_table."target_column") IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM(
    SELECT
        original_table.*
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
PostgreSQL
{% import '/dialects/postgresql.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM "your_postgresql_database"."<target_schema>"."<target_table>" AS analyzed_table
Presto
{% import '/dialects/presto.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST(analyzed_table."target_column" AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM (
    SELECT
        original_table.*
    FROM "your_trino_database"."<target_schema>"."<target_table>" original_table
) analyzed_table
QuestDB
{% import '/dialects/questdb.sql.jinja2' as lib with context -%}
WITH data_table AS (
    SELECT
        COUNT({{ lib.render_target_column('analyzed_table') }}) as row_count,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_1,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_2,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_3,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_4,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                    THEN 1
                ELSE 0
            END) AS rows_type_5,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_6,
        SUM(
            CASE
                WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 0
                WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                    THEN 1
                ELSE 0
            END) AS rows_type_7
        {{ lib.render_data_grouping_projections_reference('analyzed_table') }}
        {{ lib.render_time_dimension_projection_reference('analyzed_table') }}
    FROM(
        SELECT
            original_table.*
            {{- lib.render_data_grouping_projections('original_table') }}
            {{- lib.render_time_dimension_projection('original_table') }}
        FROM {{ lib.render_target_table() }} original_table
    ) analyzed_table
    {{- lib.render_where_clause() -}}
    {{- lib.render_group_by() -}}
    {{- lib.render_order_by() -}}
)
SELECT
    CASE
        WHEN row_count = 0 THEN NULL
        WHEN row_count = rows_type_1 THEN 1
        WHEN row_count = rows_type_2 THEN 2
        WHEN row_count = rows_type_3 THEN 3
        WHEN row_count = rows_type_4 THEN 4
        WHEN row_count = rows_type_5 THEN 5
        WHEN row_count = rows_type_6 THEN 6
        WHEN row_count = rows_type_7 THEN 7
        ELSE 8
    END AS actual_value
FROM data_table AS analyzed_table
WITH data_table AS (
    SELECT
        COUNT(analyzed_table."target_column") as row_count,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_1,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_2,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_3,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_4,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                    THEN 1
                ELSE 0
            END) AS rows_type_5,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_6,
        SUM(
            CASE
                WHEN analyzed_table."target_column" IS NULL OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 0
                WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                    THEN 1
                ELSE 0
            END) AS rows_type_7


    FROM(
        SELECT
            original_table.*
        FROM "<target_table>" original_table
    ) analyzed_table)
SELECT
    CASE
        WHEN row_count = 0 THEN NULL
        WHEN row_count = rows_type_1 THEN 1
        WHEN row_count = rows_type_2 THEN 2
        WHEN row_count = rows_type_3 THEN 3
        WHEN row_count = rows_type_4 THEN 4
        WHEN row_count = rows_type_5 THEN 5
        WHEN row_count = rows_type_6 THEN 6
        WHEN row_count = rows_type_7 THEN 7
        ELSE 8
    END AS actual_value
FROM data_table AS analyzed_table
Redshift
{% import '/dialects/redshift.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM "your_redshift_database"."<target_schema>"."<target_table>" AS analyzed_table
Snowflake
{% import '/dialects/snowflake.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[-+]?\\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[-+]?\\d+$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[+-]?([0-9]*[.])[0-9]+$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[-+]?\\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[-+]?\\d+$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[+-]?([0-9]*[.])[0-9]+$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM "your_snowflake_database"."<target_schema>"."<target_table>" AS analyzed_table
Spark
{% import '/dialects/spark.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM `<target_schema>`.`<target_table>` AS analyzed_table
SQL Server
{% import '/dialects/sqlserver.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0-9]%'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN LEN(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <= 10
                        AND(
                            TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                        ) THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                           AND (
                               CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                           ) AND (
                               (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                               ) OR (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                               )
                           ) AND (
                                CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                           )
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 120) IS NOT NULL     --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 121) IS NOT NULL   --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 126) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 127) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 20) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 21) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 25) IS NOT NULL    --  yyyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 26) IS NOT NULL    --  yyyyy-dd-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 27) IS NOT NULL    --  ymm-dd-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 28) IS NOT NULL    --  ymm-yyyy-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 29) IS NOT NULL    --  ydd-mm-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 30) IS NOT NULL    --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 109) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 113) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                    THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN LOWER(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^0-9]%' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%' OR
                         LEN(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <= 10
                             AND(
                                 TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                             )
                         OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                               AND (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                               ) AND (
                                   (
                                       CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   ) OR (
                                       CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                                   )
                               ) AND (
                                    CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                               )
                         OR
                            TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 120) IS NOT NULL               --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 121) IS NOT NULL        --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 126) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 127) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 20) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 21) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 25) IS NOT NULL         --  yyyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 26) IS NOT NULL         --  yyyyy-dd-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 27) IS NOT NULL         --  ymm-dd-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 28) IS NOT NULL         --  ymm-yyyy-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 29) IS NOT NULL         --  ydd-mm-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 30) IS NOT NULL         --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 109) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 113) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                         OR LOWER(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT_BIG(analyzed_table.[target_column]) = 0 THEN NULL
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0-9]%'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN LEN(CAST(analyzed_table.[target_column] AS VARCHAR)) <= 10
                        AND(
                            TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                        ) THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                           AND (
                               CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                           ) AND (
                               (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                               ) OR (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                               )
                           ) AND (
                                CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                           )
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 120) IS NOT NULL     --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 121) IS NOT NULL   --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 126) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 127) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 20) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 21) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 25) IS NOT NULL    --  yyyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 26) IS NOT NULL    --  yyyyy-dd-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 27) IS NOT NULL    --  ymm-dd-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 28) IS NOT NULL    --  ymm-yyyy-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 29) IS NOT NULL    --  ydd-mm-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 30) IS NOT NULL    --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 109) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 113) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                    THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN LOWER(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE WHEN analyzed_table.[target_column] IS NULL OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^0-9]%' OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%' OR
                         LEN(CAST(analyzed_table.[target_column] AS VARCHAR)) <= 10
                             AND(
                                 TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                             )
                         OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                               AND (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                               ) AND (
                                   (
                                       CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   ) OR (
                                       CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                                   )
                               ) AND (
                                    CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                               )
                         OR
                            TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 120) IS NOT NULL               --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 121) IS NOT NULL        --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 126) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 127) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 20) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 21) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 25) IS NOT NULL         --  yyyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 26) IS NOT NULL         --  yyyyy-dd-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 27) IS NOT NULL         --  ymm-dd-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 28) IS NOT NULL         --  ymm-yyyy-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 29) IS NOT NULL         --  ydd-mm-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 30) IS NOT NULL         --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 109) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 113) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                         OR LOWER(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM [your_sql_server_database].[<target_schema>].[<target_table>] AS analyzed_table
Teradata
{% import '/dialects/teradata.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[+-]?[0-9]*[.,]?[0-9]+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[+-]?([0-9]*[.])[0-9]+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[+-]?[0-9]*[.,]?[0-9]+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[+-]?([0-9]*[.])[0-9]+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS VARCHAR(4096))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM "<target_schema>"."<target_table>" AS analyzed_table
Trino
{% import '/dialects/trino.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]{1}[.][0-9]*E[-]?[0-9]+$') OR {# Casting double to varchar in trino results in a scientific notation #}
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
                    SUM(
                        CASE
                            WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]{1}[.][0-9]*E[-]?[0-9]+$') OR 
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
                    SUM(
                        CASE
                            WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST(analyzed_table."target_column" AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
FROM (
    SELECT
        original_table.*
    FROM "your_trino_catalog"."<target_schema>"."<target_table>" original_table
) analyzed_table

Expand the Configure with data grouping section to see additional examples for configuring this data quality checks to use data grouping (GROUP BY).

Configuration with data grouping

Sample configuration with data grouping enabled (YAML) The sample below shows how to configure the data grouping and how it affects the generated SQL query.

# yaml-language-server: $schema=https://cloud.dqops.com/dqo-yaml-schema/TableYaml-schema.json
apiVersion: dqo/v1
kind: table
spec:
  default_grouping_name: group_by_country_and_state
  groupings:
    group_by_country_and_state:
      level_1:
        source: column_value
        column: country
      level_2:
        source: column_value
        column: state
  columns:
    target_column:
      monitoring_checks:
        monthly:
          datatype:
            monthly_detected_datatype_in_text_changed:
              error: {}
      labels:
      - This is the column that is analyzed for data quality issues
    country:
      labels:
      - column used as the first grouping key
    state:
      labels:
      - column used as the second grouping key

Please expand the database engine name section to see the SQL query rendered by a Jinja2 template for the string_datatype_detect sensor.

BigQuery
{% import '/dialects/bigquery.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[-+]?\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[-+]?\d+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[-+]?\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[-+]?\d+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(SAFE_CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.`country` AS grouping_level_1,
    analyzed_table.`state` AS grouping_level_2
FROM `your-google-project-id`.`<target_schema>`.`<target_table>` AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
ClickHouse
{% import '/dialects/clickhouse.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^[-+]?\d+$') = TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^[+-]?[0-9]*[.,]?[0-9]+$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^[-+]?\d+$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^[+-]?([0-9]*[.])[0-9]+$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 0
                    WHEN TRIM(toString({{ lib.render_target_column('analyzed_table') }})) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^[-+]?\d+$') = TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^[+-]?[0-9]*[.,]?[0-9]+$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         match(toString(analyzed_table."target_column"), '^[-+]?\d+$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^[+-]?([0-9]*[.])[0-9]+$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 0
                    WHEN TRIM(toString(analyzed_table."target_column")) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2
FROM "<target_schema>"."<target_table>" AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
Databricks
{% import '/dialects/databricks.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.`country` AS grouping_level_1,
    analyzed_table.`state` AS grouping_level_2
FROM `<target_schema>`.`<target_table>` AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
DB2
{% import '/dialects/db2.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM(
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM(analyzed_table."target_column") IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2
FROM(
    SELECT
        original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
DuckDB
{% import '/dialects/duckdb.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2
FROM  AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
HANA
{% import '/dialects/hana.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[-+]?\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
                    SUM(
                        CASE
                            WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[-+]?\d+$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[+-]?([0-9]*[.])[0-9]+$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 0
                    WHEN TRIM(TO_VARCHAR({{ lib.render_target_column('analyzed_table') }})) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[-+]?\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
                    SUM(
                        CASE
                            WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[-+]?\d+$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[+-]?([0-9]*[.])[0-9]+$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 0
                    WHEN TRIM(TO_VARCHAR(analyzed_table."target_column")) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2
FROM (
    SELECT
        original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
MariaDB
{% import '/dialects/mariadb.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?[0-9]*[.,]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?([0-9]*[.])[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                            THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^[-+]?[0-9]+$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE WHEN 
    analyzed_table.`target_column` RLIKE '^[+-]?[0-9]*[.,]?[0-9]+$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL
                        OR 
    analyzed_table.`target_column` RLIKE '^[-+]?[0-9]+$'

                        OR 
    analyzed_table.`target_column` RLIKE '^[+-]?([0-9]*[.])[0-9]+$'

                        OR 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'

                        OR 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$'

                        OR 
    analyzed_table.`target_column` RLIKE '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$'

                        OR 
    analyzed_table.`target_column` RLIKE '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'

                            THEN 0
                    WHEN TRIM(analyzed_table.`target_column`) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.`country` AS grouping_level_1,
    analyzed_table.`state` AS grouping_level_2
FROM `<target_table>` AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
MySQL
{% import '/dialects/mysql.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?[0-9]*[.,]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]?[T]?[ \t\n\r\f\v]?([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?([.][0-9]{0,12})?[ \t\n\r\f\v]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?([0-9]*[.])[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[\s]?([.][0-9]{0,12})?[\s]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                            THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^[-+]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[    

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[    

]?[T]?[   

]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?([.][0-9]{0,12})?[  

]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^[-+]?[0-9]+$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^[+-]?([0-9]*[.])[0-9]+$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[  

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[\s]?([.][0-9]{0,12})?[\s]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                            THEN 0
                    WHEN TRIM(analyzed_table.`target_column`) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.`country` AS grouping_level_1,
    analyzed_table.`state` AS grouping_level_2
FROM `<target_table>` AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
Oracle
{% import '/dialects/oracle.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM(
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM(analyzed_table."target_column") IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2

FROM(
    SELECT
        original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
PostgreSQL
{% import '/dialects/postgresql.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2
FROM "your_postgresql_database"."<target_schema>"."<target_table>" AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
Presto
{% import '/dialects/presto.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST(analyzed_table."target_column" AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2

FROM (
    SELECT
        original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2
    FROM "your_trino_database"."<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
QuestDB
{% import '/dialects/questdb.sql.jinja2' as lib with context -%}
WITH data_table AS (
    SELECT
        COUNT({{ lib.render_target_column('analyzed_table') }}) as row_count,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_1,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_2,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_3,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_4,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                    THEN 1
                ELSE 0
            END) AS rows_type_5,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_6,
        SUM(
            CASE
                WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 0
                WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                    THEN 1
                ELSE 0
            END) AS rows_type_7
        {{ lib.render_data_grouping_projections_reference('analyzed_table') }}
        {{ lib.render_time_dimension_projection_reference('analyzed_table') }}
    FROM(
        SELECT
            original_table.*
            {{- lib.render_data_grouping_projections('original_table') }}
            {{- lib.render_time_dimension_projection('original_table') }}
        FROM {{ lib.render_target_table() }} original_table
    ) analyzed_table
    {{- lib.render_where_clause() -}}
    {{- lib.render_group_by() -}}
    {{- lib.render_order_by() -}}
)
SELECT
    CASE
        WHEN row_count = 0 THEN NULL
        WHEN row_count = rows_type_1 THEN 1
        WHEN row_count = rows_type_2 THEN 2
        WHEN row_count = rows_type_3 THEN 3
        WHEN row_count = rows_type_4 THEN 4
        WHEN row_count = rows_type_5 THEN 5
        WHEN row_count = rows_type_6 THEN 6
        WHEN row_count = rows_type_7 THEN 7
        ELSE 8
    END AS actual_value
FROM data_table AS analyzed_table
WITH data_table AS (
    SELECT
        COUNT(analyzed_table."target_column") as row_count,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_1,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_2,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_3,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_4,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                    THEN 1
                ELSE 0
            END) AS rows_type_5,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_6,
        SUM(
            CASE
                WHEN analyzed_table."target_column" IS NULL OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 0
                WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                    THEN 1
                ELSE 0
            END) AS rows_type_7
        ,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2

    FROM(
        SELECT
            original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2
        FROM "<target_table>" original_table
    ) analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2)
SELECT
    CASE
        WHEN row_count = 0 THEN NULL
        WHEN row_count = rows_type_1 THEN 1
        WHEN row_count = rows_type_2 THEN 2
        WHEN row_count = rows_type_3 THEN 3
        WHEN row_count = rows_type_4 THEN 4
        WHEN row_count = rows_type_5 THEN 5
        WHEN row_count = rows_type_6 THEN 6
        WHEN row_count = rows_type_7 THEN 7
        ELSE 8
    END AS actual_value
FROM data_table AS analyzed_table
Redshift
{% import '/dialects/redshift.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2
FROM "your_redshift_database"."<target_schema>"."<target_table>" AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
Snowflake
{% import '/dialects/snowflake.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[-+]?\\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[-+]?\\d+$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[+-]?([0-9]*[.])[0-9]+$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[-+]?\\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[-+]?\\d+$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[+-]?([0-9]*[.])[0-9]+$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2
FROM "your_snowflake_database"."<target_schema>"."<target_table>" AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
Spark
{% import '/dialects/spark.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.`country` AS grouping_level_1,
    analyzed_table.`state` AS grouping_level_2
FROM `<target_schema>`.`<target_table>` AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
SQL Server
{% import '/dialects/sqlserver.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0-9]%'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN LEN(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <= 10
                        AND(
                            TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                        ) THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                           AND (
                               CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                           ) AND (
                               (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                               ) OR (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                               )
                           ) AND (
                                CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                           )
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 120) IS NOT NULL     --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 121) IS NOT NULL   --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 126) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 127) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 20) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 21) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 25) IS NOT NULL    --  yyyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 26) IS NOT NULL    --  yyyyy-dd-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 27) IS NOT NULL    --  ymm-dd-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 28) IS NOT NULL    --  ymm-yyyy-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 29) IS NOT NULL    --  ydd-mm-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 30) IS NOT NULL    --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 109) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 113) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                    THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN LOWER(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^0-9]%' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%' OR
                         LEN(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <= 10
                             AND(
                                 TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                             )
                         OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                               AND (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                               ) AND (
                                   (
                                       CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   ) OR (
                                       CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                                   )
                               ) AND (
                                    CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                               )
                         OR
                            TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 120) IS NOT NULL               --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 121) IS NOT NULL        --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 126) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 127) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 20) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 21) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 25) IS NOT NULL         --  yyyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 26) IS NOT NULL         --  yyyyy-dd-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 27) IS NOT NULL         --  ymm-dd-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 28) IS NOT NULL         --  ymm-yyyy-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 29) IS NOT NULL         --  ydd-mm-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 30) IS NOT NULL         --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 109) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 113) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                         OR LOWER(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT_BIG(analyzed_table.[target_column]) = 0 THEN NULL
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0-9]%'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN LEN(CAST(analyzed_table.[target_column] AS VARCHAR)) <= 10
                        AND(
                            TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                        ) THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                           AND (
                               CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                           ) AND (
                               (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                               ) OR (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                               )
                           ) AND (
                                CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                           )
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 120) IS NOT NULL     --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 121) IS NOT NULL   --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 126) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 127) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 20) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 21) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 25) IS NOT NULL    --  yyyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 26) IS NOT NULL    --  yyyyy-dd-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 27) IS NOT NULL    --  ymm-dd-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 28) IS NOT NULL    --  ymm-yyyy-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 29) IS NOT NULL    --  ydd-mm-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 30) IS NOT NULL    --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 109) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 113) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                    THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN LOWER(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE WHEN analyzed_table.[target_column] IS NULL OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^0-9]%' OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%' OR
                         LEN(CAST(analyzed_table.[target_column] AS VARCHAR)) <= 10
                             AND(
                                 TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                             )
                         OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                               AND (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                               ) AND (
                                   (
                                       CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   ) OR (
                                       CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                                   )
                               ) AND (
                                    CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                               )
                         OR
                            TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 120) IS NOT NULL               --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 121) IS NOT NULL        --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 126) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 127) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 20) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 21) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 25) IS NOT NULL         --  yyyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 26) IS NOT NULL         --  yyyyy-dd-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 27) IS NOT NULL         --  ymm-dd-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 28) IS NOT NULL         --  ymm-yyyy-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 29) IS NOT NULL         --  ydd-mm-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 30) IS NOT NULL         --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 109) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 113) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                         OR LOWER(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.[country] AS grouping_level_1,
    analyzed_table.[state] AS grouping_level_2
FROM [your_sql_server_database].[<target_schema>].[<target_table>] AS analyzed_table
GROUP BY analyzed_table.[country], analyzed_table.[state]
ORDER BY level_1, level_2
        , 
Teradata
{% import '/dialects/teradata.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[+-]?[0-9]*[.,]?[0-9]+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[+-]?([0-9]*[.])[0-9]+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[+-]?[0-9]*[.,]?[0-9]+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[+-]?([0-9]*[.])[0-9]+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS VARCHAR(4096))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2
FROM "<target_schema>"."<target_table>" AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2
Trino
{% import '/dialects/trino.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]{1}[.][0-9]*E[-]?[0-9]+$') OR {# Casting double to varchar in trino results in a scientific notation #}
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
                    SUM(
                        CASE
                            WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]{1}[.][0-9]*E[-]?[0-9]+$') OR 
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
                    SUM(
                        CASE
                            WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST(analyzed_table."target_column" AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2

FROM (
    SELECT
        original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2
    FROM "your_trino_catalog"."<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY grouping_level_1, grouping_level_2
ORDER BY grouping_level_1, grouping_level_2

daily partition detected datatype in text changed

Check description

Detects that the data type of texts stored in a text column has changed when compared to an earlier not empty partition. The sensor returns the detected type of column data: 1 - integers, 2 - floats, 3 - dates, 4 - datetimes, 5 - timestamps, 6 - booleans, 7 - strings, 8 - mixed data types. Stores a separate data quality check result for each daily partition.

Data quality check name Friendly name Category Check type Time scale Quality dimension Sensor definition Quality rule Standard
daily_partition_detected_datatype_in_text_changed Detect a change of the data type of all values in a text column datatype partitioned daily Consistency string_datatype_detect value_changed

Command-line examples

Please expand the section below to see the DQOps command-line examples to run or activate the daily partition detected datatype in text changed data quality check.

Managing daily partition detected datatype in text changed check from DQOps shell

Activate this data quality using the check activate CLI command, providing the connection name, table name, check name, and all other filters. Activates the warning rule with the default parameters.

dqo> check activate -c=connection_name -t=schema_name.table_name -col=column_name -ch=daily_partition_detected_datatype_in_text_changed --enable-warning

You can also use patterns to activate the check on all matching tables and columns.

dqo> check activate -c=connection_name -t=schema_prefix*.fact_* -col=column_name -ch=daily_partition_detected_datatype_in_text_changed --enable-warning

Activate this data quality using the check activate CLI command, providing the connection name, table name, check name, and all other filters. Activates the error rule with the default parameters.

dqo> check activate -c=connection_name -t=schema_name.table_name -col=column_name -ch=daily_partition_detected_datatype_in_text_changed --enable-error

You can also use patterns to activate the check on all matching tables and columns.

dqo> check activate -c=connection_name -t=schema_prefix*.fact_* -col=column_name -ch=daily_partition_detected_datatype_in_text_changed --enable-error

Run this data quality check using the check run CLI command by providing the check name and all other targeting filters. The following example shows how to run the daily_partition_detected_datatype_in_text_changed check on all tables and columns on a single data source.

dqo> check run -c=data_source_name -ch=daily_partition_detected_datatype_in_text_changed

It is also possible to run this check on a specific connection and table. In order to do this, use the connection name and the full table name parameters.

dqo> check run -c=connection_name -t=schema_name.table_name -ch=daily_partition_detected_datatype_in_text_changed

You can also run this check on all tables (and columns) on which the daily_partition_detected_datatype_in_text_changed check is enabled using patterns to find tables.

dqo> check run -c=connection_name -t=schema_prefix*.fact_* -col=column_name_* -ch=daily_partition_detected_datatype_in_text_changed

YAML configuration

The sample schema_name.table_name.dqotable.yaml file with the check configured is shown below.

# yaml-language-server: $schema=https://cloud.dqops.com/dqo-yaml-schema/TableYaml-schema.json
apiVersion: dqo/v1
kind: table
spec:
  timestamp_columns:
    partition_by_column: date_column
  incremental_time_window:
    daily_partitioning_recent_days: 7
    monthly_partitioning_recent_months: 1
  columns:
    target_column:
      partitioned_checks:
        daily:
          datatype:
            daily_partition_detected_datatype_in_text_changed:
              error: {}
      labels:
      - This is the column that is analyzed for data quality issues
    date_column:
      labels:
      - "date or datetime column used as a daily or monthly partitioning key, dates\
        \ (and times) are truncated to a day or a month by the sensor's query for\
        \ partitioned checks"
Samples of generated SQL queries for each data source type

Please expand the database engine name section to see the SQL query rendered by a Jinja2 template for the string_datatype_detect data quality sensor.

BigQuery
{% import '/dialects/bigquery.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[-+]?\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[-+]?\d+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[-+]?\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[-+]?\d+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(SAFE_CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    CAST(analyzed_table.`date_column` AS DATE) AS time_period,
    TIMESTAMP(CAST(analyzed_table.`date_column` AS DATE)) AS time_period_utc
FROM `your-google-project-id`.`<target_schema>`.`<target_table>` AS analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
ClickHouse
{% import '/dialects/clickhouse.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^[-+]?\d+$') = TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^[+-]?[0-9]*[.,]?[0-9]+$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^[-+]?\d+$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^[+-]?([0-9]*[.])[0-9]+$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 0
                    WHEN TRIM(toString({{ lib.render_target_column('analyzed_table') }})) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^[-+]?\d+$') = TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^[+-]?[0-9]*[.,]?[0-9]+$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         match(toString(analyzed_table."target_column"), '^[-+]?\d+$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^[+-]?([0-9]*[.])[0-9]+$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 0
                    WHEN TRIM(toString(analyzed_table."target_column")) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    CAST(analyzed_table."date_column" AS DATE) AS time_period,
    toDateTime64(CAST(analyzed_table."date_column" AS DATE), 3) AS time_period_utc
FROM "<target_schema>"."<target_table>" AS analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
Databricks
{% import '/dialects/databricks.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    CAST(analyzed_table.`date_column` AS DATE) AS time_period,
    TIMESTAMP(CAST(analyzed_table.`date_column` AS DATE)) AS time_period_utc
FROM `<target_schema>`.`<target_table>` AS analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
DB2
{% import '/dialects/db2.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM(
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM(analyzed_table."target_column") IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    time_period,
    time_period_utc
FROM(
    SELECT
        original_table.*,
    CAST(original_table."date_column" AS DATE) AS time_period,
    TIMESTAMP(CAST(original_table."date_column" AS DATE)) AS time_period_utc
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
DuckDB
{% import '/dialects/duckdb.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    CAST(analyzed_table."date_column" AS date) AS time_period,
    CAST((CAST(analyzed_table."date_column" AS date)) AS TIMESTAMP WITH TIME ZONE) AS time_period_utc
FROM  AS analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
HANA
{% import '/dialects/hana.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[-+]?\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
                    SUM(
                        CASE
                            WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[-+]?\d+$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[+-]?([0-9]*[.])[0-9]+$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 0
                    WHEN TRIM(TO_VARCHAR({{ lib.render_target_column('analyzed_table') }})) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[-+]?\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
                    SUM(
                        CASE
                            WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[-+]?\d+$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[+-]?([0-9]*[.])[0-9]+$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 0
                    WHEN TRIM(TO_VARCHAR(analyzed_table."target_column")) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    time_period,
    time_period_utc
FROM (
    SELECT
        original_table.*,
    CAST(original_table."date_column" AS DATE) AS time_period,
    TO_TIMESTAMP(CAST(original_table."date_column" AS DATE)) AS time_period_utc
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
MariaDB
{% import '/dialects/mariadb.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?[0-9]*[.,]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?([0-9]*[.])[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                            THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^[-+]?[0-9]+$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE WHEN 
    analyzed_table.`target_column` RLIKE '^[+-]?[0-9]*[.,]?[0-9]+$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL
                        OR 
    analyzed_table.`target_column` RLIKE '^[-+]?[0-9]+$'

                        OR 
    analyzed_table.`target_column` RLIKE '^[+-]?([0-9]*[.])[0-9]+$'

                        OR 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'

                        OR 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$'

                        OR 
    analyzed_table.`target_column` RLIKE '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$'

                        OR 
    analyzed_table.`target_column` RLIKE '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'

                            THEN 0
                    WHEN TRIM(analyzed_table.`target_column`) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    DATE_FORMAT(analyzed_table.`date_column`, '%Y-%m-%d 00:00:00') AS time_period,
    FROM_UNIXTIME(UNIX_TIMESTAMP(DATE_FORMAT(analyzed_table.`date_column`, '%Y-%m-%d 00:00:00'))) AS time_period_utc
FROM `<target_table>` AS analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
MySQL
{% import '/dialects/mysql.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?[0-9]*[.,]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]?[T]?[ \t\n\r\f\v]?([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?([.][0-9]{0,12})?[ \t\n\r\f\v]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?([0-9]*[.])[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[\s]?([.][0-9]{0,12})?[\s]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                            THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^[-+]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[    

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[    

]?[T]?[   

]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?([.][0-9]{0,12})?[  

]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^[-+]?[0-9]+$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^[+-]?([0-9]*[.])[0-9]+$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[  

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[\s]?([.][0-9]{0,12})?[\s]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                            THEN 0
                    WHEN TRIM(analyzed_table.`target_column`) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    DATE_FORMAT(analyzed_table.`date_column`, '%Y-%m-%d 00:00:00') AS time_period,
    FROM_UNIXTIME(UNIX_TIMESTAMP(DATE_FORMAT(analyzed_table.`date_column`, '%Y-%m-%d 00:00:00'))) AS time_period_utc
FROM `<target_table>` AS analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
Oracle
{% import '/dialects/oracle.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM(
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM(analyzed_table."target_column") IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    time_period,
    time_period_utc
FROM(
    SELECT
        original_table.*,
    TRUNC(CAST(original_table."date_column" AS DATE)) AS time_period,
    CAST(TRUNC(CAST(original_table."date_column" AS DATE)) AS TIMESTAMP WITH TIME ZONE) AS time_period_utc
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
PostgreSQL
{% import '/dialects/postgresql.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    CAST(analyzed_table."date_column" AS date) AS time_period,
    CAST((CAST(analyzed_table."date_column" AS date)) AS TIMESTAMP WITH TIME ZONE) AS time_period_utc
FROM "your_postgresql_database"."<target_schema>"."<target_table>" AS analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
Presto
{% import '/dialects/presto.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST(analyzed_table."target_column" AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    time_period,
    time_period_utc
FROM (
    SELECT
        original_table.*,
    CAST(original_table."date_column" AS date) AS time_period,
    CAST(CAST(original_table."date_column" AS date) AS TIMESTAMP) AS time_period_utc
    FROM "your_trino_database"."<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
QuestDB
{% import '/dialects/questdb.sql.jinja2' as lib with context -%}
WITH data_table AS (
    SELECT
        COUNT({{ lib.render_target_column('analyzed_table') }}) as row_count,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_1,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_2,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_3,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_4,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                    THEN 1
                ELSE 0
            END) AS rows_type_5,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_6,
        SUM(
            CASE
                WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 0
                WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                    THEN 1
                ELSE 0
            END) AS rows_type_7
        {{ lib.render_data_grouping_projections_reference('analyzed_table') }}
        {{ lib.render_time_dimension_projection_reference('analyzed_table') }}
    FROM(
        SELECT
            original_table.*
            {{- lib.render_data_grouping_projections('original_table') }}
            {{- lib.render_time_dimension_projection('original_table') }}
        FROM {{ lib.render_target_table() }} original_table
    ) analyzed_table
    {{- lib.render_where_clause() -}}
    {{- lib.render_group_by() -}}
    {{- lib.render_order_by() -}}
)
SELECT
    CASE
        WHEN row_count = 0 THEN NULL
        WHEN row_count = rows_type_1 THEN 1
        WHEN row_count = rows_type_2 THEN 2
        WHEN row_count = rows_type_3 THEN 3
        WHEN row_count = rows_type_4 THEN 4
        WHEN row_count = rows_type_5 THEN 5
        WHEN row_count = rows_type_6 THEN 6
        WHEN row_count = rows_type_7 THEN 7
        ELSE 8
    END AS actual_value
FROM data_table AS analyzed_table
WITH data_table AS (
    SELECT
        COUNT(analyzed_table."target_column") as row_count,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_1,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_2,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_3,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_4,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                    THEN 1
                ELSE 0
            END) AS rows_type_5,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_6,
        SUM(
            CASE
                WHEN analyzed_table."target_column" IS NULL OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 0
                WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                    THEN 1
                ELSE 0
            END) AS rows_type_7

        ,
    time_period,
    time_period_utc
    FROM(
        SELECT
            original_table.*,
    CAST(DATE_TRUNC('day', original_table."date_column") AS DATE) AS time_period,
    CAST((CAST(DATE_TRUNC('day', original_table."date_column") AS DATE)) AS TIMESTAMP WITH TIME ZONE) AS time_period_utc
        FROM "<target_table>" original_table
    ) analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc)
SELECT
    CASE
        WHEN row_count = 0 THEN NULL
        WHEN row_count = rows_type_1 THEN 1
        WHEN row_count = rows_type_2 THEN 2
        WHEN row_count = rows_type_3 THEN 3
        WHEN row_count = rows_type_4 THEN 4
        WHEN row_count = rows_type_5 THEN 5
        WHEN row_count = rows_type_6 THEN 6
        WHEN row_count = rows_type_7 THEN 7
        ELSE 8
    END AS actual_value
FROM data_table AS analyzed_table
Redshift
{% import '/dialects/redshift.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    CAST(analyzed_table."date_column" AS date) AS time_period,
    CAST((CAST(analyzed_table."date_column" AS date)) AS TIMESTAMP WITH TIME ZONE) AS time_period_utc
FROM "your_redshift_database"."<target_schema>"."<target_table>" AS analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
Snowflake
{% import '/dialects/snowflake.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[-+]?\\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[-+]?\\d+$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[+-]?([0-9]*[.])[0-9]+$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[-+]?\\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[-+]?\\d+$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[+-]?([0-9]*[.])[0-9]+$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    CAST(analyzed_table."date_column" AS date) AS time_period,
    TO_TIMESTAMP(CAST(analyzed_table."date_column" AS date)) AS time_period_utc
FROM "your_snowflake_database"."<target_schema>"."<target_table>" AS analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
Spark
{% import '/dialects/spark.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    CAST(analyzed_table.`date_column` AS DATE) AS time_period,
    TIMESTAMP(CAST(analyzed_table.`date_column` AS DATE)) AS time_period_utc
FROM `<target_schema>`.`<target_table>` AS analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
SQL Server
{% import '/dialects/sqlserver.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0-9]%'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN LEN(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <= 10
                        AND(
                            TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                        ) THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                           AND (
                               CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                           ) AND (
                               (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                               ) OR (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                               )
                           ) AND (
                                CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                           )
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 120) IS NOT NULL     --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 121) IS NOT NULL   --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 126) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 127) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 20) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 21) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 25) IS NOT NULL    --  yyyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 26) IS NOT NULL    --  yyyyy-dd-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 27) IS NOT NULL    --  ymm-dd-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 28) IS NOT NULL    --  ymm-yyyy-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 29) IS NOT NULL    --  ydd-mm-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 30) IS NOT NULL    --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 109) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 113) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                    THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN LOWER(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^0-9]%' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%' OR
                         LEN(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <= 10
                             AND(
                                 TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                             )
                         OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                               AND (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                               ) AND (
                                   (
                                       CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   ) OR (
                                       CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                                   )
                               ) AND (
                                    CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                               )
                         OR
                            TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 120) IS NOT NULL               --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 121) IS NOT NULL        --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 126) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 127) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 20) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 21) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 25) IS NOT NULL         --  yyyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 26) IS NOT NULL         --  yyyyy-dd-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 27) IS NOT NULL         --  ymm-dd-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 28) IS NOT NULL         --  ymm-yyyy-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 29) IS NOT NULL         --  ydd-mm-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 30) IS NOT NULL         --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 109) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 113) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                         OR LOWER(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT_BIG(analyzed_table.[target_column]) = 0 THEN NULL
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0-9]%'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN LEN(CAST(analyzed_table.[target_column] AS VARCHAR)) <= 10
                        AND(
                            TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                        ) THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                           AND (
                               CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                           ) AND (
                               (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                               ) OR (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                               )
                           ) AND (
                                CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                           )
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 120) IS NOT NULL     --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 121) IS NOT NULL   --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 126) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 127) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 20) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 21) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 25) IS NOT NULL    --  yyyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 26) IS NOT NULL    --  yyyyy-dd-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 27) IS NOT NULL    --  ymm-dd-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 28) IS NOT NULL    --  ymm-yyyy-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 29) IS NOT NULL    --  ydd-mm-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 30) IS NOT NULL    --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 109) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 113) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                    THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN LOWER(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE WHEN analyzed_table.[target_column] IS NULL OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^0-9]%' OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%' OR
                         LEN(CAST(analyzed_table.[target_column] AS VARCHAR)) <= 10
                             AND(
                                 TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                             )
                         OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                               AND (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                               ) AND (
                                   (
                                       CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   ) OR (
                                       CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                                   )
                               ) AND (
                                    CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                               )
                         OR
                            TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 120) IS NOT NULL               --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 121) IS NOT NULL        --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 126) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 127) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 20) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 21) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 25) IS NOT NULL         --  yyyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 26) IS NOT NULL         --  yyyyy-dd-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 27) IS NOT NULL         --  ymm-dd-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 28) IS NOT NULL         --  ymm-yyyy-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 29) IS NOT NULL         --  ydd-mm-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 30) IS NOT NULL         --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 109) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 113) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                         OR LOWER(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    CAST(analyzed_table.[date_column] AS date) AS time_period,
    CAST((CAST(analyzed_table.[date_column] AS date)) AS DATETIME) AS time_period_utc
FROM [your_sql_server_database].[<target_schema>].[<target_table>] AS analyzed_table
GROUP BY CAST(analyzed_table.[date_column] AS date), CAST(analyzed_table.[date_column] AS date)
ORDER BY CAST(analyzed_table.[date_column] AS date)
Teradata
{% import '/dialects/teradata.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[+-]?[0-9]*[.,]?[0-9]+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[+-]?([0-9]*[.])[0-9]+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[+-]?[0-9]*[.,]?[0-9]+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[+-]?([0-9]*[.])[0-9]+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS VARCHAR(4096))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    CAST(analyzed_table."date_column" AS DATE) AS time_period,
    CAST(CAST(analyzed_table."date_column" AS DATE) AS TIMESTAMP) AS time_period_utc
FROM "<target_schema>"."<target_table>" AS analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
Trino
{% import '/dialects/trino.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]{1}[.][0-9]*E[-]?[0-9]+$') OR {# Casting double to varchar in trino results in a scientific notation #}
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
                    SUM(
                        CASE
                            WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]{1}[.][0-9]*E[-]?[0-9]+$') OR 
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
                    SUM(
                        CASE
                            WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST(analyzed_table."target_column" AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    time_period,
    time_period_utc
FROM (
    SELECT
        original_table.*,
    CAST(original_table."date_column" AS date) AS time_period,
    CAST(CAST(original_table."date_column" AS date) AS TIMESTAMP) AS time_period_utc
    FROM "your_trino_catalog"."<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc

Expand the Configure with data grouping section to see additional examples for configuring this data quality checks to use data grouping (GROUP BY).

Configuration with data grouping

Sample configuration with data grouping enabled (YAML) The sample below shows how to configure the data grouping and how it affects the generated SQL query.

# yaml-language-server: $schema=https://cloud.dqops.com/dqo-yaml-schema/TableYaml-schema.json
apiVersion: dqo/v1
kind: table
spec:
  timestamp_columns:
    partition_by_column: date_column
  incremental_time_window:
    daily_partitioning_recent_days: 7
    monthly_partitioning_recent_months: 1
  default_grouping_name: group_by_country_and_state
  groupings:
    group_by_country_and_state:
      level_1:
        source: column_value
        column: country
      level_2:
        source: column_value
        column: state
  columns:
    target_column:
      partitioned_checks:
        daily:
          datatype:
            daily_partition_detected_datatype_in_text_changed:
              error: {}
      labels:
      - This is the column that is analyzed for data quality issues
    date_column:
      labels:
      - "date or datetime column used as a daily or monthly partitioning key, dates\
        \ (and times) are truncated to a day or a month by the sensor's query for\
        \ partitioned checks"
    country:
      labels:
      - column used as the first grouping key
    state:
      labels:
      - column used as the second grouping key

Please expand the database engine name section to see the SQL query rendered by a Jinja2 template for the string_datatype_detect sensor.

BigQuery
{% import '/dialects/bigquery.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[-+]?\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[-+]?\d+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[-+]?\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[-+]?\d+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(SAFE_CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.`country` AS grouping_level_1,
    analyzed_table.`state` AS grouping_level_2,
    CAST(analyzed_table.`date_column` AS DATE) AS time_period,
    TIMESTAMP(CAST(analyzed_table.`date_column` AS DATE)) AS time_period_utc
FROM `your-google-project-id`.`<target_schema>`.`<target_table>` AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ClickHouse
{% import '/dialects/clickhouse.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^[-+]?\d+$') = TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^[+-]?[0-9]*[.,]?[0-9]+$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^[-+]?\d+$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^[+-]?([0-9]*[.])[0-9]+$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 0
                    WHEN TRIM(toString({{ lib.render_target_column('analyzed_table') }})) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^[-+]?\d+$') = TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^[+-]?[0-9]*[.,]?[0-9]+$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         match(toString(analyzed_table."target_column"), '^[-+]?\d+$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^[+-]?([0-9]*[.])[0-9]+$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 0
                    WHEN TRIM(toString(analyzed_table."target_column")) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2,
    CAST(analyzed_table."date_column" AS DATE) AS time_period,
    toDateTime64(CAST(analyzed_table."date_column" AS DATE), 3) AS time_period_utc
FROM "<target_schema>"."<target_table>" AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
Databricks
{% import '/dialects/databricks.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.`country` AS grouping_level_1,
    analyzed_table.`state` AS grouping_level_2,
    CAST(analyzed_table.`date_column` AS DATE) AS time_period,
    TIMESTAMP(CAST(analyzed_table.`date_column` AS DATE)) AS time_period_utc
FROM `<target_schema>`.`<target_table>` AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
DB2
{% import '/dialects/db2.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM(
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM(analyzed_table."target_column") IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2,
    time_period,
    time_period_utc
FROM(
    SELECT
        original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2,
    CAST(original_table."date_column" AS DATE) AS time_period,
    TIMESTAMP(CAST(original_table."date_column" AS DATE)) AS time_period_utc
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
DuckDB
{% import '/dialects/duckdb.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2,
    CAST(analyzed_table."date_column" AS date) AS time_period,
    CAST((CAST(analyzed_table."date_column" AS date)) AS TIMESTAMP WITH TIME ZONE) AS time_period_utc
FROM  AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
HANA
{% import '/dialects/hana.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[-+]?\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
                    SUM(
                        CASE
                            WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[-+]?\d+$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[+-]?([0-9]*[.])[0-9]+$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 0
                    WHEN TRIM(TO_VARCHAR({{ lib.render_target_column('analyzed_table') }})) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[-+]?\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
                    SUM(
                        CASE
                            WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[-+]?\d+$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[+-]?([0-9]*[.])[0-9]+$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 0
                    WHEN TRIM(TO_VARCHAR(analyzed_table."target_column")) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2,
    time_period,
    time_period_utc
FROM (
    SELECT
        original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2,
    CAST(original_table."date_column" AS DATE) AS time_period,
    TO_TIMESTAMP(CAST(original_table."date_column" AS DATE)) AS time_period_utc
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
MariaDB
{% import '/dialects/mariadb.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?[0-9]*[.,]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?([0-9]*[.])[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                            THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^[-+]?[0-9]+$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE WHEN 
    analyzed_table.`target_column` RLIKE '^[+-]?[0-9]*[.,]?[0-9]+$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL
                        OR 
    analyzed_table.`target_column` RLIKE '^[-+]?[0-9]+$'

                        OR 
    analyzed_table.`target_column` RLIKE '^[+-]?([0-9]*[.])[0-9]+$'

                        OR 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'

                        OR 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$'

                        OR 
    analyzed_table.`target_column` RLIKE '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$'

                        OR 
    analyzed_table.`target_column` RLIKE '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'

                            THEN 0
                    WHEN TRIM(analyzed_table.`target_column`) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.`country` AS grouping_level_1,
    analyzed_table.`state` AS grouping_level_2,
    DATE_FORMAT(analyzed_table.`date_column`, '%Y-%m-%d 00:00:00') AS time_period,
    FROM_UNIXTIME(UNIX_TIMESTAMP(DATE_FORMAT(analyzed_table.`date_column`, '%Y-%m-%d 00:00:00'))) AS time_period_utc
FROM `<target_table>` AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
MySQL
{% import '/dialects/mysql.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?[0-9]*[.,]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]?[T]?[ \t\n\r\f\v]?([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?([.][0-9]{0,12})?[ \t\n\r\f\v]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?([0-9]*[.])[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[\s]?([.][0-9]{0,12})?[\s]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                            THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^[-+]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[    

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[    

]?[T]?[   

]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?([.][0-9]{0,12})?[  

]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^[-+]?[0-9]+$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^[+-]?([0-9]*[.])[0-9]+$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[  

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[\s]?([.][0-9]{0,12})?[\s]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                            THEN 0
                    WHEN TRIM(analyzed_table.`target_column`) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.`country` AS grouping_level_1,
    analyzed_table.`state` AS grouping_level_2,
    DATE_FORMAT(analyzed_table.`date_column`, '%Y-%m-%d 00:00:00') AS time_period,
    FROM_UNIXTIME(UNIX_TIMESTAMP(DATE_FORMAT(analyzed_table.`date_column`, '%Y-%m-%d 00:00:00'))) AS time_period_utc
FROM `<target_table>` AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
Oracle
{% import '/dialects/oracle.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM(
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM(analyzed_table."target_column") IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2
,
    time_period,
    time_period_utc
FROM(
    SELECT
        original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2,
    TRUNC(CAST(original_table."date_column" AS DATE)) AS time_period,
    CAST(TRUNC(CAST(original_table."date_column" AS DATE)) AS TIMESTAMP WITH TIME ZONE) AS time_period_utc
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
PostgreSQL
{% import '/dialects/postgresql.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2,
    CAST(analyzed_table."date_column" AS date) AS time_period,
    CAST((CAST(analyzed_table."date_column" AS date)) AS TIMESTAMP WITH TIME ZONE) AS time_period_utc
FROM "your_postgresql_database"."<target_schema>"."<target_table>" AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
Presto
{% import '/dialects/presto.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST(analyzed_table."target_column" AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2
,
    time_period,
    time_period_utc
FROM (
    SELECT
        original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2,
    CAST(original_table."date_column" AS date) AS time_period,
    CAST(CAST(original_table."date_column" AS date) AS TIMESTAMP) AS time_period_utc
    FROM "your_trino_database"."<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
QuestDB
{% import '/dialects/questdb.sql.jinja2' as lib with context -%}
WITH data_table AS (
    SELECT
        COUNT({{ lib.render_target_column('analyzed_table') }}) as row_count,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_1,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_2,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_3,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_4,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                    THEN 1
                ELSE 0
            END) AS rows_type_5,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_6,
        SUM(
            CASE
                WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 0
                WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                    THEN 1
                ELSE 0
            END) AS rows_type_7
        {{ lib.render_data_grouping_projections_reference('analyzed_table') }}
        {{ lib.render_time_dimension_projection_reference('analyzed_table') }}
    FROM(
        SELECT
            original_table.*
            {{- lib.render_data_grouping_projections('original_table') }}
            {{- lib.render_time_dimension_projection('original_table') }}
        FROM {{ lib.render_target_table() }} original_table
    ) analyzed_table
    {{- lib.render_where_clause() -}}
    {{- lib.render_group_by() -}}
    {{- lib.render_order_by() -}}
)
SELECT
    CASE
        WHEN row_count = 0 THEN NULL
        WHEN row_count = rows_type_1 THEN 1
        WHEN row_count = rows_type_2 THEN 2
        WHEN row_count = rows_type_3 THEN 3
        WHEN row_count = rows_type_4 THEN 4
        WHEN row_count = rows_type_5 THEN 5
        WHEN row_count = rows_type_6 THEN 6
        WHEN row_count = rows_type_7 THEN 7
        ELSE 8
    END AS actual_value
FROM data_table AS analyzed_table
WITH data_table AS (
    SELECT
        COUNT(analyzed_table."target_column") as row_count,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_1,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_2,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_3,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_4,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                    THEN 1
                ELSE 0
            END) AS rows_type_5,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_6,
        SUM(
            CASE
                WHEN analyzed_table."target_column" IS NULL OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 0
                WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                    THEN 1
                ELSE 0
            END) AS rows_type_7
        ,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2
        ,
    time_period,
    time_period_utc
    FROM(
        SELECT
            original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2,
    CAST(DATE_TRUNC('day', original_table."date_column") AS DATE) AS time_period,
    CAST((CAST(DATE_TRUNC('day', original_table."date_column") AS DATE)) AS TIMESTAMP WITH TIME ZONE) AS time_period_utc
        FROM "<target_table>" original_table
    ) analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc)
SELECT
    CASE
        WHEN row_count = 0 THEN NULL
        WHEN row_count = rows_type_1 THEN 1
        WHEN row_count = rows_type_2 THEN 2
        WHEN row_count = rows_type_3 THEN 3
        WHEN row_count = rows_type_4 THEN 4
        WHEN row_count = rows_type_5 THEN 5
        WHEN row_count = rows_type_6 THEN 6
        WHEN row_count = rows_type_7 THEN 7
        ELSE 8
    END AS actual_value
FROM data_table AS analyzed_table
Redshift
{% import '/dialects/redshift.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2,
    CAST(analyzed_table."date_column" AS date) AS time_period,
    CAST((CAST(analyzed_table."date_column" AS date)) AS TIMESTAMP WITH TIME ZONE) AS time_period_utc
FROM "your_redshift_database"."<target_schema>"."<target_table>" AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
Snowflake
{% import '/dialects/snowflake.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[-+]?\\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[-+]?\\d+$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[+-]?([0-9]*[.])[0-9]+$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[-+]?\\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[-+]?\\d+$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[+-]?([0-9]*[.])[0-9]+$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2,
    CAST(analyzed_table."date_column" AS date) AS time_period,
    TO_TIMESTAMP(CAST(analyzed_table."date_column" AS date)) AS time_period_utc
FROM "your_snowflake_database"."<target_schema>"."<target_table>" AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
Spark
{% import '/dialects/spark.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.`country` AS grouping_level_1,
    analyzed_table.`state` AS grouping_level_2,
    CAST(analyzed_table.`date_column` AS DATE) AS time_period,
    TIMESTAMP(CAST(analyzed_table.`date_column` AS DATE)) AS time_period_utc
FROM `<target_schema>`.`<target_table>` AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
SQL Server
{% import '/dialects/sqlserver.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0-9]%'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN LEN(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <= 10
                        AND(
                            TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                        ) THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                           AND (
                               CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                           ) AND (
                               (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                               ) OR (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                               )
                           ) AND (
                                CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                           )
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 120) IS NOT NULL     --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 121) IS NOT NULL   --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 126) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 127) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 20) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 21) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 25) IS NOT NULL    --  yyyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 26) IS NOT NULL    --  yyyyy-dd-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 27) IS NOT NULL    --  ymm-dd-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 28) IS NOT NULL    --  ymm-yyyy-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 29) IS NOT NULL    --  ydd-mm-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 30) IS NOT NULL    --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 109) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 113) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                    THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN LOWER(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^0-9]%' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%' OR
                         LEN(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <= 10
                             AND(
                                 TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                             )
                         OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                               AND (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                               ) AND (
                                   (
                                       CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   ) OR (
                                       CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                                   )
                               ) AND (
                                    CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                               )
                         OR
                            TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 120) IS NOT NULL               --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 121) IS NOT NULL        --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 126) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 127) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 20) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 21) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 25) IS NOT NULL         --  yyyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 26) IS NOT NULL         --  yyyyy-dd-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 27) IS NOT NULL         --  ymm-dd-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 28) IS NOT NULL         --  ymm-yyyy-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 29) IS NOT NULL         --  ydd-mm-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 30) IS NOT NULL         --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 109) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 113) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                         OR LOWER(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT_BIG(analyzed_table.[target_column]) = 0 THEN NULL
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0-9]%'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN LEN(CAST(analyzed_table.[target_column] AS VARCHAR)) <= 10
                        AND(
                            TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                        ) THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                           AND (
                               CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                           ) AND (
                               (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                               ) OR (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                               )
                           ) AND (
                                CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                           )
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 120) IS NOT NULL     --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 121) IS NOT NULL   --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 126) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 127) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 20) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 21) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 25) IS NOT NULL    --  yyyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 26) IS NOT NULL    --  yyyyy-dd-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 27) IS NOT NULL    --  ymm-dd-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 28) IS NOT NULL    --  ymm-yyyy-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 29) IS NOT NULL    --  ydd-mm-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 30) IS NOT NULL    --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 109) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 113) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                    THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN LOWER(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE WHEN analyzed_table.[target_column] IS NULL OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^0-9]%' OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%' OR
                         LEN(CAST(analyzed_table.[target_column] AS VARCHAR)) <= 10
                             AND(
                                 TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                             )
                         OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                               AND (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                               ) AND (
                                   (
                                       CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   ) OR (
                                       CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                                   )
                               ) AND (
                                    CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                               )
                         OR
                            TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 120) IS NOT NULL               --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 121) IS NOT NULL        --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 126) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 127) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 20) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 21) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 25) IS NOT NULL         --  yyyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 26) IS NOT NULL         --  yyyyy-dd-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 27) IS NOT NULL         --  ymm-dd-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 28) IS NOT NULL         --  ymm-yyyy-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 29) IS NOT NULL         --  ydd-mm-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 30) IS NOT NULL         --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 109) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 113) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                         OR LOWER(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.[country] AS grouping_level_1,
    analyzed_table.[state] AS grouping_level_2,
    CAST(analyzed_table.[date_column] AS date) AS time_period,
    CAST((CAST(analyzed_table.[date_column] AS date)) AS DATETIME) AS time_period_utc
FROM [your_sql_server_database].[<target_schema>].[<target_table>] AS analyzed_table
GROUP BY analyzed_table.[country], analyzed_table.[state], CAST(analyzed_table.[date_column] AS date), CAST(analyzed_table.[date_column] AS date)
ORDER BY level_1, level_2CAST(analyzed_table.[date_column] AS date)
Teradata
{% import '/dialects/teradata.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[+-]?[0-9]*[.,]?[0-9]+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[+-]?([0-9]*[.])[0-9]+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[+-]?[0-9]*[.,]?[0-9]+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[+-]?([0-9]*[.])[0-9]+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS VARCHAR(4096))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2,
    CAST(analyzed_table."date_column" AS DATE) AS time_period,
    CAST(CAST(analyzed_table."date_column" AS DATE) AS TIMESTAMP) AS time_period_utc
FROM "<target_schema>"."<target_table>" AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
Trino
{% import '/dialects/trino.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]{1}[.][0-9]*E[-]?[0-9]+$') OR {# Casting double to varchar in trino results in a scientific notation #}
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
                    SUM(
                        CASE
                            WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]{1}[.][0-9]*E[-]?[0-9]+$') OR 
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
                    SUM(
                        CASE
                            WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST(analyzed_table."target_column" AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2
,
    time_period,
    time_period_utc
FROM (
    SELECT
        original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2,
    CAST(original_table."date_column" AS date) AS time_period,
    CAST(CAST(original_table."date_column" AS date) AS TIMESTAMP) AS time_period_utc
    FROM "your_trino_catalog"."<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc

monthly partition detected datatype in text changed

Check description

Detects that the data type of texts stored in a text column has changed when compared to an earlier not empty partition. The sensor returns the detected type of column data: 1 - integers, 2 - floats, 3 - dates, 4 - datetimes, 5 - timestamps, 6 - booleans, 7 - strings, 8 - mixed data types. Stores a separate data quality check result for each monthly partition.

Data quality check name Friendly name Category Check type Time scale Quality dimension Sensor definition Quality rule Standard
monthly_partition_detected_datatype_in_text_changed Detect a change of the data type of all values in a text column datatype partitioned monthly Consistency string_datatype_detect value_changed

Command-line examples

Please expand the section below to see the DQOps command-line examples to run or activate the monthly partition detected datatype in text changed data quality check.

Managing monthly partition detected datatype in text changed check from DQOps shell

Activate this data quality using the check activate CLI command, providing the connection name, table name, check name, and all other filters. Activates the warning rule with the default parameters.

dqo> check activate -c=connection_name -t=schema_name.table_name -col=column_name -ch=monthly_partition_detected_datatype_in_text_changed --enable-warning

You can also use patterns to activate the check on all matching tables and columns.

dqo> check activate -c=connection_name -t=schema_prefix*.fact_* -col=column_name -ch=monthly_partition_detected_datatype_in_text_changed --enable-warning

Activate this data quality using the check activate CLI command, providing the connection name, table name, check name, and all other filters. Activates the error rule with the default parameters.

dqo> check activate -c=connection_name -t=schema_name.table_name -col=column_name -ch=monthly_partition_detected_datatype_in_text_changed --enable-error

You can also use patterns to activate the check on all matching tables and columns.

dqo> check activate -c=connection_name -t=schema_prefix*.fact_* -col=column_name -ch=monthly_partition_detected_datatype_in_text_changed --enable-error

Run this data quality check using the check run CLI command by providing the check name and all other targeting filters. The following example shows how to run the monthly_partition_detected_datatype_in_text_changed check on all tables and columns on a single data source.

dqo> check run -c=data_source_name -ch=monthly_partition_detected_datatype_in_text_changed

It is also possible to run this check on a specific connection and table. In order to do this, use the connection name and the full table name parameters.

dqo> check run -c=connection_name -t=schema_name.table_name -ch=monthly_partition_detected_datatype_in_text_changed

You can also run this check on all tables (and columns) on which the monthly_partition_detected_datatype_in_text_changed check is enabled using patterns to find tables.

dqo> check run -c=connection_name -t=schema_prefix*.fact_* -col=column_name_* -ch=monthly_partition_detected_datatype_in_text_changed

YAML configuration

The sample schema_name.table_name.dqotable.yaml file with the check configured is shown below.

# yaml-language-server: $schema=https://cloud.dqops.com/dqo-yaml-schema/TableYaml-schema.json
apiVersion: dqo/v1
kind: table
spec:
  timestamp_columns:
    partition_by_column: date_column
  incremental_time_window:
    daily_partitioning_recent_days: 7
    monthly_partitioning_recent_months: 1
  columns:
    target_column:
      partitioned_checks:
        monthly:
          datatype:
            monthly_partition_detected_datatype_in_text_changed:
              error: {}
      labels:
      - This is the column that is analyzed for data quality issues
    date_column:
      labels:
      - "date or datetime column used as a daily or monthly partitioning key, dates\
        \ (and times) are truncated to a day or a month by the sensor's query for\
        \ partitioned checks"
Samples of generated SQL queries for each data source type

Please expand the database engine name section to see the SQL query rendered by a Jinja2 template for the string_datatype_detect data quality sensor.

BigQuery
{% import '/dialects/bigquery.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[-+]?\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[-+]?\d+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[-+]?\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[-+]?\d+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(SAFE_CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    DATE_TRUNC(CAST(analyzed_table.`date_column` AS DATE), MONTH) AS time_period,
    TIMESTAMP(DATE_TRUNC(CAST(analyzed_table.`date_column` AS DATE), MONTH)) AS time_period_utc
FROM `your-google-project-id`.`<target_schema>`.`<target_table>` AS analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
ClickHouse
{% import '/dialects/clickhouse.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^[-+]?\d+$') = TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^[+-]?[0-9]*[.,]?[0-9]+$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^[-+]?\d+$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^[+-]?([0-9]*[.])[0-9]+$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 0
                    WHEN TRIM(toString({{ lib.render_target_column('analyzed_table') }})) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^[-+]?\d+$') = TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^[+-]?[0-9]*[.,]?[0-9]+$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         match(toString(analyzed_table."target_column"), '^[-+]?\d+$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^[+-]?([0-9]*[.])[0-9]+$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 0
                    WHEN TRIM(toString(analyzed_table."target_column")) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    DATE_TRUNC('month', CAST(analyzed_table."date_column" AS DATE)) AS time_period,
    toDateTime64(DATE_TRUNC('month', CAST(analyzed_table."date_column" AS DATE)), 3) AS time_period_utc
FROM "<target_schema>"."<target_table>" AS analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
Databricks
{% import '/dialects/databricks.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    DATE_TRUNC('MONTH', CAST(analyzed_table.`date_column` AS DATE)) AS time_period,
    TIMESTAMP(DATE_TRUNC('MONTH', CAST(analyzed_table.`date_column` AS DATE))) AS time_period_utc
FROM `<target_schema>`.`<target_table>` AS analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
DB2
{% import '/dialects/db2.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM(
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM(analyzed_table."target_column") IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    time_period,
    time_period_utc
FROM(
    SELECT
        original_table.*,
    DATE_TRUNC('MONTH', CAST(original_table."date_column" AS DATE)) AS time_period,
    TIMESTAMP(DATE_TRUNC('MONTH', CAST(original_table."date_column" AS DATE))) AS time_period_utc
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
DuckDB
{% import '/dialects/duckdb.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    DATE_TRUNC('MONTH', CAST(analyzed_table."date_column" AS date)) AS time_period,
    CAST((DATE_TRUNC('MONTH', CAST(analyzed_table."date_column" AS date))) AS TIMESTAMP WITH TIME ZONE) AS time_period_utc
FROM  AS analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
HANA
{% import '/dialects/hana.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[-+]?\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
                    SUM(
                        CASE
                            WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[-+]?\d+$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[+-]?([0-9]*[.])[0-9]+$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 0
                    WHEN TRIM(TO_VARCHAR({{ lib.render_target_column('analyzed_table') }})) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[-+]?\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
                    SUM(
                        CASE
                            WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[-+]?\d+$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[+-]?([0-9]*[.])[0-9]+$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 0
                    WHEN TRIM(TO_VARCHAR(analyzed_table."target_column")) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    time_period,
    time_period_utc
FROM (
    SELECT
        original_table.*,
    SERIES_ROUND(CAST(original_table."date_column" AS DATE), 'INTERVAL 1 MONTH', ROUND_DOWN) AS time_period,
    TO_TIMESTAMP(SERIES_ROUND(CAST(original_table."date_column" AS DATE), 'INTERVAL 1 MONTH', ROUND_DOWN)) AS time_period_utc
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
MariaDB
{% import '/dialects/mariadb.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?[0-9]*[.,]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?([0-9]*[.])[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                            THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^[-+]?[0-9]+$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE WHEN 
    analyzed_table.`target_column` RLIKE '^[+-]?[0-9]*[.,]?[0-9]+$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL
                        OR 
    analyzed_table.`target_column` RLIKE '^[-+]?[0-9]+$'

                        OR 
    analyzed_table.`target_column` RLIKE '^[+-]?([0-9]*[.])[0-9]+$'

                        OR 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'

                        OR 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$'

                        OR 
    analyzed_table.`target_column` RLIKE '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$'

                        OR 
    analyzed_table.`target_column` RLIKE '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'

                            THEN 0
                    WHEN TRIM(analyzed_table.`target_column`) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    DATE_FORMAT(analyzed_table.`date_column`, '%Y-%m-01 00:00:00') AS time_period,
    FROM_UNIXTIME(UNIX_TIMESTAMP(DATE_FORMAT(analyzed_table.`date_column`, '%Y-%m-01 00:00:00'))) AS time_period_utc
FROM `<target_table>` AS analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
MySQL
{% import '/dialects/mysql.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?[0-9]*[.,]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]?[T]?[ \t\n\r\f\v]?([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?([.][0-9]{0,12})?[ \t\n\r\f\v]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?([0-9]*[.])[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[\s]?([.][0-9]{0,12})?[\s]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                            THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^[-+]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[    

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[    

]?[T]?[   

]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?([.][0-9]{0,12})?[  

]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^[-+]?[0-9]+$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^[+-]?([0-9]*[.])[0-9]+$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[  

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[\s]?([.][0-9]{0,12})?[\s]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                            THEN 0
                    WHEN TRIM(analyzed_table.`target_column`) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    DATE_FORMAT(analyzed_table.`date_column`, '%Y-%m-01 00:00:00') AS time_period,
    FROM_UNIXTIME(UNIX_TIMESTAMP(DATE_FORMAT(analyzed_table.`date_column`, '%Y-%m-01 00:00:00'))) AS time_period_utc
FROM `<target_table>` AS analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
Oracle
{% import '/dialects/oracle.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM(
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM(analyzed_table."target_column") IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    time_period,
    time_period_utc
FROM(
    SELECT
        original_table.*,
    TRUNC(CAST(original_table."date_column" AS DATE), 'MONTH') AS time_period,
    CAST(TRUNC(CAST(original_table."date_column" AS DATE), 'MONTH') AS TIMESTAMP WITH TIME ZONE) AS time_period_utc
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
PostgreSQL
{% import '/dialects/postgresql.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    DATE_TRUNC('MONTH', CAST(analyzed_table."date_column" AS date)) AS time_period,
    CAST((DATE_TRUNC('MONTH', CAST(analyzed_table."date_column" AS date))) AS TIMESTAMP WITH TIME ZONE) AS time_period_utc
FROM "your_postgresql_database"."<target_schema>"."<target_table>" AS analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
Presto
{% import '/dialects/presto.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST(analyzed_table."target_column" AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    time_period,
    time_period_utc
FROM (
    SELECT
        original_table.*,
    DATE_TRUNC('MONTH', CAST(original_table."date_column" AS date)) AS time_period,
    CAST(DATE_TRUNC('MONTH', CAST(original_table."date_column" AS date)) AS TIMESTAMP) AS time_period_utc
    FROM "your_trino_database"."<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
QuestDB
{% import '/dialects/questdb.sql.jinja2' as lib with context -%}
WITH data_table AS (
    SELECT
        COUNT({{ lib.render_target_column('analyzed_table') }}) as row_count,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_1,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_2,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_3,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_4,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                    THEN 1
                ELSE 0
            END) AS rows_type_5,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_6,
        SUM(
            CASE
                WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 0
                WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                    THEN 1
                ELSE 0
            END) AS rows_type_7
        {{ lib.render_data_grouping_projections_reference('analyzed_table') }}
        {{ lib.render_time_dimension_projection_reference('analyzed_table') }}
    FROM(
        SELECT
            original_table.*
            {{- lib.render_data_grouping_projections('original_table') }}
            {{- lib.render_time_dimension_projection('original_table') }}
        FROM {{ lib.render_target_table() }} original_table
    ) analyzed_table
    {{- lib.render_where_clause() -}}
    {{- lib.render_group_by() -}}
    {{- lib.render_order_by() -}}
)
SELECT
    CASE
        WHEN row_count = 0 THEN NULL
        WHEN row_count = rows_type_1 THEN 1
        WHEN row_count = rows_type_2 THEN 2
        WHEN row_count = rows_type_3 THEN 3
        WHEN row_count = rows_type_4 THEN 4
        WHEN row_count = rows_type_5 THEN 5
        WHEN row_count = rows_type_6 THEN 6
        WHEN row_count = rows_type_7 THEN 7
        ELSE 8
    END AS actual_value
FROM data_table AS analyzed_table
WITH data_table AS (
    SELECT
        COUNT(analyzed_table."target_column") as row_count,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_1,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_2,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_3,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_4,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                    THEN 1
                ELSE 0
            END) AS rows_type_5,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_6,
        SUM(
            CASE
                WHEN analyzed_table."target_column" IS NULL OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 0
                WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                    THEN 1
                ELSE 0
            END) AS rows_type_7

        ,
    time_period,
    time_period_utc
    FROM(
        SELECT
            original_table.*,
    CAST(DATE_TRUNC('month', original_table."date_column") AS DATE) AS time_period,
    CAST((CAST(DATE_TRUNC('month', original_table."date_column") AS DATE)) AS TIMESTAMP WITH TIME ZONE) AS time_period_utc
        FROM "<target_table>" original_table
    ) analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc)
SELECT
    CASE
        WHEN row_count = 0 THEN NULL
        WHEN row_count = rows_type_1 THEN 1
        WHEN row_count = rows_type_2 THEN 2
        WHEN row_count = rows_type_3 THEN 3
        WHEN row_count = rows_type_4 THEN 4
        WHEN row_count = rows_type_5 THEN 5
        WHEN row_count = rows_type_6 THEN 6
        WHEN row_count = rows_type_7 THEN 7
        ELSE 8
    END AS actual_value
FROM data_table AS analyzed_table
Redshift
{% import '/dialects/redshift.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    DATE_TRUNC('MONTH', CAST(analyzed_table."date_column" AS date)) AS time_period,
    CAST((DATE_TRUNC('MONTH', CAST(analyzed_table."date_column" AS date))) AS TIMESTAMP WITH TIME ZONE) AS time_period_utc
FROM "your_redshift_database"."<target_schema>"."<target_table>" AS analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
Snowflake
{% import '/dialects/snowflake.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[-+]?\\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[-+]?\\d+$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[+-]?([0-9]*[.])[0-9]+$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[-+]?\\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[-+]?\\d+$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[+-]?([0-9]*[.])[0-9]+$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    DATE_TRUNC('MONTH', CAST(analyzed_table."date_column" AS date)) AS time_period,
    TO_TIMESTAMP(DATE_TRUNC('MONTH', CAST(analyzed_table."date_column" AS date))) AS time_period_utc
FROM "your_snowflake_database"."<target_schema>"."<target_table>" AS analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
Spark
{% import '/dialects/spark.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    DATE_TRUNC('MONTH', CAST(analyzed_table.`date_column` AS DATE)) AS time_period,
    TIMESTAMP(DATE_TRUNC('MONTH', CAST(analyzed_table.`date_column` AS DATE))) AS time_period_utc
FROM `<target_schema>`.`<target_table>` AS analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
SQL Server
{% import '/dialects/sqlserver.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0-9]%'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN LEN(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <= 10
                        AND(
                            TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                        ) THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                           AND (
                               CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                           ) AND (
                               (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                               ) OR (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                               )
                           ) AND (
                                CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                           )
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 120) IS NOT NULL     --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 121) IS NOT NULL   --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 126) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 127) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 20) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 21) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 25) IS NOT NULL    --  yyyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 26) IS NOT NULL    --  yyyyy-dd-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 27) IS NOT NULL    --  ymm-dd-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 28) IS NOT NULL    --  ymm-yyyy-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 29) IS NOT NULL    --  ydd-mm-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 30) IS NOT NULL    --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 109) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 113) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                    THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN LOWER(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^0-9]%' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%' OR
                         LEN(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <= 10
                             AND(
                                 TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                             )
                         OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                               AND (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                               ) AND (
                                   (
                                       CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   ) OR (
                                       CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                                   )
                               ) AND (
                                    CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                               )
                         OR
                            TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 120) IS NOT NULL               --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 121) IS NOT NULL        --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 126) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 127) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 20) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 21) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 25) IS NOT NULL         --  yyyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 26) IS NOT NULL         --  yyyyy-dd-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 27) IS NOT NULL         --  ymm-dd-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 28) IS NOT NULL         --  ymm-yyyy-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 29) IS NOT NULL         --  ydd-mm-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 30) IS NOT NULL         --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 109) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 113) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                         OR LOWER(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT_BIG(analyzed_table.[target_column]) = 0 THEN NULL
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0-9]%'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN LEN(CAST(analyzed_table.[target_column] AS VARCHAR)) <= 10
                        AND(
                            TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                        ) THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                           AND (
                               CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                           ) AND (
                               (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                               ) OR (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                               )
                           ) AND (
                                CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                           )
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 120) IS NOT NULL     --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 121) IS NOT NULL   --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 126) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 127) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 20) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 21) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 25) IS NOT NULL    --  yyyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 26) IS NOT NULL    --  yyyyy-dd-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 27) IS NOT NULL    --  ymm-dd-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 28) IS NOT NULL    --  ymm-yyyy-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 29) IS NOT NULL    --  ydd-mm-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 30) IS NOT NULL    --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 109) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 113) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                    THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN LOWER(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE WHEN analyzed_table.[target_column] IS NULL OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^0-9]%' OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%' OR
                         LEN(CAST(analyzed_table.[target_column] AS VARCHAR)) <= 10
                             AND(
                                 TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                             )
                         OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                               AND (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                               ) AND (
                                   (
                                       CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   ) OR (
                                       CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                                   )
                               ) AND (
                                    CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                               )
                         OR
                            TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 120) IS NOT NULL               --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 121) IS NOT NULL        --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 126) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 127) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 20) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 21) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 25) IS NOT NULL         --  yyyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 26) IS NOT NULL         --  yyyyy-dd-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 27) IS NOT NULL         --  ymm-dd-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 28) IS NOT NULL         --  ymm-yyyy-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 29) IS NOT NULL         --  ydd-mm-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 30) IS NOT NULL         --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 109) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 113) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                         OR LOWER(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    DATEFROMPARTS(YEAR(CAST(analyzed_table.[date_column] AS date)), MONTH(CAST(analyzed_table.[date_column] AS date)), 1) AS time_period,
    CAST((DATEFROMPARTS(YEAR(CAST(analyzed_table.[date_column] AS date)), MONTH(CAST(analyzed_table.[date_column] AS date)), 1)) AS DATETIME) AS time_period_utc
FROM [your_sql_server_database].[<target_schema>].[<target_table>] AS analyzed_table
GROUP BY DATEFROMPARTS(YEAR(CAST(analyzed_table.[date_column] AS date)), MONTH(CAST(analyzed_table.[date_column] AS date)), 1), DATEADD(month, DATEDIFF(month, 0, analyzed_table.[date_column]), 0)
ORDER BY DATEFROMPARTS(YEAR(CAST(analyzed_table.[date_column] AS date)), MONTH(CAST(analyzed_table.[date_column] AS date)), 1)
Teradata
{% import '/dialects/teradata.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[+-]?[0-9]*[.,]?[0-9]+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[+-]?([0-9]*[.])[0-9]+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[+-]?[0-9]*[.,]?[0-9]+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[+-]?([0-9]*[.])[0-9]+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS VARCHAR(4096))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    TRUNC(CAST(analyzed_table."date_column" AS DATE), 'MM') AS time_period,
    CAST(TRUNC(CAST(analyzed_table."date_column" AS DATE), 'MM') AS TIMESTAMP) AS time_period_utc
FROM "<target_schema>"."<target_table>" AS analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc
Trino
{% import '/dialects/trino.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]{1}[.][0-9]*E[-]?[0-9]+$') OR {# Casting double to varchar in trino results in a scientific notation #}
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
                    SUM(
                        CASE
                            WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]{1}[.][0-9]*E[-]?[0-9]+$') OR 
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
                    SUM(
                        CASE
                            WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST(analyzed_table."target_column" AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    time_period,
    time_period_utc
FROM (
    SELECT
        original_table.*,
    DATE_TRUNC('MONTH', CAST(original_table."date_column" AS date)) AS time_period,
    CAST(DATE_TRUNC('MONTH', CAST(original_table."date_column" AS date)) AS TIMESTAMP) AS time_period_utc
    FROM "your_trino_catalog"."<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY time_period, time_period_utc
ORDER BY time_period, time_period_utc

Expand the Configure with data grouping section to see additional examples for configuring this data quality checks to use data grouping (GROUP BY).

Configuration with data grouping

Sample configuration with data grouping enabled (YAML) The sample below shows how to configure the data grouping and how it affects the generated SQL query.

# yaml-language-server: $schema=https://cloud.dqops.com/dqo-yaml-schema/TableYaml-schema.json
apiVersion: dqo/v1
kind: table
spec:
  timestamp_columns:
    partition_by_column: date_column
  incremental_time_window:
    daily_partitioning_recent_days: 7
    monthly_partitioning_recent_months: 1
  default_grouping_name: group_by_country_and_state
  groupings:
    group_by_country_and_state:
      level_1:
        source: column_value
        column: country
      level_2:
        source: column_value
        column: state
  columns:
    target_column:
      partitioned_checks:
        monthly:
          datatype:
            monthly_partition_detected_datatype_in_text_changed:
              error: {}
      labels:
      - This is the column that is analyzed for data quality issues
    date_column:
      labels:
      - "date or datetime column used as a daily or monthly partitioning key, dates\
        \ (and times) are truncated to a day or a month by the sensor's query for\
        \ partitioned checks"
    country:
      labels:
      - column used as the first grouping key
    state:
      labels:
      - column used as the second grouping key

Please expand the database engine name section to see the SQL query rendered by a Jinja2 template for the string_datatype_detect sensor.

BigQuery
{% import '/dialects/bigquery.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[-+]?\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[-+]?\d+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(SAFE_CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[-+]?\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[-+]?\d+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP_CONTAINS(SAFE_CAST(analyzed_table.`target_column` AS STRING), r"^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(SAFE_CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.`country` AS grouping_level_1,
    analyzed_table.`state` AS grouping_level_2,
    DATE_TRUNC(CAST(analyzed_table.`date_column` AS DATE), MONTH) AS time_period,
    TIMESTAMP(DATE_TRUNC(CAST(analyzed_table.`date_column` AS DATE), MONTH)) AS time_period_utc
FROM `your-google-project-id`.`<target_schema>`.`<target_table>` AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ClickHouse
{% import '/dialects/clickhouse.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^[-+]?\d+$') = TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^[+-]?[0-9]*[.,]?[0-9]+$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN match(toString({{ lib.render_target_column('analyzed_table') }}), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^[-+]?\d+$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^[+-]?([0-9]*[.])[0-9]+$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE OR
                         match(toString({{ lib.render_target_column('analyzed_table') }}), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 0
                    WHEN TRIM(toString({{ lib.render_target_column('analyzed_table') }})) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^[-+]?\d+$') = TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^[+-]?[0-9]*[.,]?[0-9]+$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN match(toString(analyzed_table."target_column"), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         match(toString(analyzed_table."target_column"), '^[-+]?\d+$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^[+-]?([0-9]*[.])[0-9]+$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?((am|pm|AM|PM))?)$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') = TRUE OR
                         match(toString(analyzed_table."target_column"), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') = TRUE
                        THEN 0
                    WHEN TRIM(toString(analyzed_table."target_column")) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2,
    DATE_TRUNC('month', CAST(analyzed_table."date_column" AS DATE)) AS time_period,
    toDateTime64(DATE_TRUNC('month', CAST(analyzed_table."date_column" AS DATE)), 3) AS time_period_utc
FROM "<target_schema>"."<target_table>" AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
Databricks
{% import '/dialects/databricks.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                         REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.`country` AS grouping_level_1,
    analyzed_table.`state` AS grouping_level_2,
    DATE_TRUNC('MONTH', CAST(analyzed_table.`date_column` AS DATE)) AS time_period,
    TIMESTAMP(DATE_TRUNC('MONTH', CAST(analyzed_table.`date_column` AS DATE))) AS time_period_utc
FROM `<target_schema>`.`<target_table>` AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
DB2
{% import '/dialects/db2.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM(
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}\:?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM(analyzed_table."target_column") IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2,
    time_period,
    time_period_utc
FROM(
    SELECT
        original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2,
    DATE_TRUNC('MONTH', CAST(original_table."date_column" AS DATE)) AS time_period,
    TIMESTAMP(DATE_TRUNC('MONTH', CAST(original_table."date_column" AS DATE))) AS time_period_utc
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
DuckDB
{% import '/dialects/duckdb.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|[00]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2,
    DATE_TRUNC('MONTH', CAST(analyzed_table."date_column" AS date)) AS time_period,
    CAST((DATE_TRUNC('MONTH', CAST(analyzed_table."date_column" AS date))) AS TIMESTAMP WITH TIME ZONE) AS time_period_utc
FROM  AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
HANA
{% import '/dialects/hana.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[-+]?\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
                    SUM(
                        CASE
                            WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[-+]?\d+$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^[+-]?([0-9]*[.])[0-9]+$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'  OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         TO_VARCHAR({{ lib.render_target_column('analyzed_table') }}) LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 0
                    WHEN TRIM(TO_VARCHAR({{ lib.render_target_column('analyzed_table') }})) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[-+]?\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
                    SUM(
                        CASE
                            WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[-+]?\d+$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^[+-]?([0-9]*[.])[0-9]+$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$'  OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         TO_VARCHAR(analyzed_table."target_column") LIKE_REGEXPR '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$'
                        THEN 0
                    WHEN TRIM(TO_VARCHAR(analyzed_table."target_column")) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2,
    time_period,
    time_period_utc
FROM (
    SELECT
        original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2,
    SERIES_ROUND(CAST(original_table."date_column" AS DATE), 'INTERVAL 1 MONTH', ROUND_DOWN) AS time_period,
    TO_TIMESTAMP(SERIES_ROUND(CAST(original_table."date_column" AS DATE), 'INTERVAL 1 MONTH', ROUND_DOWN)) AS time_period_utc
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
MariaDB
{% import '/dialects/mariadb.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?[0-9]*[.,]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?([0-9]*[.])[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                            THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^[-+]?[0-9]+$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE WHEN 
    analyzed_table.`target_column` RLIKE '^[+-]?[0-9]*[.,]?[0-9]+$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN 
    analyzed_table.`target_column` RLIKE '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'

                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL
                        OR 
    analyzed_table.`target_column` RLIKE '^[-+]?[0-9]+$'

                        OR 
    analyzed_table.`target_column` RLIKE '^[+-]?([0-9]*[.])[0-9]+$'

                        OR 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'

                        OR 
    analyzed_table.`target_column` RLIKE '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[[:space:]]?(am|pm|AM|PM)?)$'

                        OR 
    analyzed_table.`target_column` RLIKE '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[[:space:]]?([.][0-9]{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$'

                        OR 
    analyzed_table.`target_column` RLIKE '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'

                            THEN 0
                    WHEN TRIM(analyzed_table.`target_column`) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.`country` AS grouping_level_1,
    analyzed_table.`state` AS grouping_level_2,
    DATE_FORMAT(analyzed_table.`date_column`, '%Y-%m-01 00:00:00') AS time_period,
    FROM_UNIXTIME(UNIX_TIMESTAMP(DATE_FORMAT(analyzed_table.`date_column`, '%Y-%m-01 00:00:00'))) AS time_period_utc
FROM `<target_table>` AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
MySQL
{% import '/dialects/mysql.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?[0-9]*[.,]?[0-9]+$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]?[T]?[ \t\n\r\f\v]?([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?([.][0-9]{0,12})?[ \t\n\r\f\v]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[-+]?[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^[+-]?([0-9]*[.])[0-9]+$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])[:]([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[ \t\n\r\f\v]([0]|[00]|2[0-3]|[01][0-9])\\:([0-5][0-9])\\:([0-5][0-9])[ \t\n\r\f\v]?(am|pm|AM|PM)?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[\s]?([.][0-9]{0,12})?[\s]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$') }}
                        OR {{ lib.render_regex(lib.render_target_column('analyzed_table'), '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$') }}
                            THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^[-+]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[    

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[    

]?[T]?[   

]?([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?([.][0-9]{0,12})?[  

]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table.`target_column`, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^[-+]?[0-9]+$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^[+-]?([0-9]*[.])[0-9]+$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4}))$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/]([0-9]{4})[  

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.]([0-9]{4})[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[  

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?(am|pm|AM|PM)?)$|^(([0-9]{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[     

]([0]|[00]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])[     

]?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^(([0-9]{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[\s]?([.][0-9]{0,12})?[\s]?((GMT)|(UTC))?(([-+][0-9]{2}[:]?([0-9]{2})?)|[zZ])?)$')
                        OR REGEXP_LIKE(analyzed_table.`target_column`, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                            THEN 0
                    WHEN TRIM(analyzed_table.`target_column`) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.`country` AS grouping_level_1,
    analyzed_table.`state` AS grouping_level_2,
    DATE_FORMAT(analyzed_table.`date_column`, '%Y-%m-01 00:00:00') AS time_period,
    FROM_UNIXTIME(UNIX_TIMESTAMP(DATE_FORMAT(analyzed_table.`date_column`, '%Y-%m-01 00:00:00'))) AS time_period_utc
FROM `<target_table>` AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
Oracle
{% import '/dialects/oracle.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[-+]?\d+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE({{ lib.render_target_column('analyzed_table') }}, '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM({{ lib.render_target_column('analyzed_table') }}) IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM(
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[-+]?\d+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+E[+-][0-9]*$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^[+-]?([0-9]*[.,])[0-9]+$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])[:]([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])\s([0]|2[0-3]|[01][0-9])\:([0-5][0-9])\:([0-5][0-9])\s?(am|pm|AM|PM)?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[[:space:]]?[T]?[[:space:]]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[[:space:]]?([.]\d{0,12})?[[:space:]]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                         OR REGEXP_LIKE(analyzed_table."target_column", '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$')
                        THEN 0
                    WHEN TRIM(analyzed_table."target_column") IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2
,
    time_period,
    time_period_utc
FROM(
    SELECT
        original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2,
    TRUNC(CAST(original_table."date_column" AS DATE), 'MONTH') AS time_period,
    CAST(TRUNC(CAST(original_table."date_column" AS DATE), 'MONTH') AS TIMESTAMP WITH TIME ZONE) AS time_period_utc
    FROM "<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
PostgreSQL
{% import '/dialects/postgresql.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2,
    DATE_TRUNC('MONTH', CAST(analyzed_table."date_column" AS date)) AS time_period,
    CAST((DATE_TRUNC('MONTH', CAST(analyzed_table."date_column" AS date))) AS TIMESTAMP WITH TIME ZONE) AS time_period_utc
FROM "your_postgresql_database"."<target_schema>"."<target_table>" AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
Presto
{% import '/dialects/presto.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST(analyzed_table."target_column" AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2
,
    time_period,
    time_period_utc
FROM (
    SELECT
        original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2,
    DATE_TRUNC('MONTH', CAST(original_table."date_column" AS date)) AS time_period,
    CAST(DATE_TRUNC('MONTH', CAST(original_table."date_column" AS date)) AS TIMESTAMP) AS time_period_utc
    FROM "your_trino_database"."<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
QuestDB
{% import '/dialects/questdb.sql.jinja2' as lib with context -%}
WITH data_table AS (
    SELECT
        COUNT({{ lib.render_target_column('analyzed_table') }}) as row_count,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_1,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_2,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_3,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_4,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                    THEN 1
                ELSE 0
            END) AS rows_type_5,
        SUM(
            CASE
                WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_6,
        SUM(
            CASE
                WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                     CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 0
                WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                    THEN 1
                ELSE 0
            END) AS rows_type_7
        {{ lib.render_data_grouping_projections_reference('analyzed_table') }}
        {{ lib.render_time_dimension_projection_reference('analyzed_table') }}
    FROM(
        SELECT
            original_table.*
            {{- lib.render_data_grouping_projections('original_table') }}
            {{- lib.render_time_dimension_projection('original_table') }}
        FROM {{ lib.render_target_table() }} original_table
    ) analyzed_table
    {{- lib.render_where_clause() -}}
    {{- lib.render_group_by() -}}
    {{- lib.render_order_by() -}}
)
SELECT
    CASE
        WHEN row_count = 0 THEN NULL
        WHEN row_count = rows_type_1 THEN 1
        WHEN row_count = rows_type_2 THEN 2
        WHEN row_count = rows_type_3 THEN 3
        WHEN row_count = rows_type_4 THEN 4
        WHEN row_count = rows_type_5 THEN 5
        WHEN row_count = rows_type_6 THEN 6
        WHEN row_count = rows_type_7 THEN 7
        ELSE 8
    END AS actual_value
FROM data_table AS analyzed_table
WITH data_table AS (
    SELECT
        COUNT(analyzed_table."target_column") as row_count,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_1,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_2,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_3,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_4,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                    THEN 1
                ELSE 0
            END) AS rows_type_5,
        SUM(
            CASE
                WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 1
                ELSE 0
            END) AS rows_type_6,
        SUM(
            CASE
                WHEN analyzed_table."target_column" IS NULL OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' = TRUE OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                     CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' = TRUE
                    THEN 0
                WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                    THEN 1
                ELSE 0
            END) AS rows_type_7
        ,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2
        ,
    time_period,
    time_period_utc
    FROM(
        SELECT
            original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2,
    CAST(DATE_TRUNC('month', original_table."date_column") AS DATE) AS time_period,
    CAST((CAST(DATE_TRUNC('month', original_table."date_column") AS DATE)) AS TIMESTAMP WITH TIME ZONE) AS time_period_utc
        FROM "<target_table>" original_table
    ) analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc)
SELECT
    CASE
        WHEN row_count = 0 THEN NULL
        WHEN row_count = rows_type_1 THEN 1
        WHEN row_count = rows_type_2 THEN 2
        WHEN row_count = rows_type_3 THEN 3
        WHEN row_count = rows_type_4 THEN 4
        WHEN row_count = rows_type_5 THEN 5
        WHEN row_count = rows_type_6 THEN 6
        WHEN row_count = rows_type_7 THEN 7
        ELSE 8
    END AS actual_value
FROM data_table AS analyzed_table
Redshift
{% import '/dialects/redshift.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?[0-9]*[.,]?[0-9]+$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[-+]?\d+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^[+-]?([0-9]*[.])[0-9]+$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(am|pm|AM|PM)?)$' IS TRUE OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) ~ '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$' IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2,
    DATE_TRUNC('MONTH', CAST(analyzed_table."date_column" AS date)) AS time_period,
    CAST((DATE_TRUNC('MONTH', CAST(analyzed_table."date_column" AS date))) AS TIMESTAMP WITH TIME ZONE) AS time_period_utc
FROM "your_redshift_database"."<target_schema>"."<target_table>" AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
Snowflake
{% import '/dialects/snowflake.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[-+]?\\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[-+]?\\d+$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^[+-]?([0-9]*[.])[0-9]+$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[-+]?\\d+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[+-]?[0-9]*[.,]?[0-9]+$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN CAST(analyzed_table."target_column" AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[-+]?\\d+$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^[+-]?([0-9]*[.])[0-9]+$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(am|pm|AM|PM)?)$' OR
                         CAST(analyzed_table."target_column" AS TEXT) REGEXP '^(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)$'
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS TEXT)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2,
    DATE_TRUNC('MONTH', CAST(analyzed_table."date_column" AS date)) AS time_period,
    TO_TIMESTAMP(DATE_TRUNC('MONTH', CAST(analyzed_table."date_column" AS date))) AS time_period_utc
FROM "your_snowflake_database"."<target_schema>"."<target_table>" AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
Spark
{% import '/dialects/spark.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[-+]?\\d+$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                            REGEXP(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table.`target_column`) = 0 THEN NULL
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?[0-9]*[.,]?[0-9]+$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table.`target_column`) =
            SUM(
                CASE
                    WHEN analyzed_table.`target_column` IS NULL OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[-+]?\\d+$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^[+-]?([0-9]*[.])[0-9]+$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4}))$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\\d{4})[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$|^((\\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?(\\b(am|pm|AM|PM)\\b)?)$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^((\\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\\s]?[T]?[\\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\\s]?([.]\\d{0,12})?[\\s]?((GMT)|(UTC))?(([-+]\\d{2}[:]?(\\d{2})?)|[zZ])?)$") IS TRUE OR
                            REGEXP(CAST(analyzed_table.`target_column` AS STRING), "^(\\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\\b)$") IS TRUE
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.`target_column` AS STRING)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.`country` AS grouping_level_1,
    analyzed_table.`state` AS grouping_level_2,
    DATE_TRUNC('MONTH', CAST(analyzed_table.`date_column` AS DATE)) AS time_period,
    TIMESTAMP(DATE_TRUNC('MONTH', CAST(analyzed_table.`date_column` AS DATE))) AS time_period_utc
FROM `<target_schema>`.`<target_table>` AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
SQL Server
{% import '/dialects/sqlserver.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0-9]%'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN LEN(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <= 10
                        AND(
                            TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                            OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                        ) THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                           AND (
                               CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                           ) AND (
                               (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                               ) OR (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                   OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                               )
                           ) AND (
                                CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                           )
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 120) IS NOT NULL     --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 121) IS NOT NULL   --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 126) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 127) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 20) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 21) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 25) IS NOT NULL    --  yyyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 26) IS NOT NULL    --  yyyyy-dd-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 27) IS NOT NULL    --  ymm-dd-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 28) IS NOT NULL    --  ymm-yyyy-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 29) IS NOT NULL    --  ydd-mm-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 30) IS NOT NULL    --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 109) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 113) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                    THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN LOWER(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT_BIG({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^0-9]%' OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%' OR
                         LEN(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <= 10
                             AND(
                                 TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                                 OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                             )
                         OR
                         CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                               AND (
                                   CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                               ) AND (
                                   (
                                       CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   ) OR (
                                       CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                       OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                                   )
                               ) AND (
                                    CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                               )
                         OR
                            TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 120) IS NOT NULL               --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 121) IS NOT NULL        --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 126) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 127) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 20) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 21) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 25) IS NOT NULL         --  yyyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 26) IS NOT NULL         --  yyyyy-dd-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 27) IS NOT NULL         --  ymm-dd-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 28) IS NOT NULL         --  ymm-yyyy-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 29) IS NOT NULL         --  ydd-mm-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 30) IS NOT NULL         --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 109) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), 113) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                         OR LOWER(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS NVARCHAR(MAX))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT_BIG(analyzed_table.[target_column]) = 0 THEN NULL
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0-9]%'
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%'
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN LEN(CAST(analyzed_table.[target_column] AS VARCHAR)) <= 10
                        AND(
                            TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                            OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                        ) THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                           AND (
                               CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                           ) AND (
                               (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                               ) OR (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                   OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                               )
                           ) AND (
                                CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                           )
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 120) IS NOT NULL     --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 121) IS NOT NULL   --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 126) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 127) IS NOT NULL   --  yyyy-mm-dd T hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 20) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 21) IS NOT NULL    --  yyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 25) IS NOT NULL    --  yyyyy-mm-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 26) IS NOT NULL    --  yyyyy-dd-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 27) IS NOT NULL    --  ymm-dd-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 28) IS NOT NULL    --  ymm-yyyy-dd hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 29) IS NOT NULL    --  ydd-mm-yyyy hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 30) IS NOT NULL    --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 109) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                        OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 113) IS NOT NULL   --  ydd-yyyy-mm hh:mm:ss:nnn
                    THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE
                    WHEN LOWER(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT_BIG(analyzed_table.[target_column]) =
            SUM(
                CASE WHEN analyzed_table.[target_column] IS NULL OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^0-9]%' OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-+0123456789.,]%' OR
                         LEN(CAST(analyzed_table.[target_column] AS VARCHAR)) <= 10
                             AND(
                                 TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 110) IS NOT NULL     --  mm-dd-yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 101) IS NOT NULL  --  mm/dd/yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 105) IS NOT NULL  --  dd-mm-yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 103) IS NOT NULL  --  dd/mm/yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 104) IS NOT NULL  --  dd.mm.yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 107) IS NOT NULL  --  Mon dd, yyyy
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 102) IS NOT NULL  --  yyyy.mm.dd
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 111) IS NOT NULL  --  yyyy/mm/dd
                                 OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 23) IS NOT NULL   --  yyyy-mm-dd
                             )
                         OR
                         CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) NOT LIKE '%[^-0-9./:APMapm ]%'
                               AND (
                                   CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]0[1-9][-/.]%'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[-/.]1[0-2][-/.]%'
                               ) AND (
                                   (
                                       CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '0[1-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[12][0-9][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '3[01][-/.]__[-/.][0-9][0-9][0-9][0-9] %'
                                   ) OR (
                                       CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]0[1-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.][12][0-9] %'
                                       OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '[0-9][0-9][0-9][0-9][-/.]__[-/.]3[01] %'
                                   )
                               ) AND (
                                    CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[0][0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[1][0-2][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9] [AaPp][Mm]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[01][0-9][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '%[2][0-3][:][0-5][0-9][:][0-5][0-9]'
                                    OR CAST(analyzed_table.[target_column] AS NVARCHAR(MAX)) LIKE '% [0-9][:][0-5][0-9][:][0-5][0-9]'
                               )
                         OR
                            TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 120) IS NOT NULL               --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 121) IS NOT NULL        --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 126) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 127) IS NOT NULL        --  yyyy-mm-dd T hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 20) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 21) IS NOT NULL         --  yyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 25) IS NOT NULL         --  yyyyy-mm-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 26) IS NOT NULL         --  yyyyy-dd-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 27) IS NOT NULL         --  ymm-dd-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 28) IS NOT NULL         --  ymm-yyyy-dd hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 29) IS NOT NULL         --  ydd-mm-yyyy hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 30) IS NOT NULL         --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 109) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                                OR TRY_CONVERT(date, CAST(analyzed_table.[target_column] AS VARCHAR), 113) IS NOT NULL        --  ydd-yyyy-mm hh:mm:ss:nnn
                         OR LOWER(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) IN ('TRUE', 'FALSE', 'YES', 'NO', 'Y', 'N', 'T', 'F')
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table.[target_column] AS NVARCHAR(MAX))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table.[country] AS grouping_level_1,
    analyzed_table.[state] AS grouping_level_2,
    DATEFROMPARTS(YEAR(CAST(analyzed_table.[date_column] AS date)), MONTH(CAST(analyzed_table.[date_column] AS date)), 1) AS time_period,
    CAST((DATEFROMPARTS(YEAR(CAST(analyzed_table.[date_column] AS date)), MONTH(CAST(analyzed_table.[date_column] AS date)), 1)) AS DATETIME) AS time_period_utc
FROM [your_sql_server_database].[<target_schema>].[<target_table>] AS analyzed_table
GROUP BY analyzed_table.[country], analyzed_table.[state], DATEFROMPARTS(YEAR(CAST(analyzed_table.[date_column] AS date)), MONTH(CAST(analyzed_table.[date_column] AS date)), 1), DATEADD(month, DATEDIFF(month, 0, analyzed_table.[date_column]), 0)
ORDER BY level_1, level_2DATEFROMPARTS(YEAR(CAST(analyzed_table.[date_column] AS date)), MONTH(CAST(analyzed_table.[date_column] AS date)), 1)
Teradata
{% import '/dialects/teradata.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN NULL
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[+-]?[0-9]*[.,]?[0-9]+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^[+-]?([0-9]*[.])[0-9]+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 0
                    WHEN TRIM(CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR(4096))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections('analyzed_table') }}
    {{- lib.render_time_dimension_projection('analyzed_table') }}
FROM {{ lib.render_target_table() }} AS analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN NULL
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[+-]?[0-9]*[.,]?[0-9]+$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 1
                    ELSE 0
                END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[-+]?\d+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^[+-]?([0-9]*[.])[0-9]+$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') IS NOT NULL OR
                            REGEXP_SUBSTR(CAST(analyzed_table."target_column" AS VARCHAR(4096)), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$') IS NOT NULL
                        THEN 0
                    WHEN TRIM(CAST(analyzed_table."target_column" AS VARCHAR(4096))) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,
    analyzed_table."country" AS grouping_level_1,
    analyzed_table."state" AS grouping_level_2,
    TRUNC(CAST(analyzed_table."date_column" AS DATE), 'MM') AS time_period,
    CAST(TRUNC(CAST(analyzed_table."date_column" AS DATE), 'MM') AS TIMESTAMP) AS time_period_utc
FROM "<target_schema>"."<target_table>" AS analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc
Trino
{% import '/dialects/trino.sql.jinja2' as lib with context -%}

SELECT
    CASE
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) = 0 THEN 0
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]{1}[.][0-9]*E[-]?[0-9]+$') OR {# Casting double to varchar in trino results in a scientific notation #}
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
                    SUM(
                        CASE
                            WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT({{ lib.render_target_column('analyzed_table') }}) =
            SUM(
                CASE
                    WHEN {{ lib.render_target_column('analyzed_table') }} IS NULL OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')  OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST({{ lib.render_target_column('analyzed_table') }} AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value
    {{- lib.render_data_grouping_projections_reference('analyzed_table') }}
    {{- lib.render_time_dimension_projection_reference('analyzed_table') }}
FROM (
    SELECT
        original_table.*
        {{- lib.render_data_grouping_projections('original_table') }}
        {{- lib.render_time_dimension_projection('original_table') }}
    FROM {{ lib.render_target_table() }} original_table
) analyzed_table
{{- lib.render_where_clause() -}}
{{- lib.render_group_by() -}}
{{- lib.render_order_by() -}}
SELECT
    CASE
        WHEN COUNT(analyzed_table."target_column") = 0 THEN 0
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')
                        THEN 1
                    ELSE 0
                END
            )
            THEN 1
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]{1}[.][0-9]*E[-]?[0-9]+$') OR 
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?[0-9]*[.,]?[0-9]+$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 2
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 3
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 4
        WHEN COUNT(analyzed_table."target_column") =
                    SUM(
                        CASE
                            WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$')
                                THEN 1
                            ELSE 0
                            END
                    )
                    THEN 5
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 1
                    ELSE 0
                    END
            )
            THEN 6
        WHEN COUNT(analyzed_table."target_column") =
            SUM(
                CASE
                    WHEN analyzed_table."target_column" IS NULL OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[-+]?\d+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^[+-]?([0-9]*[.])[0-9]+$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4}))$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4}))$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01]))$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[/](0[1-9]|1[0-2])[/](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[-](0[1-9]|1[0-2])[-](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((0[1-9]|[1][0-9]|[2][0-9]|3[01])[.](0[1-9]|1[0-2])[.](\d{4})[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[/](0[1-9]|1[0-2])[/](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$|^((\d{4})[.](0[1-9]|1[0-2])[.](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?(\b(am|pm|AM|PM)\b)?)$')  OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^((\d{4})[-](0[1-9]|1[0-2])[-](0[1-9]|[1][0-9]|[2][0-9]|3[01])[\s]?[T]?[\s]?([0]|2[0-3]|[01][0-9])[:]([0-5][0-9])[:]([0-5][0-9])[\s]?([.]\d{0,12})?[\s]?((GMT)|(UTC))?(([-+]\d{2}[:]?(\d{2})?)|[zZ])?)$') OR
                         REGEXP_LIKE(TRY_CAST(analyzed_table."target_column" AS VARCHAR), '^(\b(true|false|TRUE|FALSE|yes|no|YES|NO|y|n|Y|N|t|f|T|F)\b)$')
                        THEN 0
                    WHEN TRIM(TRY_CAST(analyzed_table."target_column" AS VARCHAR)) <> ''
                        THEN 1
                    ELSE 0
                END
            )
            THEN 7
        ELSE 8
    END AS actual_value,

                analyzed_table.grouping_level_1,

                analyzed_table.grouping_level_2
,
    time_period,
    time_period_utc
FROM (
    SELECT
        original_table.*,
    original_table."country" AS grouping_level_1,
    original_table."state" AS grouping_level_2,
    DATE_TRUNC('MONTH', CAST(original_table."date_column" AS date)) AS time_period,
    CAST(DATE_TRUNC('MONTH', CAST(original_table."date_column" AS date)) AS TIMESTAMP) AS time_period_utc
    FROM "your_trino_catalog"."<target_schema>"."<target_table>" original_table
) analyzed_table
GROUP BY grouping_level_1, grouping_level_2, time_period, time_period_utc
ORDER BY grouping_level_1, grouping_level_2, time_period, time_period_utc

What's next