All columns have NULLABLE problem when destination table with overwrite preference on Bigquery












0














I've running a query to make changes column data type and choose destination table queried table itself. I choose write preferece "Overwrite table". Table all columns are REQUIRED and table is not empty. But after run the query, all columns mode change NULLABLE. My cast query like :



SELECT
CAST(id AS STRING) as id, column1, column2
FROM
dataset.mytable;



Is it always that way, or I'm making a mistake?










share|improve this question






















  • What happens if you set the destination table to a new table, rather than overwriting the source table - do you get the desired results? Since you cannot change the data types in a table (stackoverflow.com/questions/53745229/…) I would not expect the overwrite function to work in this way.
    – Ben P
    Dec 27 at 13:39


















0














I've running a query to make changes column data type and choose destination table queried table itself. I choose write preferece "Overwrite table". Table all columns are REQUIRED and table is not empty. But after run the query, all columns mode change NULLABLE. My cast query like :



SELECT
CAST(id AS STRING) as id, column1, column2
FROM
dataset.mytable;



Is it always that way, or I'm making a mistake?










share|improve this question






















  • What happens if you set the destination table to a new table, rather than overwriting the source table - do you get the desired results? Since you cannot change the data types in a table (stackoverflow.com/questions/53745229/…) I would not expect the overwrite function to work in this way.
    – Ben P
    Dec 27 at 13:39
















0












0








0







I've running a query to make changes column data type and choose destination table queried table itself. I choose write preferece "Overwrite table". Table all columns are REQUIRED and table is not empty. But after run the query, all columns mode change NULLABLE. My cast query like :



SELECT
CAST(id AS STRING) as id, column1, column2
FROM
dataset.mytable;



Is it always that way, or I'm making a mistake?










share|improve this question













I've running a query to make changes column data type and choose destination table queried table itself. I choose write preferece "Overwrite table". Table all columns are REQUIRED and table is not empty. But after run the query, all columns mode change NULLABLE. My cast query like :



SELECT
CAST(id AS STRING) as id, column1, column2
FROM
dataset.mytable;



Is it always that way, or I'm making a mistake?







google-bigquery






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Dec 27 at 12:36









Ebru Peker

224




224












  • What happens if you set the destination table to a new table, rather than overwriting the source table - do you get the desired results? Since you cannot change the data types in a table (stackoverflow.com/questions/53745229/…) I would not expect the overwrite function to work in this way.
    – Ben P
    Dec 27 at 13:39




















  • What happens if you set the destination table to a new table, rather than overwriting the source table - do you get the desired results? Since you cannot change the data types in a table (stackoverflow.com/questions/53745229/…) I would not expect the overwrite function to work in this way.
    – Ben P
    Dec 27 at 13:39


















What happens if you set the destination table to a new table, rather than overwriting the source table - do you get the desired results? Since you cannot change the data types in a table (stackoverflow.com/questions/53745229/…) I would not expect the overwrite function to work in this way.
– Ben P
Dec 27 at 13:39






What happens if you set the destination table to a new table, rather than overwriting the source table - do you get the desired results? Since you cannot change the data types in a table (stackoverflow.com/questions/53745229/…) I would not expect the overwrite function to work in this way.
– Ben P
Dec 27 at 13:39














2 Answers
2






active

oldest

votes


















5















I'm making a mistake?




Nope, it is by design, when you overwrite table original schema is lost and columns are nullable by default




Is it always that way?




You should use CREATE OR REPLACE TABLE DDL statement to achieve your goal. Something like below



CREATE OR REPLACE TABLE `project.dataset.mytable` (
id STRING NOT NULL,
column1 INT64 NOT NULL,
column2 INT64 NOT NULL
) AS
SELECT CAST(id AS STRING) as id, column1, column2
FROM `project.dataset.mytable`





share|improve this answer





























    -1














    Thank you for your help, it works fine. But, partitioned by ingestion time tables do not work this way. I can't achieve overwrite with query like:



    CREATE OR REPLACE TABLE `project.dataset.mytable` (
    id STRING NOT NULL,
    column1 INT64 NOT NULL,
    column2 INT64 NOT NULL
    ) PARTITION BY DATE(_PARTITIONTIME) AS
    SELECT CAST(id AS STRING) as id, column1, column2
    FROM `project.dataset.mytable` where _PARTITIONTIME is not null;





    share|improve this answer























    • If you have a new question, please ask it by clicking the Ask Question button. Include a link to this question if it helps provide context. - From Review
      – iamnotmaynard
      2 days ago











    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53945239%2fall-columns-have-nullable-problem-when-destination-table-with-overwrite-preferen%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    5















    I'm making a mistake?




    Nope, it is by design, when you overwrite table original schema is lost and columns are nullable by default




    Is it always that way?




    You should use CREATE OR REPLACE TABLE DDL statement to achieve your goal. Something like below



    CREATE OR REPLACE TABLE `project.dataset.mytable` (
    id STRING NOT NULL,
    column1 INT64 NOT NULL,
    column2 INT64 NOT NULL
    ) AS
    SELECT CAST(id AS STRING) as id, column1, column2
    FROM `project.dataset.mytable`





    share|improve this answer


























      5















      I'm making a mistake?




      Nope, it is by design, when you overwrite table original schema is lost and columns are nullable by default




      Is it always that way?




      You should use CREATE OR REPLACE TABLE DDL statement to achieve your goal. Something like below



      CREATE OR REPLACE TABLE `project.dataset.mytable` (
      id STRING NOT NULL,
      column1 INT64 NOT NULL,
      column2 INT64 NOT NULL
      ) AS
      SELECT CAST(id AS STRING) as id, column1, column2
      FROM `project.dataset.mytable`





      share|improve this answer
























        5












        5








        5







        I'm making a mistake?




        Nope, it is by design, when you overwrite table original schema is lost and columns are nullable by default




        Is it always that way?




        You should use CREATE OR REPLACE TABLE DDL statement to achieve your goal. Something like below



        CREATE OR REPLACE TABLE `project.dataset.mytable` (
        id STRING NOT NULL,
        column1 INT64 NOT NULL,
        column2 INT64 NOT NULL
        ) AS
        SELECT CAST(id AS STRING) as id, column1, column2
        FROM `project.dataset.mytable`





        share|improve this answer













        I'm making a mistake?




        Nope, it is by design, when you overwrite table original schema is lost and columns are nullable by default




        Is it always that way?




        You should use CREATE OR REPLACE TABLE DDL statement to achieve your goal. Something like below



        CREATE OR REPLACE TABLE `project.dataset.mytable` (
        id STRING NOT NULL,
        column1 INT64 NOT NULL,
        column2 INT64 NOT NULL
        ) AS
        SELECT CAST(id AS STRING) as id, column1, column2
        FROM `project.dataset.mytable`






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Dec 27 at 13:43









        Mikhail Berlyant

        55.5k43368




        55.5k43368

























            -1














            Thank you for your help, it works fine. But, partitioned by ingestion time tables do not work this way. I can't achieve overwrite with query like:



            CREATE OR REPLACE TABLE `project.dataset.mytable` (
            id STRING NOT NULL,
            column1 INT64 NOT NULL,
            column2 INT64 NOT NULL
            ) PARTITION BY DATE(_PARTITIONTIME) AS
            SELECT CAST(id AS STRING) as id, column1, column2
            FROM `project.dataset.mytable` where _PARTITIONTIME is not null;





            share|improve this answer























            • If you have a new question, please ask it by clicking the Ask Question button. Include a link to this question if it helps provide context. - From Review
              – iamnotmaynard
              2 days ago
















            -1














            Thank you for your help, it works fine. But, partitioned by ingestion time tables do not work this way. I can't achieve overwrite with query like:



            CREATE OR REPLACE TABLE `project.dataset.mytable` (
            id STRING NOT NULL,
            column1 INT64 NOT NULL,
            column2 INT64 NOT NULL
            ) PARTITION BY DATE(_PARTITIONTIME) AS
            SELECT CAST(id AS STRING) as id, column1, column2
            FROM `project.dataset.mytable` where _PARTITIONTIME is not null;





            share|improve this answer























            • If you have a new question, please ask it by clicking the Ask Question button. Include a link to this question if it helps provide context. - From Review
              – iamnotmaynard
              2 days ago














            -1












            -1








            -1






            Thank you for your help, it works fine. But, partitioned by ingestion time tables do not work this way. I can't achieve overwrite with query like:



            CREATE OR REPLACE TABLE `project.dataset.mytable` (
            id STRING NOT NULL,
            column1 INT64 NOT NULL,
            column2 INT64 NOT NULL
            ) PARTITION BY DATE(_PARTITIONTIME) AS
            SELECT CAST(id AS STRING) as id, column1, column2
            FROM `project.dataset.mytable` where _PARTITIONTIME is not null;





            share|improve this answer














            Thank you for your help, it works fine. But, partitioned by ingestion time tables do not work this way. I can't achieve overwrite with query like:



            CREATE OR REPLACE TABLE `project.dataset.mytable` (
            id STRING NOT NULL,
            column1 INT64 NOT NULL,
            column2 INT64 NOT NULL
            ) PARTITION BY DATE(_PARTITIONTIME) AS
            SELECT CAST(id AS STRING) as id, column1, column2
            FROM `project.dataset.mytable` where _PARTITIONTIME is not null;






            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited 2 days ago









            iamdanchiv

            2,00032028




            2,00032028










            answered 2 days ago









            Ebru Peker

            224




            224












            • If you have a new question, please ask it by clicking the Ask Question button. Include a link to this question if it helps provide context. - From Review
              – iamnotmaynard
              2 days ago


















            • If you have a new question, please ask it by clicking the Ask Question button. Include a link to this question if it helps provide context. - From Review
              – iamnotmaynard
              2 days ago
















            If you have a new question, please ask it by clicking the Ask Question button. Include a link to this question if it helps provide context. - From Review
            – iamnotmaynard
            2 days ago




            If you have a new question, please ask it by clicking the Ask Question button. Include a link to this question if it helps provide context. - From Review
            – iamnotmaynard
            2 days ago


















            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53945239%2fall-columns-have-nullable-problem-when-destination-table-with-overwrite-preferen%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Mossoró

            Error while reading .h5 file using the rhdf5 package in R

            Pushsharp Apns notification error: 'InvalidToken'