我阅读了以下文档:https : //cloud.google.com/bigquery/docs/reference/standard-sql/data-types https://cloud.google.com/bigquery/pricing#data
我知道这FLOAT是8个字节,而NUMERIC16个字节是唯一的区别吗?文档说,NUMERIC范围可以-99999999999999999999999999999.999999999为99999999999999999999999999999.999999999,但未指定的范围FLOAT。
我在 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 之类的东西?
我的输入是:
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'
我在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。
我有以下代码:
这是我的代码:
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。问题是什么?
我有以下代码:
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) 我想添加到中的查询TIMESTAMP列UTC。
我知道BigQuery具有CURRENT_TIMESTAMP()功能,但没有说明如何将其转换为UTC。
在MYSQL我会做:
SELECT UTC_TIMESTAMP()
Run Code Online (Sandbox Code Playgroud)
BigQuery中的等效项(仅适用于标准SQL)是什么?
这是我的代码:
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)
这似乎是太多的重复模式.问题是我无法找到一种方法使其更简单和紧凑.
有任何想法吗?
我已经存在设置为 Partition filter=Required
我想禁用它的表,这样我就可以在表上运行查询,而无需在WHERE.
是否有可能或者我必须创建一个新表并将数据复制到其中?