小编Lui*_*uis的帖子

BigQuery中的NUMERIC和FLOAT有什么区别?

我阅读了以下文档:https : //cloud.google.com/bigquery/docs/reference/standard-sql/data-types https://cloud.google.com/bigquery/pricing#data

我知道这FLOAT是8个字节,而NUMERIC16个字节是唯一的区别吗?文档说,NUMERIC范围可以-99999999999999999999999999999.99999999999999999999999999999999999999.999999999,但未指定的范围FLOAT

google-bigquery

6
推荐指数
3
解决办法
2564
查看次数

PARSE_DATE :解析函数 BigQuery/Standard SQL 的结果无效

我在 BigQuery(标准 SQL)中有以下代码:

SAFE_CAST (PARSE_DATE('%Y-%m-%d',JSON_EXTRACT_SCALAR(g.p_dataforanalytics,'$.birthday') ) as string)
Run Code Online (Sandbox Code Playgroud)

这失败的原因是:

解析函数的结果无效

问题是我无法控制我在g.p_dataforanalytics其中获得的数据,其中一些纯粹是垃圾,格式不正确,有时甚至不是合理的价值。有没有办法定义如果PARSE_DATE()失败,它将返回 NULL 而不是抛出查询?

基本上我正在寻找任何编程语言中的 try/catch 之类的东西?

sql google-bigquery

5
推荐指数
1
解决办法
4915
查看次数

如何使用python dict切换值和键?

我的输入是:

files = {
    'Input.txt': 'Randy',
    'Code.py': 'Stan',
    'Output.txt': 'Randy'
} 
Run Code Online (Sandbox Code Playgroud)

我希望输出为:

{'Randy':['Input.txt','Output.txt'], 'Stan':['Code.py']}
Run Code Online (Sandbox Code Playgroud)

基本上,这是此切换键和列表字典中的值的另一个方向

这是我尝试的:

dictresult= {}
for key,value in files.items():
     dictresult[key]=value
     dictresult[value].append(key)
Run Code Online (Sandbox Code Playgroud)

但这是行不通的。我懂了KeyError: 'Randy'

python

4
推荐指数
1
解决办法
184
查看次数

气流过时警告传递了无效的参数

我在Airflow 1.9上有以下代码:

import_op = MySqlToGoogleCloudStorageOperator(
    task_id='import',
    mysql_conn_id='oproduction',
    google_cloud_storage_conn_id='gcpm',
    provide_context=True,
    approx_max_file_size_bytes = 100000000, #100MB per file
    sql = 'import.sql',
    params={'next_to_import': NEXT_TO_IMPORT, 'table_name' : TABLE_NAME},
    bucket=GCS_BUCKET_ID,
    filename=file_name_orders,
    dag=dag)
Run Code Online (Sandbox Code Playgroud)

为什么产生:

/usr/local/lib/python2.7/dist-packages/airflow/models.py:2160:PendingDeprecationWarning:无效的参数已传递给MySqlToGoogleCloudStorageOperator。在Airflow 2.0中将不再支持传递此类参数。无效的参数为:* args:()** kwargs:{'provide_context':True} category = PendingDeprecationWarning

是什么问题provide_context?据我所知,它的使用是必需的params

airflow

3
推荐指数
1
解决办法
2378
查看次数

Python ValueError:保留未转换的数据:

我有以下代码:

这是我的代码:

print (start_timestamp)
start_timestamp_no_iso = datetime.strptime(start_timestamp, "%Y-%m-%dT%H:%M:%S.%f")
Run Code Online (Sandbox Code Playgroud)

这是我得到的:

INFO - 2018-11-20T14:44:03.452131
INFO - Traceback (most recent call last):
INFO - File "/home/ubuntu/script.py", line 84, in <module>
INFO - start_timestamp_no_iso = datetime.strptime(start_timestamp, "%Y-%m-%dT%H:%M:%S.%f")
INFO - File "/usr/lib/python3.6/_strptime.py", line 565, in _strptime_datetime
INFO - tt, fraction = _strptime(data_string, format)
INFO - File "/usr/lib/python3.6/_strptime.py", line 365, in _strptime
INFO - data_string[found.end():])
INFO - ValueError: unconverted data remains:
INFO - Command exited with return code 1
Run Code Online (Sandbox Code Playgroud)

我了解这意味着什么,但我不明白为什么会发生。我只是将时间戳从iso格式转换为non iso。问题是什么?

python time

3
推荐指数
1
解决办法
2639
查看次数

如何在Python中动态引用变量?

我有以下代码:

PROJECT_ID = 'test'
BQ_TABLE_NAME_CATEGORIES = 'categories'
BQ_TABLE_NAME_MANUFACTURERS = 'manufacturers'
list = [BQ_TABLE_NAME_CATEGORIES, BQ_TABLE_NAME_MANUFACTURERS]
table_categories = PROJECT_ID + '.'  + BQ_TABLE_NAME_CATEGORIES
table_manufacturers = PROJECT_ID + '.' + BQ_TABLE_NAME_MANUFACTURERS

for table in list:
    ....
    source_objects=['table_{0}'.format(table)]  #reference to the correct var
    ....
Run Code Online (Sandbox Code Playgroud)

然而,这将字符串放入其中source_objects。我希望它引用变量(无论变量中保存的是什么),这意味着我真正想要的相当于

什么时候table = BQ_TABLE_NAME_CATEGORIES

source_objects = [ table_categories ] 
Run Code Online (Sandbox Code Playgroud)

什么时候table = BQ_TABLE_NAME_MANUFACTURERS

source_objects = [ table_manufacturers ] 
Run Code Online (Sandbox Code Playgroud)

python

3
推荐指数
1
解决办法
4502
查看次数

如何从BigQuery获取UTC中的当前TIMESTAMP?

我想添加到中的查询TIMESTAMPUTC

我知道BigQuery具有CURRENT_TIMESTAMP()功能,但没有说明如何将其转换为UTC

MYSQL我会做:

SELECT UTC_TIMESTAMP()
Run Code Online (Sandbox Code Playgroud)

BigQuery中的等效项(仅适用于标准SQL)是什么?

sql google-bigquery

3
推荐指数
1
解决办法
1448
查看次数

有适当通知验证许多变量的有效方法吗?

这是我的代码:

if self.a == "":
    raise MyException("The required parameter 'a' is empty")
if self.b == "":
    raise MyException("The required parameter 'b' is empty")
if self.v == "":
    raise MyException("The required parameter 'v' is empty")
if self.g == "":
    raise MyException("The required parameter 'g' is empty")
if self.quality == "":
    raise MyException("The required parameter 'quality' is empty")
if self.abc == "":
    raise MyException("The required parameter 'abc' is empty")
Run Code Online (Sandbox Code Playgroud)

这似乎是太多的重复模式.问题是我无法找到一种方法使其更简单和紧凑.

有任何想法吗?

python

1
推荐指数
1
解决办法
36
查看次数

是否可以从 BigQuery 表中删除 Partition filter=Required 设置?

我已经存在设置为 Partition filter=Required 我想禁用它的表,这样我就可以在表上运行查询,而无需在WHERE.

是否有可能或者我必须创建一个新表并将数据复制到其中?

google-bigquery

0
推荐指数
2
解决办法
1071
查看次数

标签 统计

google-bigquery ×4

python ×4

sql ×2

airflow ×1

time ×1