Bigquery - Сплит-функция - PullRequest
       7

Bigquery - Сплит-функция

0 голосов
/ 27 июня 2018
INSERT INTO
    "Table Name" (
    CurrentMonthlastDate, 
    MonthLastDate,
    yearmonth)
SELECT DISTINCT 
               (SELECT 
                DATE_SUB(DATE_TRUNC(DATE_ADD(CURRENT_DATE(), INTERVAL 1 MONTH), MONTH), INTERVAL 1 DAY) AS CurrentMonthlastDate),
                MonthLastDate, -- Get last day of month based on year.month
                yearmonth
                FROM
                "Table Name"

Если значение yearmonth равно 2018.04, как я могу разделить это и узнать последний день месяца? Можно ли разделить значение и вставить последний день месяца в поле «MonthLastDate» при вставке записей.

Ответы [ 3 ]

0 голосов
/ 27 июня 2018

(ВЫБЕРИТЕ DATE_SUB (DATE_TRUNC (DATE_ADD (DATE (CAST (REGEXP_EXTRACT (CAST (yearmonth AS STRING), '(. ) ...') AS INT64), CAST (REGEXP_EXTRACT (CAST (yearmonth AS STRING), '..... (. )') AS INT64), 01), ИНТЕРВАЛ 1 МЕСЯЦ), MONTH), ИНТЕРВАЛ 1 ДЕНЬ) AS MonthLastDate )

Я получил это сам. Спасибо !!

0 голосов
/ 27 июня 2018

Ниже для BigQuery Standard SQL

#standardSQL
SELECT 
  DATE_SUB(
    DATE_ADD(PARSE_DATE('%Y.%m', yearmonth), INTERVAL 1 MONTH), 
    INTERVAL 1 DAY
  ) MonthLastDate

Вы можете протестировать / поиграть с вышеперечисленными, используя ниже фиктивные данные

#standardSQL
WITH `project.dataset.table` AS (
  SELECT '2018.04' AS yearmonth  UNION ALL
  SELECT '2018.02'
)
SELECT 
  yearmonth, 
  DATE_SUB(
    DATE_ADD(PARSE_DATE('%Y.%m', yearmonth), INTERVAL 1 MONTH), 
    INTERVAL 1 DAY
  ) MonthLastDate
FROM `project.dataset.table`  

результат

Row yearmonth   MonthLastDate    
1   2018.04     2018-04-30   
2   2018.02     2018-02-28   
0 голосов
/ 27 июня 2018
#standardSQL
SELECT
  DATE_SUB(DATE_TRUNC(DATE_ADD(PARSE_DATE('%Y.%m',
          '2018.04'), INTERVAL 1 MONTH), MONTH), INTERVAL 1 DAY)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...