BigQuery Help - Как преобразовать и преобразовать в формат с плавающей точкой

Вы создаете экземпляр Клиента, но похоже, что вы не являетесь явным с создаваемым классом. Попробуйте следующее:

$client = new \GuzzleHttp\Client(['base_uri' => 'http://api.tvmaze.com/']);

$res = $client->request('GET', '/schedule?country=US&date=2014-12-01');

return $res;
1
задан GMB 18 January 2019 в 23:07
поделиться

2 ответа

Ниже приведено описание BigQuery Standard SQL.

#standardSQL
SELECT 
  DATE_FROM_UNIX_DATE(date_column_as_number_of_days_since_epoch) date_since_epoch,
  IFNULL(SAFE_CAST(Delivered_Cost AS FLOAT64), 0.0) AS Delivered_Cost,
  IFNULL(SAFE_CAST(Actual_Cost AS FLOAT64), 0.0) AS Actual_Cost
FROM `project.dataset.table`   

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

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 
    43397 AS date_column_as_number_of_days_since_epoch,  
    '123' AS Delivered_Cost,
    ' - ' AS Actual_Cost 
)
SELECT 
  DATE_FROM_UNIX_DATE(date_column_as_number_of_days_since_epoch) date_since_epoch,
  IFNULL(SAFE_CAST(Delivered_Cost AS FLOAT64), 0.0) AS Delivered_Cost,
  IFNULL(SAFE_CAST(Actual_Cost AS FLOAT64), 0.0) AS Actual_Cost
FROM `project.dataset.table`   

, с результатом как

Row date_since_epoch    Delivered_Cost  Actual_Cost  
1   2088-10-25          123.0           0.0     
[117 ] Примечание: я предполагаю, что 43379, который вы используете в качестве примера в своем вопросе, на самом деле является числом дней с начала эпохи - как это наиболее разумно с моей точки зрения - дайте нам знать, если это что-то еще, поэтому я буду скорректировать ответ соответственно

0
ответ дан Mikhail Berlyant 18 January 2019 в 23:07
поделиться
  1. Преобразовать мои столбцы даты в формат даты (в настоящее время это int64, с примером 43379)

Использовать функцию PARSE_DATE() :

PARSE_DATE(Delivered_Date, '%Y-%m-%d')

В , следующем за документом , перечислены поддерживаемые форматы.

  1. Приведите мои столбцы 'Delivered_Cost' и 'Actual_Cost' в плавающее состояние (в настоящее время это тип строки)

Ваш синтаксис с CASE() в порядке ; Вы также можете использовать ярлык FLOAT(). Однако, если ваша строка не будет успешно отображена в число с плавающей точкой (как, например, -), произойдет ошибка времени выполнения. Вы можете использовать SAFE_CAST() , чтобы игнорировать ошибку преобразования, но это также может привести к игнорированию соответствующих ошибок. Следовательно, вам лучше использовать REPLACE().

Вот ваш запрос:

SELECT
    PARSE_DATE(Delivered_Date, '%Y-%m-%d') AS Delivered_Date,
    FLOAT(REPLACE(Delivered_Cost, '-', '0')) AS Delivered_Cost,
    FLOAT(REPLACE(Actual_Cost, '-', '0')) AS Actual_Cost  
FROM MYTABLE


FLOAT(Delivered_Cost)
0
ответ дан GMB 18 January 2019 в 23:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: