使用 google 工作流执行 BigQuery 以获取 table 的最后修改时间。在工作流程中得到错误的结果,但在 BIGQUERY UI 中同样有效
Executing a BigQuery using google workflow to get last modified of a table. getting wrong results in workflow but same works fine in BIGQUERY UI
这是我的另一个 post 的延续,我的工作流程出现了问题。进一步调试后,我意识到大查询工作流中的“last_modified_time”没有显示正确的结果,但当我在大查询 UI 中执行它时同样工作正常。请参阅以下详细信息。
Google Cloud Workflow error as "Syntax error: Unclosed string literal
下面是我的工作流程代码,只是为了查看“last_modified_time”的值是多少
main:
steps:
- getupdatedatetime:
call: googleapis.bigquery.v2.jobs.query
args:
projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
body:
useLegacySql: false
query: >
SELECT
TIMESTAMP_MILLIS(last_modified_time) AS last_modified_time,
DATE(TIMESTAMP_MILLIS(creation_time)) AS creation_date,
FROM `project-dataset.__TABLES__` where table_id='table_name'
result: queryResult
- documentFound:
return: ${queryResult}
上述查询在工作流中的输出为json格式,如下
{
"cacheHit": false,
"jobComplete": true,
"jobReference": {
"jobId": "job__EmSzEzXNUAKBTebWTieYIQVNKf7",
"location": "EU",
"projectId": "project_id"
},
"kind": "bigquery#queryResponse",
"rows": [
{
"f": [
{
**"v": "1.625481329263E9"**
},
{
"v": "2021-07-05"
}
]
}
],
"schema": {
"fields": [
{
"mode": "NULLABLE",
"name": "last_modified_time",
"type": "TIMESTAMP"
},
{
"mode": "NULLABLE",
"name": "creation_date",
"type": "DATE"
}
]
},
"totalBytesProcessed": "0",
"totalRows": "1"
}
last_modified_time 不正确。 creation_date 没问题。因为 last_modified_time 在这里不好。我工作流程中的其他子工作流程无法正常工作。
当我在大查询中执行相同的查询时,得到以下结果
SELECT
TIMESTAMP_MILLIS(last_modified_time) AS last_modified_time,
DATE(TIMESTAMP_MILLIS(creation_time)) AS creation_date,
FROM `project.dataset.__TABLES__` where table_id='table_name'
任何人都可以为我做错的事情提供一些帮助和指导。
您的工作流程中的结果是正确的。时间戳是一个整数。在BQ UI中,时间戳被转换为DateTime格式。您可以根据需要将 last_modified_time
时间戳值转换为 DateTime 格式。
我使用 https://www.epochconverter.com/ 将您的时间戳结果转换为 DateTime 格式,结果如下:GMT: Monday, July 5, 2021 10:35:29.263
.
这是我的另一个 post 的延续,我的工作流程出现了问题。进一步调试后,我意识到大查询工作流中的“last_modified_time”没有显示正确的结果,但当我在大查询 UI 中执行它时同样工作正常。请参阅以下详细信息。 Google Cloud Workflow error as "Syntax error: Unclosed string literal
下面是我的工作流程代码,只是为了查看“last_modified_time”的值是多少
main:
steps:
- getupdatedatetime:
call: googleapis.bigquery.v2.jobs.query
args:
projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
body:
useLegacySql: false
query: >
SELECT
TIMESTAMP_MILLIS(last_modified_time) AS last_modified_time,
DATE(TIMESTAMP_MILLIS(creation_time)) AS creation_date,
FROM `project-dataset.__TABLES__` where table_id='table_name'
result: queryResult
- documentFound:
return: ${queryResult}
上述查询在工作流中的输出为json格式,如下
{
"cacheHit": false,
"jobComplete": true,
"jobReference": {
"jobId": "job__EmSzEzXNUAKBTebWTieYIQVNKf7",
"location": "EU",
"projectId": "project_id"
},
"kind": "bigquery#queryResponse",
"rows": [
{
"f": [
{
**"v": "1.625481329263E9"**
},
{
"v": "2021-07-05"
}
]
}
],
"schema": {
"fields": [
{
"mode": "NULLABLE",
"name": "last_modified_time",
"type": "TIMESTAMP"
},
{
"mode": "NULLABLE",
"name": "creation_date",
"type": "DATE"
}
]
},
"totalBytesProcessed": "0",
"totalRows": "1"
}
last_modified_time 不正确。 creation_date 没问题。因为 last_modified_time 在这里不好。我工作流程中的其他子工作流程无法正常工作。
当我在大查询中执行相同的查询时,得到以下结果
SELECT
TIMESTAMP_MILLIS(last_modified_time) AS last_modified_time,
DATE(TIMESTAMP_MILLIS(creation_time)) AS creation_date,
FROM `project.dataset.__TABLES__` where table_id='table_name'
任何人都可以为我做错的事情提供一些帮助和指导。
您的工作流程中的结果是正确的。时间戳是一个整数。在BQ UI中,时间戳被转换为DateTime格式。您可以根据需要将 last_modified_time
时间戳值转换为 DateTime 格式。
我使用 https://www.epochconverter.com/ 将您的时间戳结果转换为 DateTime 格式,结果如下:GMT: Monday, July 5, 2021 10:35:29.263
.