Ниже для стандарта BigQuery Standard SQL
#standardSQL
SELECT Date, Product, 'CostPrice' AS MetricName, CostPrice AS MetricValue
FROM `project.dataset.table` UNION ALL
SELECT Date, Product, 'SalePrice' AS MetricName, SalePrice AS MetricValue
FROM `project.dataset.table`
Вы можете протестировать, играть с помощью выше, используя фиктивные данные из вашего вопроса, как показано ниже
#standardSQL
WITH `project.dataset.table` AS (
SELECT '01/01/2018' Date, 'hat' Product, 10 CostPrice, 20 SalePrice UNION ALL
SELECT '01/01/2018', 'shoe', 5, 12 UNION ALL
SELECT '01/02/2018', 'hat', 11, 22 UNION ALL
SELECT '01/02/2018', 'shoe', 6, 13
)
SELECT Date, Product, 'CostPrice' AS MetricName, CostPrice AS MetricValue
FROM `project.dataset.table` UNION ALL
SELECT Date, Product, 'SalePrice', SalePrice
FROM `project.dataset.table`
Другой вариант, чтобы избежать использования UNION ALL (поскольку он требует некоторого избыточного кода), как показано ниже
#standardSQL
SELECT DATE, Product, MetricName, MetricValue
FROM `project.dataset.table`,
UNNEST([STRUCT<MetricName STRING, MetricValue INT64>
('CostPrice', CostPrice), ('SalePrice', SalePrice)])
Если бы вы прочитали документацию по методу RenameFile
, который вы вызываете, как вы должны начать с самого начала, но особенно если он не работает, вы должны знать, что для первого аргумента требуется полный путь к файлу в то время как второй аргумент требует только новое имя файла. Это означает, что вам нужно следующее:
My.Computer.FileSystem.RenameFile(s, My.Computer.FileSystem.GetName(s) & ".new")
Метод File.Move
требует полного пути в обоих случаях, потому что он поддерживает переименование в одной и той же папке и перемещение в другую папку. Вы говорите, что хотите использовать RenameFile
, но не удосужились заметить, как он отличается, т. Е. Он поддерживает только переименование в одной и той же папке, поэтому указание этого пути дважды бессмысленно, а разрешение указывать разные пути может вызвать проблемы. [ 115]